RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters

Kushivirira kukanganisa uye kuwanikwa kwepamusoro misoro mikuru, saka tichapa zvinyorwa zvakasiyana kuRabbitMQ neKafka. Ichi chinyorwa chiri pamusoro peRabbitMQ, uye chinotevera chiri pamusoro peKafka, mukuenzanisa neRabbitMQ. Ichi chinyorwa chakareba, saka ita kuti ugadzikane.

Ngatitarisei kukanganisa kushivirira, kuwirirana, uye kuwanikwa kwakanyanya (HA) mazano uye tradeoffs inoitwa neimwe nzira. RabbitMQ inogona kumhanya pane sumbu remanodhi - uye yobva yaiswa seyakagoverwa system. Kana zvasvika kune akagoverwa masisitimu, isu tinowanzo kutaura nezve kuenderana uye kuwanikwa.

Mafungiro aya anotsanangura maitiro anoita system kana yatadza. Network kutadza kushanda, kutadza kwesevha, hard drive kutadza, kusawanikwa kwenguva pfupi kwesevha nekuda kwekuunganidzwa kwemarara, kurasikirwa kwepaketi, kana kuderera kwetiweki. Zvese izvi zvinogona kutungamira mukurasikirwa nedata kana kukakavara. Zvinoitika kuti zvinenge zvisingabviri kuisa hurongwa huri hwose hunoenderana zvachose (hapana kurasikirwa kwemashoko, hapana mutsauko wedata) uye inowanikwa (inobvuma kuverenga uye kunyora) yezviitiko zvose zvekukundikana.

Isu tichaona kuti kuwirirana uye kuwanikwa kuri pamativi akasiyana eiyo spectrum, uye iwe unofanirwa kusarudza nzira yekukwirisa. Nhau dzakanaka ndedzekuti neRabbitMQ iyi sarudzo inogoneka. Iwe une idzi mhando dze "nerdy" levers kuti uchinje chiyero kuenda kune kuenderana kukuru kana kuwanika kukuru.

Tichabhadhara zvakanyanya kune izvo zvigadziriso zvinotungamira mukurasikirwa kwedata nekuda kwemarekodhi akasimbiswa. Pane cheni yemutoro pakati pevaparidzi, vatengesi nevatengi. Kana meseji yangoendeswa kune broker, ibasa rake kuti asarasikirwa neshoko. Kana mutengesi akabvuma kuti muparidzi atambira meseji, hatitarisiri kuti icharasika. Asi isu tichaona kuti izvi zvinogona kuitika chaizvo zvichienderana nebhuroka rako uye kumisikidzwa kwemuparidzi.

Imwe Node Resilience Primitives

Resilient Queuing/Routing

Kune marudzi maviri emitsara muRabbitMQ: yakasimba uye isingagari. Yese mitsetse inochengetwa mudura reMnesia. Mitsetse yakasimba inoshambadzirwazve panotanga node uye nekudaro kupona kunotangazve, kuparara kwehurongwa, kana kuparara kweseva (chero bedzi data ichiramba). Izvi zvinoreva kuti chero iwe uchizivisa nzira (kuchinjana) uye mutsara kuve wakagadzikana, iyo queuing / nzira yekugadzira inodzoka online.

Mitsetse yakashata uye nzira inobviswa kana node yatangwazve.

Mharidzo dzinoramba dziripo

Kungoti mutsara wakasimba hazvireve kuti mameseji ayo ese achapona node kutangazve. Mameseji chete akaiswa nemushambadzi se Sustainable (persistent). Mameseji anoramba achigadzira anowedzera mutoro pane broker, asi kana kurasikirwa kwemeseji kusingagamuchirwe, saka hapana imwe sarudzo.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 1. Sustainability matrix

Kuungana ne queue mirroring

Kuti tipone kurasikirwa kwebroker, isu tinoda redundancy. Isu tinokwanisa kusanganisa akawanda maRabbitMQ node kuita sumbu, uye tobva tawedzera kuwedzera redundancy nekudzokorora mitsetse pakati pemanodhi akawanda. Nenzira iyi, kana imwe node ikakundikana, isu hatirasikirwe nedata uye tinoramba tiripo.

