I-Cloister β†’ ukuphathwa kweqoqo le-OTP okulula

Cishe zonke izicelo zebhizinisi eziphumelelayo ngokushesha noma kamuva zingena esigabeni lapho kudingeka khona ukukala okuvundlile. Ezimweni eziningi, ungavele uqale isibonelo esisha futhi wehlise isilinganiso somthwalo. Kodwa futhi kukhona amacala amancane lapho kudingeka siqinisekise ukuthi ama-node ahlukene ayazana futhi asabalalisa ngokucophelela umthwalo womsebenzi.

I-Cloister β†’ ukuphathwa kweqoqo le-OTP okulula

Kwavela inhlanhla ukuthi erlang, esiyikhethele i-syntax yayo emnandi ne-hype ezungezile, inesigaba sokuqala ukwesekwa kwamasistimu asabalalisiwe. Ngokombono, lokhu kuzwakala kungenangqondo ngokuphelele:

Umlayezo odlula phakathi kwezinqubo kuma-node ahlukene, kanye naphakathi kwezixhumanisi nabaqaphi, usobala […]

Ngokwenza, konke kuyinkimbinkimbi kancane. Kusatshalaliswe erlang yathuthukiswa lapho "isitsha" sisho ibhokisi lensimbi elikhulu lokuthutha, futhi elithi "docker" lalimane liyigama elifanayo le-longshoreman. IN IP4 kwakukhona amakheli amaningi angahlali muntu, ukunqamuka kwenethiwekhi ngokuvamile kwakubangelwa amagundane ahlafuna ngekhebula, futhi isilinganiso sesikhathi sokuphumula sohlelo lokukhiqiza sasilinganiswa emashumini eminyaka.

Manje sonke sesizimele ngokumangalisayo, sipakishiwe, futhi siyasebenza sisabalalisiwe erlang endaweni lapho amakheli e-IP ashintshayo anikezwa khona ngomgomo wokungahleliwe okukhulu, futhi amanodi angavela futhi anyamalale ngokuthanda kwesithende sangakwesokunxele somhleli. Ukuze ugweme izinqwaba zekhodi ye-boilerplate kuwo wonke amaphrojekthi asebenzisa isabalalisiwe erlang, ukulwa nemvelo enobutha, usizo luyadingeka.

Ukubhala: Ngiyazi ukuthi ukhona libcluster. Kupholile ngempela, inezinkanyezi ezingaphezu kwenkulungwane, umbhali udumile emphakathini, nakho konke lokho. Uma izindlela ezinikezwa yile phakheji zokudala nokugcina iqoqo zanele kuwe, ngiyajabula ngawe. Ngeshwa, ngidinga okwengeziwe. Ngifuna ukulawula ukusetha ngokuningiliziwe futhi ngingabi yisibukeli sangaphandle kokuthiyetha yokuhlelwa kabusha kweqoqo.

izidingo

Engangikudinga mathupha kwakuwumtapo wolwazi ozothatha izintambo zokuphatha iqoqo futhi ozoba nezinto ezilandelayo:

  • umsebenzi osobala ngakho kokubili uhlu olunamakhodi aqinile lwamanodi nokutholwa okuguquguqukayo ngamasevisi erlang;
  • Ukubuyela emuva okusebenza ngokugcwele kulo lonke ushintsho lwe-topology (i-node lapho, indawo lapha, ukungazinzi kwenethiwekhi, ukuhlukana);
  • isixhumi esibonakalayo esisobala sokwethula iqoqo elinamagama amade namafushane, njengawo :nonode@nohost;
  • Ukusekelwa kwe-Docker ngaphandle kwebhokisi, ngaphandle kokubhala ikhodi yengqalasizinda.

Okwakamuva kusho ukuthi ngemuva kokuhlola uhlelo lokusebenza endaweni :nonode@nohost, noma endaweni esatshalaliswe ngokwenziwa kusetshenziswa test_cluster_task, ngifuna nje ukugijima docker-compose up --scale my_app=3 futhi ubone ukuthi yenza kanjani izimo ezintathu ku-docker ngaphandle kokushintshwa kwekhodi. Ngifuna nezinhlelo zokusebenza ezincikile njenge mnesia - uma i-topology ishintsha, ngemuva kwenkundla bakha kabusha iqoqo bukhoma ngaphandle kokukhahlela okwengeziwe okuvela kuhlelo lokusebenza.

I-Cloister wawungahloselwe ukuba umtapo okwazi ukwenza yonke into kusukela ekusekeleni iqoqo kuye ekwenzeni ikhofi. Akuyona inhlamvu yesiliva ehlose ukumboza zonke izimo ezingaba khona, noma kube yisixazululo esiphelele ngokwemfundo ngendlela ososayensi abasuka kuyo. CS ifakwe kuleli gama. Lo mtapo wezincwadi uklanyelwe ukufeza injongo ecace kakhulu, kodwa wenze umsebenzi wawo ongemkhulu kakhulu ngendlela efanele. Lo mgomo kuzoba ukuhlinzeka ngokusobala okuphelele phakathi kwendawo yokuthuthukiswa kwendawo kanye nendawo enwebekayo esabalalisiwe egcwele iziqukathi ezinobutha.

Indlela ekhethiwe

