Pafupifupi ntchito iliyonse yopambana yabizinesi posachedwa kapena pambuyo pake imalowa m'gawo lomwe makulitsidwe opingasa amafunikira. Nthawi zambiri, mutha kungoyambitsa zatsopano ndikuchepetsa kuchuluka kwa katundu. Koma palinso milandu yocheperako pomwe tifunika kuwonetsetsa kuti ma node osiyanasiyana amadziwana ndikugawa mosamala ntchitoyo.
Zinakhala mwayi kuti erlang, yomwe tidasankha chifukwa cha mawu ake osangalatsa komanso hype mozungulira, ili ndi kalasi yoyamba
Mauthenga odutsa pakati pa njira zosiyanasiyana, komanso pakati pa maulalo ndi zowunikira, ndi zowonekera [β¦]
Pochita, zonse zimakhala zovuta kwambiri. Zogawidwa erlang linapangidwa pamene "chotengera" chimatanthawuza bokosi lalikulu lachitsulo lotumizira, ndipo "docker" linali liwu lofanana ndi la longshoreman. MU IP4 panali maadiresi ambiri osagwiritsidwa ntchito, kusweka kwa maukonde nthawi zambiri kumayambitsidwa ndi makoswe omwe amatafuna kudzera pa chingwe, ndipo nthawi yowonjezereka ya nthawi yopangira kupanga inayesedwa zaka zambiri.
Tsopano tonse ndife odzidalira modabwitsa, timapakidwa, komanso timagawidwa erlang m'malo omwe ma adilesi osinthika a IP amaperekedwa pa mfundo yachisawawa chachikulu, ndipo node zimatha kuwoneka ndikuzimiririka pakufuna kwa chidendene chakumanzere cha wopanga. Kupewa milu ya ma boilerplate code mu polojekiti iliyonse yomwe ikugawidwa erlang, polimbana ndi malo odana nawo, chithandizo chimafunika.
ndemanga: Ndikudziwa kuti alipo libcluster
amafuna
Zomwe ndimafunikira ndekha zinali laibulale yomwe ingatenge kasamalidwe ka gululi ndipo ikhale ndi zinthu zotsatirazi:
- ntchito yowonekera ndi mndandanda wazolemba zolimba komanso zodziwika bwino kudzera mu mautumiki erlang;
- kuyimbanso kogwira ntchito pakusintha kulikonse kwa topology (node ββapo, node apa, kusakhazikika kwa netiweki, kugawanika);
- mawonekedwe owonekera poyambitsa gulu lomwe lili ndi mayina aatali komanso achidule, monga momwe zilili
:nonode@nohost
; - Thandizo la Docker kuchokera m'bokosi, osalemba nambala yachitukuko.
Zomalizazi zikutanthauza kuti nditayesa kugwiritsa ntchito kwanuko :nonode@nohost
, kapena m'malo ogawidwa mongogwiritsa ntchito test_cluster_task
docker-compose up --scale my_app=3
ndikuwona momwe imachitira maulendo atatu mu docker popanda kusintha kwa code. Ndikufunanso mapulogalamu odalira ngati mnesia
- topology ikasintha, kuseri kwazithunzi amamanganso gululo popanda kukankha kwina kulikonse kuchokera pakugwiritsa ntchito.
Wofotokozera sinalingaliridwa kukhala laibulale yokhoza kuchita chilichonse kuyambira pagulu mpaka kupanga khofi. Si chipolopolo chasiliva chomwe chimafuna kuphimba milandu yonse yomwe ingatheke, kapena kukhala yankho lathunthu pamaphunziro monga momwe akatswiri amayambira. CS kuyikidwa mu nthawi iyi. Laibulale iyi idapangidwa kuti izigwira ntchito momveka bwino, koma imagwira ntchito yake osati yayikulu kwambiri. Cholinga ichi chidzakhala kupereka kuwonekera kwathunthu pakati pa chitukuko cha m'deralo ndi malo ogawanika otanuka odzaza ndi zotengera zankhanza.
Njira yosankhidwa
Wofotokozera idapangidwa kuti iziyendetsedwa ngati pulogalamu, ngakhale ogwiritsa ntchito apamwamba amatha kugwira ntchito ndikusonkhanitsa ndikukonza gululo pamanja poyendetsa mwachindunji. Cloister.Manager
mu mtengo woyang'anira ntchito yomwe mukufuna.
Ikayendetsedwa ngati pulogalamu, laibulale imadalira config
, pomwe amawerenga mfundo zotsatirazi:
config :cloister,
otp_app: :my_app,
sentry: :"cloister.local", # or ~w|n1@foo n2@bar|a
consensus: 3, # number of nodes to consider
# the cluster is up
listener: MyApp.Listener # listener to be called when
# the ring has changed
Ma parameter ali pamwambawa akutanthauza izi: Wofotokozera amagwiritsidwa ntchito pa OTP :my_app
, amagwiritsa kupezeka kwa erlang service kulumikiza mfundo, osachepera atatu, ndi MyApp.Listener
module (kukhazikitsa @behaviour Cloister.Listener
Ndi kasinthidwe izi, ntchito Wofotokozera kudzakhala MyApp.Listener.on_state_change/2
%Cloister.Monitor{status: :up}
, kutanthauza: βMoni, tsango lasonkhanitsidwa.β
Nthawi zambiri, unsembe consensus: 3
ndizabwino chifukwa ngakhale tikuyembekeza kuti ma node ambiri alumikizane, kuyimbanso kumadutsa status: :rehashing
β status: :up
pa mfundo iliyonse yomwe yangowonjezeredwa kumene kapena kuchotsedwa.
Mukayamba mumalowedwe achitukuko, mumangofunika kukhazikitsa consensus: 1
ΠΈ Wofotokozera adzalumpha mosangalala kudikirira msonkhano wamagulu akawona :nonode@nohost
, kapena :node@host
, kapena :[email protected]
- kutengera momwe node idakhazikitsidwa (:none | :shortnames | :longnames
).
Distributed Application Management
Ntchito zogawidwa zomwe sizili mu vacuum nthawi zambiri zimakhala ndi zodalira zomwe zimagawidwa, monga mnesia
. Ndizosavuta kwa ife kuthana ndi kukonzanso kwawo kuchokera pakuyimbanso komweko on_state_change/2
. Pano, mwachitsanzo, ndikulongosola mwatsatanetsatane momwe mungakhazikitsirenso mnesia
pa ntchentche
Ubwino waukulu wogwiritsa ntchito Wofotokozera ndikuti imagwira ntchito zonse zofunika kuti amangenso tsango pambuyo pa kusintha kwa topology pansi pa hood. Ntchitoyi imangoyenda m'malo omwe adagawidwa kale, ndi ma node onse olumikizidwa, mosasamala kanthu kuti timadziwa ma adilesi a IP motero mayina a node pasadakhale, kapena apatsidwa / kusinthidwa mwamphamvu. Izi sizifuna makonda apadera a docker ndipo kuchokera pamalingaliro a wopanga mapulogalamu, palibe kusiyana pakati pa kuthamanga kumalo ogawidwa kapena kuthamanga komweko. :nonode@nohost
. Mutha kuwerenga zambiri za izi mu
Ngakhale kusintha kovutirapo kwa kusintha kwa topology kumatheka kudzera pakukhazikitsa makonda MyApp.Listener
, pakhoza kukhala nthawi zonse zomwe zili m'mphepete mwa ma laibulalewa ndi zokonda za kasinthidwe zimatsimikizira kukhala maziko a kukhazikitsa. Zili bwino, ingotengani pamwambapa libcluster
, yomwe ili ndi cholinga chambiri, kapena gwiritsani ntchito gulu lotsika nokha. Cholinga cha laibulale ya code iyi sikungofotokoza zochitika zilizonse, koma kugwiritsa ntchito zochitika zodziwika bwino popanda kupweteka kosafunikira komanso kukopa-paste.
Taonani: pa nthawi iyi pachiyambi panali mawu oti "Kusonkhana kwachimwemwe!", Ndipo Yandex, yomwe ndimamasulira (sindiyenera kudutsa m'madikishonale ndekha), inandipatsa mwayi woti "Kusonkhana kwachimwemwe!" Mwina ndizosatheka kulingalira kumasulira kwabwinoko, makamaka potengera momwe dziko lilili.
Source: www.habr.com