Queue mirroring:

  • imwe huru mutsara (tenzi), iyo inogamuchira zvose kunyora uye kuverenga mirairo
  • chionioni chimwe kana kupfuura chinogashira mameseji ese uye metadata kubva kumutsara mukuru. Aya magirazi haapo pakukwirisa, asi chete kune redundancy.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 2. Queue mirroring

Mirroring inogadziriswa nemutemo wakakodzera. Mariri iwe unogona kusarudza iyo yekudzokorora coefficient uye kunyange node iyo iyo mutsara inofanira kunge iripo. Mienzaniso:

  • ha-mode: all
  • ha-mode: exactly, ha-params: 2 (tenzi mumwe uye girazi rimwe)
  • ha-mode: nodes, ha-params: rabbit@node1, rabbit@node2

Simbiso yemuparidzi

Kuti uwane kurekodha kunoenderana, Publisher Confirms inodiwa. Pasina ivo, pane njodzi yekurasika meseji. Simbiso inotumirwa kune muparidzi mushure mekunge meseji yanyorerwa ku diski. RabbitMQ inonyora mameseji kune diski kwete pairi pawakagamuchira, asi nguva nenguva, munharaunda yemazana akati wandei milliseconds. Kana mutsara uchiratidzwa, kubvuma kunotumirwa chete mushure mekunge magirazi ese anyorawo kopi yavo yemeseji kudhisiki. Izvi zvinoreva kuti kushandisa zvisimbiso kunowedzera latency, asi kana kuchengetedzwa kwedata kwakakosha, saka zvakakosha.

Failover queue

Kana bhuroka rasiya kana kubondera, vatungamiriri vese vemitsetse (vatenzi) pane iyo node vanoparara pamwe chete nayo. Boka racho rinobva rasarudza girazi rekare kupfuura tenzi wega wega uye rinorisimudzira satenzi mutsva.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 3. Multiple mirrored queues nemitemo yavo

Broker 3 inodzika. Ziva kuti girazi reQueue C paBroker 2 ririkusimudzirwa kuti rive nyanzvi. Uyewo cherechedza kuti girazi idzva rakagadzirirwa Queue C paBroker 1. RabbitMQ inogara ichiedza kuchengetedza chinhu chekudzokorora chinotsanangurwa mumitemo yako.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 4. Broker 3 inokundikana, zvichiita kuti mutsara C usakundikana

Iyo inotevera Broker 1 inodonha! Tasara nebroker imwe chete. Iyo Queue B girazi inosimudzirwa kuita master.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Fig. 5

Takadzorera Broker 1. Pasinei nokuti data inopona sei kurasikirwa uye kudzorerwa kwemutengesi, mameseji ose akaratidzwa mumutsara anoraswa paanotangazve. Izvi zvakakosha kucherechedza nekuti pachava nemhedzisiro. Tichatarisa zvirevo izvi munguva pfupi. Saka Broker 1 ikozvino inhengo yesumbu zvakare, uye sumbu rinoedza kutevedzera marongero uye saka rinogadzira magirazi paBroker 1.

Muchiitiko ichi, kurasikirwa kweBroker 1 kwakanga kwakazara, sezvakaita data, saka iyo isina kufananidzwa Queue B yakarasika zvachose.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 6. Broker 1 anodzokera kubasa

Broker 3 yadzoka pamhepo, saka mitsetse A naB vanodzosa magirazi akagadzirwa pairi kuti agutse maitiro avo eHA. Asi ikozvino mitsetse mikuru yese iri pane imwe node! Izvi hazvina kunaka, kugovanisa pakati pemanodhi kuri nani. Nehurombo, hapana zvakawanda zvingasarudzwa pano zvekugadzirisazve masters. Tichazodzoka kunyaya iyi gare gare nekuti tinoda kutarisa kuwiriranisa kwemitsara.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 7. Broker 3 anodzokera kubasa. Yese mitsetse mikuru pane imwe node!