I-Cloister ihloselwe ukusebenza njengohlelo lokusebenza, nakuba abasebenzisi abathuthukile bangasebenza ngokuhlanganisa nokugcinwa kweqoqo mathupha ngokusebenza ngokuqondile. Cloister.Manager esihlahleni somphathi wohlelo oluqondiwe.

Uma isetshenziswa njengohlelo lokusebenza, umtapo wezincwadi uthembele kuwo config, lapho ifunda khona amanani ayisisekelo alandelayo:

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

Amapharamitha angenhla asho lokhu okulandelayo: I-Cloister isetshenziselwa uhlelo lwe-OTP :my_app, isebenzisa ukutholwa kwe-erlang service ukuxhuma amanodi, okungenani amathathu, kanye MyApp.Listener module (ukusebenzisa @behaviour Cloister.Listener) ilungiselelwe ukuthola izaziso mayelana nezinguquko ze-topology. Incazelo enemininingwane yokucushwa okuphelele ingatholakala ku imibhalo.

Nalokhu ukucushwa, isicelo I-Cloister kuyoba kwethulwa ngezigaba, ukubambezeleka kwenqubo yokuqala isicelo esiyinhloko kuze kufinyelele ukuvumelana (ama-node amathathu axhunyiwe futhi axhunyiwe, njengesibonelo esingenhla.) Lokhu kunikeza isicelo esiyinhloko ithuba lokucabanga ukuthi lapho iqala, iqoqo selivele likhona. Noma nini lapho i-topology ishintsha (kuzoba eziningi zazo, ngenxa yokuthi ama-node awaqali ngokuhambisana ngokuphelele), isibambi sizobizwa. MyApp.Listener.on_state_change/2. Isikhathi esiningi senza isenzo lapho sithola umlayezo wesimo %Cloister.Monitor{status: :up}, okusho ukuthi: β€œSawubona, iqoqo lihlangene.”

Ezimweni eziningi, ukufakwa consensus: 3 kulungile ngoba noma silindele amanodi amaningi ukuthi axhumeke, ukuphinda ushayele kuzodlula status: :rehashing β†’ status: :up kunoma iyiphi i-node esanda kufakwa noma ekhishiwe.

Uma uqala kumodi yokuthuthukisa, udinga nje ukusetha consensus: 1 ΠΈ I-Cloister uzokweqa ngenjabulo ukulinda ukuhlanganiswa kweqoqo lapho ebona :nonode@nohost, noma :node@host, noma :[email protected] - kuye ngokuthi i-node yakhiwe kanjani (:none | :shortnames | :longnames).

Ukuphathwa Kwesicelo Esisabalalisiwe

Izinhlelo zokusebenza ezisabalalisiwe ezingekho esikhaleni ngokuvamile zihlanganisa okuncikile okusabalalisiwe, njengalokhu mnesia. Kulula ngathi ukuthi siphathe ukulungiselelwa kabusha kwabo kusukela ekushayeleni emuva okufanayo on_state_change/2. Nansi, isibonelo, incazelo eningiliziwe yendlela yokulungisa kabusha mnesia endizeni phakathi imibhalo I-Cloister.

Inzuzo eyinhloko yokusebenzisa I-Cloister ukuthi lenza yonke imisebenzi edingekayo ukuze kwakhiwe kabusha iqoqo ngemva koshintsho lwe-topology ngaphansi kwesigqoko. Uhlelo lokusebenza lusebenza nje endaweni esabalalisiwe esesilungisiwe, nawo wonke ama-node axhunyiwe, kungakhathaliseki ukuthi siyawazi amakheli e-IP ngakho-ke amagama e-node kusengaphambili, noma anikezwe/ashintshiwe. Lokhu akudingi nhlobo izilungiselelo ezikhethekile zokumisa idokha futhi ngokombono womthuthukisi wohlelo lokusebenza, awukho umehluko phakathi kokusebenza endaweni esabalalisiwe noma ukusebenza endaweni. :nonode@nohost. Ungafunda kabanzi ngalokhu ku imibhalo.

Nakuba ukuphathwa okuyinkimbinkimbi kwezinguquko ze-topology kungenzeka ngokusebenzisa ukuqaliswa ngokwezifiso MyApp.Listener, kungase kuhlale kunezimo lapho le mikhawulo yelabhulali kanye nokuchema kokucushwa kuba yisisekelo sokusebenzisa. Kulungile, vele uthathe okungenhla libcluster, okuyinhloso evamile, noma uzibambele ngokwakho iqoqo lezinga eliphansi. Umgomo walo mtapo wezincwadi wekhodi awukona ukuhlanganisa zonke izimo ezingaba khona, kodwa ukusebenzisa isimo esivame kakhulu ngaphandle kobuhlungu obungadingekile kanye ne-copy-paste enzima.

Qaphela: kuleli qophelo koqobo bekukhona umusho othi β€œHappy clustering!”, kanye neYandex, engihumusha ngayo (akudingeki ngidlule kwizichazamazwi ngokwami), inginikeze inketho β€œUkuhlanganisa okujabulisayo!” Mhlawumbe akunakwenzeka ukucabanga ukuhumusha okungcono, ikakhulukazi uma kubhekwa isimo samanje se-geopolitical.

Source: www.habr.com

Engeza amazwana