Saka ikozvino iwe unofanirwa kuve neruzivo rwekuti magirazi anopa sei redundancy uye kukanganisa kushivirira. Izvi zvinogonesa kuwanikwa muchiitiko chekukundikana kwenode imwe chete uye inodzivirira kubva pakurasikirwa kwedata. Asi isu hatisati tapedza, nekuti muchokwadi zvakanyanya kuoma.

Sync

Paunenge uchigadzira girazi nyowani, mameseji ese matsva anogara achidzokororwa kune ichi girazi uye chero mamwe. Kana iri iyo data iripo mumutsara watenzi, tinogona kuidzokorora kune girazi idzva, rinova kopi yakakwana yetenzi. Isu tinogona zvakare kusarudza kusadzokorora mameseji aripo uye kurega mutsara mukuru uye girazi idzva richichinja munguva, ine mameseji matsva anosvika kumuswe uye mameseji aripo achisiya musoro wemutsara mukuru.

Uku kuwiriranisa kunoitwa otomatiki kana nemaoko uye kunotungamirwa uchishandisa mutemo wemutsetse. Ngatitarisei muenzaniso.

Tine mitsetse miviri ine magirazi. Mutsetse A unowiriraniswa otomatiki, uye Mutsetse B unowiriraniswa nemaoko. Mitsetse yese ine mameseji gumi.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 8. Mitsetse miviri ine nzira dzakasiyana dzekuyananisa

Iye zvino tave kurasikirwa neBroker 3.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 9. Broker 3 yakadonha

Broker 3 anodzokera kubasa. Iyo cluster inogadzira girazi remutsetse wega wega pane itsva node uye inowiriranisa otomatiki iyo itsva Queue A natenzi. Nekudaro, girazi reiyo Queue B nyowani rinoramba risina chinhu. Nenzira iyi isu tine yakazara redundancy paQueue A uye girazi rimwe chete reiyo iripo Queue B mameseji.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 10. Girazi idzva reMutsara A rinogamuchira mameseji ese aripo, asi girazi idzva reQueue B harigamuchire.

Mamwe mameseji gumi anosvika mumitsetse miviri. Broker 2 inobva yaputsika uye Queue A inotenderera ichidzokera kugirazi rekare, iro riri paBroker 1. Hapana kurasikirwa kwedata kana yakundikana. Mumutsara B, mune mameseji makumi maviri mune tenzi uye gumi chete mugirazi nekuti mutsetse uyu hauna kumbobvira wadzokorora mameseji gumi ekutanga.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 11. Mutsara A unodzokera kuBroker 1 pasina kurasikirwa nemeseji

Mamwe mameseji gumi anosvika mumitsetse miviri. Ikozvino Broker 1 yaparara. Mutsara A unochinja nyore kuenda pagirazi pasina kurasikirwa nemeseji. Nekudaro, Queue B ine matambudziko. Panguva ino tinokwanisa kukwidziridza kana kuwanikwa kana kuenderana.

Kana tichida kukwidziridza kuwanikwa, ipapo mutemo ha-kukurudzira-pa-kutadza inofanira kuiswa mukati nguva dzose. Uku ndiko kukosha kwakasarudzika, saka haugone kutsanangura iyo policy zvachose. Muchiitiko ichi, isu tiri kubvumira kutadza mumagirazi asina kuwiriraniswa. Izvi zvichaita kuti mameseji arasikike, asi mutsara ucharamba uchiverengwa uye uchinyorwa.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 12. Mutsara A unotenderedzwa kuBroker 3 pasina kurasikirwa nemeseji. Mutsara B unodzokera kuBroker 3 uine mameseji gumi akarasika

Tinogonawo kuisa ha-promote-on-failure muchirevo when-synced. Muchiitiko ichi, pachinzvimbo chekudzokera kugirazi, mutsara uchamirira kusvika Broker 1 ine data yayo ichidzokera kuInternet mode. Mushure mekunge yadzoka, mutsara mukuru wadzoka paBroker 1 pasina kurasikirwa kwedata. Kuwanikwa kunobayirwa kuchengetedza data. Asi iyi inzira ine ngozi iyo inogona kutotungamira mukurasikirwa kwedata, iyo yatichatarisa munguva pfupi.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 13. Mutsara B unoramba usipo mushure mekurasikirwa neBroker 1

Unogona kubvunza, "Zviri nani kusamboshandisa otomatiki kuwiriranisa?" Mhinduro ndeyokuti kuwiriranisa ibasa rinovharira. Panguva yekuwiriranisa, mutsara mukuru haugone kuita chero kuverenga kana kunyora mashandiro!

Ngatitarisei muenzaniso. Iye zvino tine mitsetse yakareba zvikuru. Vanogona sei kukura kusvika paukuru hwakadaro? Nezvikonzero zvakawanda:

  • Mitsetse haishandiswe
  • Iyi mitsetse inomhanya zvakanyanya, uye izvozvi vatengi vari kunonoka
  • Iyo mitsetse inomhanya-mhanya, kwave nedambudziko uye vatengi vari kubata

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 14. Mitsetse miviri mikuru ine nzira dzakasiyana dzekuyananisa

Iye zvino Broker 3 inodonha.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 15. Broker 3 inowira, ichisiya imwe tenzi uye girazi mumutsetse wega wega

Broker 3 inodzoka pamhepo uye magirazi matsva anogadzirwa. Main Queue A inotanga kudzokorora mameseji aripo pagirazi nyowani, uye panguva ino Mutsetse haupo. Zvinotora maawa maviri kudzokorora data, zvichikonzera maawa maviri ekuzorora kweiyo Queue!

Nekudaro, Mutsetse B unoramba uripo mukati menguva yese. Akasiya zvimwe zvakawandisa kuti zviwanikwe.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 16. Mutsetse unoramba usipo panguva yekubatanidza

Mushure memaawa maviri, Mutsara A unowanikwawo uye unogona kutanga kugamuchira kuverenga nekunyora zvakare.

Zveshuwa

Aya maitiro ekuvharisa panguva yekubatanidza anoita kuti zviome kugadzirisa masumbu ane mitsetse mikuru kwazvo. Pane imwe nguva, iyo master node inoda kutangwazve, zvinoreva kuti kana kuchinjira kuchionioni kana kudzima mutsara apo sevha iri kukwidziridzwa. Kana tikasarudza kushandura, tinorasikirwa nemeseji kana magirazi asina kuwiriraniswa. Nekumisikidza, panguva yekubuda kwebroker, kufoira kune isina kuwiriraniswa girazi hakuitwe. Izvi zvinoreva kuti kana bhuroka achingodzoka, isu hatirasikirwe chero meseji, kukuvara chete kwaive mutsara wakareruka. Mitemo yemaitiro kana broker abviswa inoiswa nepolicy ha-promote-on-shutdown. Iwe unogona kuseta imwe yemhando mbiri:

  • always= shanduko kune isina kuwiriraniswa magirazi inogoneswa
  • when-synced= shanduko kuenda kugirazi rakawiriraniswa chete, zvikasadaro mutsara unova usingaverengeki uye usinganyorwi. Mutsara unodzokera kubasa nekukurumidza kana broker adzoka

Imwe nzira kana imwe, ine mitsetse mikuru iwe unofanirwa kusarudza pakati pekurasikirwa nedata uye kusawanikwa.

Kana Kuwanikwa Kunovandudza Dhata Chengetedzo

Pane imwezve dambudziko rekufunga usati waita sarudzo. Nepo otomatiki kuwiriranisa kuri nani kune redundancy, inobata sei kuchengetedzeka kwedata? Ehe, neredundancy iri nani, RabbitMQ haina mukana wekurasikirwa nemeseji iripo, asi zvakadini nemeseji mitsva kubva kune vaparidzi?

Pano iwe unofanirwa kutarisa zvinotevera:

  • Muparidzi anogona kungodzosa chikanganiso oita kuti sevhisi yekumusoro kana mushandisi aedze zvakare gare gare?
  • Ko muparidzi anogona kuchengetedza meseji munharaunda kana mudhatabhesi kuti uedze zvakare gare gare?

Kana muparidzi achingogona kurasa meseji, saka kutaura zvazviri, kuvandudza kuwanikwa kunovandudza kuchengetedzwa kwedata.

Nokudaro, kuenzanisa kunofanira kutsvakwa, uye mhinduro inobva pane chaiyo mamiriro ezvinhu.

Matambudziko ne ha-promote-on-falure=pa-synced

Idea ha-kukurudzira-pa-kutadza= when-synced ndeyekuti isu tinodzivirira kuchinjika kune isina kuwiriraniswa girazi uye nekudaro kudzivirira kurasikirwa kwedata. Mutsara unoramba usingaverengeki kana kunyorwa. Pane kudaro, isu tinoedza kudzoreredza broker yakapwanyika ine data rayo kuitira kuti itangezve kushanda satenzi pasina kurasikirwa nedata.

Asi (uye ichi chikuru asi) kana mutengesi akarasikirwa nedheta rake, saka tine dambudziko guru: mutsara wakarasika! Data yese yapera! Kunyangwe uine magirazi anonyanya kubata mutsara mukuru, iwo magirazi anoraswa zvakare.

Kuti uwedzerezve node ine zita rimwe chete, isu tinoudza sumbu kuti rikanganwe node yakarasika (nemurairo rabbitmqctl forget_cluster_node) uye tanga mutengesi mutsva ane zita rimwechete remuenzi. Kunyange zvazvo boka racho richiyeuka node yakarasika, inoyeuka mutsara wekare uye magirazi asina kuwirirana. Kana boka ranzi kanganwa nzvimbo yenherera, mutsara iwoyo unokanganwa zvakare. Zvino tinofanira kuzvizivisa zvakare. Takarasikirwa nedata rese, kunyangwe taive nemagirazi ane chikamu che data. Zvingave zviri nani kushandura kune isina-synchronized girazi!

Naizvozvo, kuwiriranisa kwemanyorero (uye kutadza kuwiriranisa) musanganiswa ne ha-promote-on-failure=when-synced, semaonero angu, zvine ngozi. Mapepa anoti sarudzo iyi iripo yekuchengetedza data, asi banga rine mativi maviri.

Master rebalancing

Sezvakavimbiswa, tinodzokera kune dambudziko rekuunganidzwa kwevatenzi vose pane imwe kana node dzakawanda. Izvi zvinogona kuitika semhedzisiro ye rolling cluster update. Mune matatu-node cluster, ese master queues achaungana pane imwe kana mbiri node.

Rebalancing masters inogona kunetsa nekuda kwezvikonzero zviviri:

  • Iko hakuna maturusi akanaka ekuita rebalancing
  • Mutsara kuwiriranisa

Pane wechitatu bato rebalancing pfekera, iyo isingatsigirwi zviri pamutemo. Nezve wechitatu bato plugins mune RabbitMQ bhuku akadaro: "Plugin inopa mamwe maturusi ekumisikidza uye maturusi ekuzivisa, asi haitsigirwe kana kusimbiswa nechikwata cheRabbitMQ. Shandisa panjodzi yako."

Pane humwe hunyengeri hwekufambisa mutsara mukuru kuburikidza neHA mitemo. Bhuku rinotaura script nokuda kweizvi. Inoshanda seizvi:

  • Inobvisa magirazi ese uchishandisa mutemo wenguva pfupi une chinzvimbo chepamusoro pane chiripo HA mutemo.
  • Inoshandura iyo yechinguva HA mutemo kushandisa node modhi, ichitsanangura node iyo iyo master queue inofanira kuendeswa.
  • Inowiriranisa mutsara wekutama.
  • Kana kutama kwapera, bvisa mutemo wenguva pfupi. Iyo yekutanga HA mutemo inobata uye inodiwa nhamba yemirazi inogadzirwa.

Izvo zvakaderera ndezvekuti nzira iyi inogona kusashanda kana uine mitsetse mikuru kana kuomarara kunodiwa kudiwa.

Zvino ngationei kuti RabbitMQ masumbu anoshanda sei netiweki partitions.

Kurasikirwa kwekubatana

Manodhi ehurongwa hwakagoverwa akabatanidzwa netiweki links, uye network zvinongedzo zvinogona uye zvichabviswa. Kuwanda kwekudzima kunoenderana nenzvimbo yenzvimbo kana kuvimbika kwegore rakasarudzwa. Chero zvazvingaitika, masisitimu akagoverwa anofanirwa kugona kurarama nawo. Zvakare isu tine sarudzo pakati pekuwanikwa uye kuenderana, uye zvakare nhau dzakanaka ndedzekuti RabbitMQ inopa zvese sarudzo (kwete kwete panguva imwe chete).

NeRabbitMQ tine sarudzo mbiri huru:

  • Bvumira kupatsanurwa zvine musoro (kupatsanurwa-uropi). Izvi zvinovimbisa kuwanikwa, asi zvinogona kukonzera kurasikirwa kwedata.
  • Dzima kupatsanurwa zvine musoro. Inogona kukonzera kurasikirwa kwekuwanikwa kwenguva pfupi zvichienderana nekuti vatengi vanobatana sei kune cluster. Zvinogonawo kutungamira mukusavapo kwakakwana mune maviri-node cluster.

Asi chii chinonzi kuparadzana kune musoro? Apa ndipo apo chisumbu chinotsemuka nepakati nekuda kwekurasikirwa netiweki yekubatanidza. Parutivi rumwe norumwe, magirazi anosimudzirwa kuva tenzi, kuitira kuti pakupedzisira pave nevatenzi vakawanda pamutsara.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 17. Mutsara mukuru uye magirazi maviri, imwe neimwe pane imwe node. Ipapo kutadza kwetiweki kunoitika uye girazi rimwe rinobva ravharwa. Iyo yakaparadzaniswa node inoona kuti mamwe maviri akadonha uye anosimudzira magirazi ayo kuna tenzi. Tava nemitsara mikuru miviri, inonyorwa uye inoverengwa.

Kana vaparidzi vakatumira data kune vese masters, tinopedzisira tave nemakopi maviri akasiyana emutsetse.

Nzira dzakasiyana dzeRabbitMQ dzinopa kuwanikwa kana kuenderana.

Rega maitiro (default)

Iyi modhi inovimbisa kuwanikwa. Mushure mekurasikirwa kwekubatanidza, kupatsanurwa kunonzwisisika kunoitika. Mushure mekubatanidza kwadzoreredzwa, maneja anofanira kusarudza kuti ndeipi chikamu chekuisa pamberi. Rutivi rwakarasika ruchatangwazve uye data rese rakaunganidzwa padivi iro richarasika.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 18. Vaparidzi vatatu vanobatanidzwa nevatengesi vatatu. Mukati, iyo cluster nzira zvikumbiro zvese kumutsara mukuru paBroker 2.

Iye zvino tiri kurasikirwa neBroker 3. Anoona kuti mamwe mabroker adonha uye anosimudzira girazi rake kuna tenzi. Iyi ndiyo nzira iyo kupatsanurwa kunonzwisisika kunoitika.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 19. Kuparadzana kunonzwisisika (kutsemuka-uropi). Zvinyorwa zvinopinda mumitsetse miviri mikuru, uye makopi maviri anosiyana.

Kubatana kunodzoreredzwa, asi kupatsanurwa kunonzwisisika kunosara. Mutungamiri anofanira kusarudza nemaoko divi rinorasika. Muchiitiko chiri pasi apa, mutungamiri anotangazve Broker 3. Mameseji ese aasina kukwanisa kuendesa akarasika.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 20. Mutungamiri anodzima Broker 3.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 21. Mutungamiri anotanga Broker 3 uye inopinda musumbu, kurasikirwa nemashoko ose akanga asara ipapo.

Munguva yekurasikirwa kwekubatanidza uye mushure mekudzorerwa kwayo, sumbu uye iyi mutsara yaive iripo yekuverenga nekunyora.

Autoheal mode

Inoshanda zvakafanana neIgnore modhi, kunze kwekuti iyo cluster pachayo inosarudza iyo inorasika divi mushure mekupatsanura uye kudzoreredza kubatana. Rutivi rwakarasika runodzokera kuchikwata chisina chinhu, uye mutsara unorasikirwa nemeseji dzese dzakatumirwa kudivi iro chete.

Imbomira Mashoma Modhi

Kana isu tisingadi kutendera kupatsanurwa zvine musoro, saka sarudzo yedu chete ndeyekurasa kuverenga nekunyora padivi diki mushure mechikamu che cluster. Kana bhuroka achiona kuti iri parutivi diki, inomisa basa, ndiko kuti, inovhara zvese zviripo uye inoramba chero mitsva. Kamwe pasekondi inotarisa kudzoreredzwa kwekubatanidza. Kana kubatana kwadzoreredzwa, kunotangazve kushanda uye kujoinha cluster.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 22. Vaparidzi vatatu vanobatanidzwa nevatengesi vatatu. Mukati, iyo cluster nzira zvikumbiro zvese kumutsara mukuru paBroker 2.

Mabhuroka 1 uye 2 anobva apatsanurwa kubva kuBroker 3. Panzvimbo pekusimudzira girazi ravo kuti rive tenzi, Broker 3 inomisa uye inova isingawanikwe.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 23. Broker 3 inomira, inobvisa vese vatengi, uye inoramba zvikumbiro zvekubatanidza.

Kana kubatanidzwa kwadzorerwa, kunodzokera kune cluster.

Ngatitarisei mumwe muenzaniso apo mutsara mukuru uri paBroker 3.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 24. Mutsetse mukuru paBroker 3.

Ipapo kurasikirwa kwakafanana kwekubatanidza kunoitika. Broker 3 inomira nekuti iri kudivi diki. Kune rumwe rutivi, node dzinoona kuti Broker 3 yadonha, saka girazi rekare kubva kuBrokers 1 uye 2 rinosimudzirwa kuti rive nyanzvi.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 25. Kuchinja kune Broker 2 kana Broker 3 isipo.

Kana kubatana kwadzoreredzwa, Broker 3 ichabatana nesumbu.

RabbitMQ vs Kafka: Mhosva Kushivirira uye Kuwanikwa Kwepamusoro muClusters
Mupunga. 26. Iyo cluster yakadzokera kune yakajairika kushanda.

Chinhu chakakosha kunzwisisa pano ndechekuti isu tinowana kuenderana, asi isu tinogona zvakare kuwana kuwanikwa, kana Tichabudirira kuendesa vatengi kune mazhinji echikamu. Kune akawanda mamiriro, ini pachangu ndaizosarudza iyo Pause Minority modhi, asi zvinoenderana nechero nyaya.

Kuti uve nechokwadi chekuwanikwa, zvakakosha kuve nechokwadi chekuti vatengi vanobudirira kubatana kune mugamuchiri. Ngatitarisei sarudzo dzedu.

Kuve nechokwadi cheMutengi Kubatana

Isu tine sarudzo dzinoverengeka dzenzira yekutungamira vatengi kune chikamu chikuru chesumbu kana kune inoshanda node (mushure meimwe node yakundikana) mushure mekurasikirwa kwekubatanidza. Chekutanga, ngatiyeukei kuti mutsara wakasarudzika unotambirwa pane imwe node, asi nzira uye marongero anodzokororwa munzvimbo dzese. Vatengi vanogona kubatana kune chero node, uye nzira yemukati inovatungamira kwavanoda kuenda. Asi kana node ikamiswa, inoramba kubatana, saka vatengi vanofanirwa kubatana kune imwe node. Kana node ikadonha, pane zvishoma zvaanogona kuita zvachose.

Sarudzo dzedu:

  • Iro cluster rinosvikirwa uchishandisa chiyero chemutoro chinongotenderera nemanodhi uye vatengi vanoedza kubatanidza kusvika vabudirira. Kana node iri pasi kana kumiswa, saka kuedza kubatana kune iyo node kuchatadza, asi kuyedza kunotevera kunoenda kune mamwe maseva (mufashoni-robin). Izvi zvakafanirwa nekurasikirwa kwenguva pfupi kwekubatanidza kana sevha yakaderedzwa iyo ichakurumidza kudzoserwa kumusoro.
  • Svika iyo cluster kuburikidza nemuyero wemuyero uye bvisa yakamiswa/yakakundikana node kubva pane iyo rondedzero pavanenge vangoonekwa. Kana tikaita izvi nekukasira, uye kana vatengi vakakwanisa kuyedza zvakare kubatana, saka isu tichawana kuwanikwa nguva dzose.
  • Ipa mutengi wega wega runyorwa rwese manode, uye mutengi anongosarudza imwe yadzo kana achibatanidza. Kana ikagamuchira chikanganiso paunenge uchiedza kubatanidza, inoenda kune inotevera node mune rondedzero kusvika yabatana.
  • Bvisa traffic kubva kune yakakundikana / yakamiswa node uchishandisa DNS. Izvi zvinoitwa uchishandisa diki TTL.

zvakawanikwa

RabbitMQ clustering ine zvayakanakira nezvayakaipira. Izvo zvakanyanya kukanganisa ndezvekuti:

  • kana uchibatanidza sumbu, node dzinorasa data yavo;
  • kuvhara kuwiriranisa kunoita kuti mutsara usavepo.

Sarudzo dzese dzakaoma dzinobva pazviviri izvi zvekuvaka. Kana RabbitMQ yaigona kuchengetedza data kana cluster yabatanidzwazve, ipapo kuwiriranisa kwaizokurumidza. Dai yaikwanisa kusavharisa kuwiriranisa, yaizotsigira zvirinani mitsetse mikuru. Kugadzirisa nyaya mbiri idzi kwaizovandudza zvakanyanya mashandiro eRabbitMQ senge inoshivirira kukanganisa uye inowanikwa zvakanyanya meseji tekinoroji. Ndingazengurira kukurudzira RabbitMQ nekubatanidza mune anotevera mamiriro:

  • Network isina kuvimbika.
  • Kusavimbika kuchengetedza.
  • Mitsetse yakareba kwazvo.

Kana zvasvika kune yakakwirira kuwanikwa marongero, funga zvinotevera:

  • ha-promote-on-failure=always
  • ha-sync-mode=manual
  • cluster_partition_handling=ignore (kana autoheal)
  • mameseji anorambira
  • chengetedza vatengi vanobatana kune inoshanda node kana imwe node yatadza

Kuti uwirirane (chengetedzo yedata), funga nezvezvirongwa zvinotevera:

  • Muparidzi Anosimbisa uye Manual Acknowledgments kudivi revatengi
  • ha-promote-on-failure=when-synced, kana vaparidzi vanogona kuedza zvakare gare gare uye kana iwe uine chengetedzo yakavimbika! Zvikasadaro isa =always.
  • ha-sync-mode=automatic (asi kune mitsetse mikuru isingaite yemanyorero modhi inogona kudiwa; fungawo kana kusawanikwa kuchizokonzera kuti mameseji arasikike)
  • Imbomira Mishoma modhi
  • mameseji anorambira

Hatisati tabata nyaya dzese dzekushivirira kukanganisa uye kuwanikwa kwakanyanya; semuenzaniso, maitiro ekuita manejimendi zvakachengeteka (senge rolling updates). Isu tinoda zvakare kutaura nezve mubatanidzwa uye iyo Shovel plugin.

Kana pane chimwe chinhu chandapotsa, ndapota ndizivisei.

Onawo zvangu post, kwandinoita mhirizhonga pachikwata cheRabbitMQ ndichishandisa Docker uye Blockade kuyedza mamwe mamiriro ekurasikirwa meseji anotsanangurwa muchinyorwa chino.

Zvakapfuura munhevedzano:
Nhamba 1 - habr.com/ru/company/itsuma/blog/416629
Nhamba 2 - habr.com/ru/company/itsuma/blog/418389
Nhamba 3 - habr.com/ru/company/itsuma/blog/437446

Source: www.habr.com

Voeg