RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari

Haƙuri na kuskure da babban samuwa manyan batutuwa ne, don haka za mu keɓe labarai daban-daban zuwa RabbitMQ da Kafka. Wannan labarin yana game da RabbitMQ, kuma na gaba shine game da Kafka, idan aka kwatanta da RabbitMQ. Wannan labari ne mai tsawo, don haka ku kwantar da hankalin ku.

Bari mu dubi juriya na kuskure, daidaito, da manyan wadatuwar dabarun (HA) da cinikin da kowace dabara ke yi. RabbitMQ na iya gudana akan gungu na nodes - sannan kuma ana rarraba shi azaman tsarin rarrabawa. Lokacin da yazo ga tsarin rarrabawa, sau da yawa muna magana game da daidaito da samuwa.

Waɗannan ra'ayoyin suna bayyana yadda tsarin ke aiki idan ya gaza. Rashin haɗin hanyar sadarwa, gazawar uwar garken, gazawar rumbun kwamfutarka, rashin samuwa na uwar garken wucin gadi saboda tarin shara, asarar fakiti, ko ragewar haɗin yanar gizo. Duk wannan na iya haifar da asarar bayanai ko rikice-rikice. Ya bayyana cewa yana da kusan ba zai yiwu ba a sanya tsarin da ke da cikakkiyar daidaituwa (babu asarar bayanai, babu bambancin bayanai) da samuwa (zai karbi karantawa da rubutawa) don duk yanayin rashin nasara.

Za mu ga cewa daidaito da samuwa suna kan gaba da gaba na bakan, kuma kuna buƙatar zaɓar hanyar da za ku inganta. Labari mai dadi shine cewa tare da RabbitMQ wannan zabin yana yiwuwa. Kuna da waɗannan nau'ikan levers na "nerdy" don matsar da ma'auni zuwa mafi girman daidaito ko mafi girman dama.

Za mu ba da kulawa ta musamman ga abin da jeri ya haifar da asarar bayanai saboda bayanan da aka tabbatar. Akwai jerin alhaki tsakanin masu bugawa, dillalai da masu amfani. Da zarar an isar da sakon ga dillali, aikinsa ne kada ya rasa sakon. Lokacin da dillali ya yarda da karɓar saƙon mai wallafa, ba ma tsammanin za a rasa saƙon. Amma za mu ga cewa wannan na iya faruwa a zahiri ya danganta da tsarin dillalin ku da mai wallafawa.

Ƙididdigar Ƙarƙashin Ƙarfafa Ƙwararru

Tsare-tsare-tsare-tsare / Hanyar hanya

Akwai nau'ikan layukan layi guda biyu a cikin RabbitMQ: mai ɗorewa da mara ɗorewa. Ana ajiye duk layukan layi a cikin bayanan Mnesia. Ana sake tallata layukan dorewa a farkon kumburi don haka su tsira sake farawa, faɗuwar tsarin, ko faɗuwar uwar garken (muddin bayanan ya ci gaba). Wannan yana nufin cewa idan dai kun ayyana hanyar zirga-zirga (musanya) da jerin gwano don zama masu juriya, kayan aikin layin za su dawo kan layi.

Ana cire layukan da ba za a iya jurewa ba lokacin da aka sake kunna kumburin.

Saƙonnin dagewa

Kawai saboda jerin gwano yana da ɗorewa baya nufin cewa duk saƙonnin sa zasu tsira daga kumburin sake kunnawa. Sai kawai saƙonnin da mai wallafa ya saita azaman mai dorewa (dawwama). Saƙonni masu dagewa suna haifar da ƙarin kaya akan dillali, amma idan asarar saƙo ba ta karɓu ba, to babu wani zaɓi.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 1. Dorewa matrix

Tari tare da madubin layi

Don tsira daga asarar dillali, muna buƙatar sakewa. Za mu iya haɗa nodes na RabbitMQ da yawa a cikin tari, sannan mu ƙara ƙarin sakewa ta hanyar maimaita layi tsakanin nodes da yawa. Ta wannan hanyar, idan kumburi ɗaya ya gaza, ba za mu rasa bayanai kuma mu kasance akwai.

madubin layi:

  • babban jerin gwano ɗaya (maigida), wanda ke karɓar duk umarnin rubutu da karantawa
  • madubai ɗaya ko fiye waɗanda ke karɓar duk saƙonni da metadata daga babban layi. Waɗannan madubai ba don yin ƙima ba ne, amma don sakewa kawai.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 2. madubin layi

Mirroring an saita shi ta hanyar da ta dace. A ciki zaku iya zaɓar madaidaicin kwafi har ma da nodes ɗin da yakamata a samo layin. Misalai:

  • ha-mode: all
  • ha-mode: exactly, ha-params: 2 (Maigida daya da madubi daya)
  • ha-mode: nodes, ha-params: rabbit@node1, rabbit@node2

Tabbatar da mawallafi

Don cimma daidaiton rikodi, Ana buƙatar Tabbatarwa Mai bugawa. Idan ba tare da su ba, akwai haɗarin rasa saƙonnin. Ana aika tabbaci ga mawallafin bayan an rubuta saƙon zuwa faifai. RabbitMQ yana rubuta saƙonni zuwa faifai ba akan karɓa ba, amma akan lokaci-lokaci, a cikin yanki na mil ɗari da yawa. Lokacin da aka nuna jerin gwano, ana aika da sanarwa ne kawai bayan duk madubin sun rubuta kwafin saƙon zuwa faifai. Wannan yana nufin cewa yin amfani da tabbatarwa yana ƙara latency, amma idan bayanan tsaro yana da mahimmanci, to suna da mahimmanci.

Layin rashin nasara

Lokacin da dillali ya bar aiki ko ya yi karo, duk jagororin jerin gwano (masu iyalai) akan wannan kullin sun yi karo tare da shi. Tari sai ta zaɓi madubi mafi tsufa na kowane maigidan kuma ya inganta shi a matsayin sabon ubangida.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 3. Layukan madubai da yawa da manufofinsu

Dillali 3 ya sauka. Lura cewa madubin Queue C akan Broker 2 ana inganta shi zuwa gwaninta. Hakanan lura cewa an ƙirƙiri sabon madubi don Queue C akan Dillali 1. RabbitMQ koyaushe yana ƙoƙarin kiyaye abubuwan kwafi da aka ƙayyade a cikin manufofin ku.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 4. Dillali 3 ya gaza, wanda ya sa layin C ya gaza

Dillali na gaba 1 ya faɗi! Dillali daya kawai ya rage. An haɓaka madubin Queue B zuwa gwaninta.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Hoto: 5

Mun dawo da Dillali 1. Ko da kuwa yadda bayanan ke tsira daga asarar da dawo da dillali, duk saƙon layi na madubi ana watsar da su akan sake farawa. Wannan yana da mahimmanci a lura saboda za a sami sakamako. Za mu duba waɗannan abubuwan da ke faruwa ba da jimawa ba. Don haka Broker 1 yanzu ya zama memba na gungun kuma, kuma tarin ya yi ƙoƙarin bin manufofin don haka yana ƙirƙirar madubai akan Broker 1.

A wannan yanayin, asarar Broker 1 ya cika, kamar yadda bayanai suke, don haka Queue B wanda ba a taɓa gani ba ya ɓace gaba ɗaya.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 6. Dillali 1 ya dawo aiki

Broker 3 ya dawo kan layi, don haka jerin gwano A da B sun dawo da madubin da aka kirkira akan shi don gamsar da manufofin HA. Amma yanzu duk manyan layukan suna kan kulli ɗaya! Wannan ba manufa ba ne, ko da rarraba tsakanin nodes ya fi kyau. Abin takaici, babu zaɓuɓɓuka da yawa anan don daidaita masters. Za mu dawo kan wannan batu daga baya saboda muna buƙatar fara duba aiki tare da jerin gwano.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 7. Dillali 3 ya dawo aiki. Duk manyan layukan layi akan kumburi ɗaya!

Don haka yanzu ya kamata ku sami ra'ayin yadda madubai ke ba da sakewa da haƙurin kuskure. Wannan yana tabbatar da samuwa a cikin yanayin gazawar kumburi guda ɗaya kuma yana ba da kariya daga asarar bayanai. Amma har yanzu ba a gama ba, domin a gaskiya abin ya fi rikitarwa.

Aiki tare

Lokacin ƙirƙirar sabon madubi, duk sabbin saƙonni koyaushe za a maimaita su zuwa wannan madubi da sauran su. Dangane da bayanan da ke akwai a cikin babban layi, za mu iya maimaita shi zuwa sabon madubi, wanda ya zama cikakkiyar kwafin maigidan. Hakanan za mu iya zaɓar kada mu sake maimaita saƙonnin da ke akwai kuma mu bar babban layi da sabon madubi su haɗu cikin lokaci, tare da sabbin saƙonni suna zuwa wutsiya kuma saƙonnin da ke akwai suna barin shugaban babban layin.

Ana yin wannan aiki tare ta atomatik ko da hannu kuma ana sarrafa ta ta amfani da tsarin layi. Bari mu kalli misali.

Muna da layukan madubi guda biyu. Queue A yana aiki tare ta atomatik, kuma Queue B yana aiki tare da hannu. Duka layikan sun ƙunshi saƙonni goma.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 8. Layi biyu tare da yanayin aiki tare daban-daban

Yanzu mun rasa Broker 3.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 9. Dillali 3 ya fadi

Dillali 3 ya dawo sabis. Tarin yana ƙirƙirar madubi don kowane jerin gwano akan sabon kumburi kuma yana aiki tare da sabon Queue A ta atomatik tare da maigidan. Koyaya, madubin sabon Queue B ya kasance fanko. Ta wannan hanyar muna da cikakken sakewa akan Queue A da madubi ɗaya kawai don saƙonnin da ke cikin Queue B.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 10. Sabon madubi na Queue A yana karɓar duk saƙonnin da ke akwai, amma sabon madubi na Queue B baya.

Karin sakwanni goma sun iso cikin layin biyu. Broker 2 sai ya fado sannan Queue A ya koma kan tsohon madubi, wanda ke kan Broker 1. Babu asarar bayanai idan ya kasa. A cikin Queue B, akwai saƙonni ashirin a cikin maigidan kuma goma ne kawai a cikin madubi saboda wannan jerin gwanon bai taɓa maimaita ainihin saƙonni goma ba.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 11. Queue A yana komawa zuwa Broker 1 ba tare da rasa saƙonni ba

Karin sakwanni goma sun iso cikin layin biyu. Yanzu Broker 1 ya fado. Queue A cikin sauƙi yana canzawa zuwa madubi ba tare da rasa saƙonni ba. Koyaya, Queue B yana fuskantar matsaloli. A wannan gaba za mu iya inganta ko dai samuwa ko daidaito.

Idan muna son inganta samun dama, to manufofin ha-inganta-kan-raguwa ya kamata a shigar a ciki ko da yaushe. Wannan ita ce ƙimar tsoho, don haka kawai ba za ku iya tantance manufofin kwata-kwata ba. A wannan yanayin, da gaske muna ƙyale gazawa a cikin madubin da ba a daidaita su ba. Wannan zai sa a rasa saƙonnin, amma jerin gwano zai kasance abin karantawa kuma ana iya rubutawa.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 12. An mayar da Queue A zuwa Broker 3 ba tare da rasa saƙonni ba. Queue B yana komawa zuwa Dillali 3 tare da rasa saƙonni goma

Hakanan zamu iya shigarwa ha-promote-on-failure cikin ma'ana when-synced. A wannan yanayin, maimakon juyawa zuwa madubi, layin zai jira har sai Broker 1 tare da bayanansa sun dawo yanayin kan layi. Bayan ya dawo, babban layin ya koma kan Broker 1 ba tare da asarar bayanai ba. Ana sadaukar da samuwa don tsaro na bayanai. Amma wannan yanayi ne mai hatsarin gaske wanda har ma zai iya haifar da asarar bayanai, wanda za mu duba nan ba da jimawa ba.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 13. Ba a samun Queue B bayan rasa Dillali 1

Kuna iya tambaya, "Shin yana da kyau kada a taɓa amfani da aiki tare ta atomatik?" Amsar ita ce aiki tare aiki ne na toshewa. Yayin aiki tare, babban layi ba zai iya yin kowane aiki na karantawa ko rubutawa ba!

Bari mu kalli misali. Yanzu muna da dogayen layuka. Ta yaya za su girma zuwa irin wannan girman? Saboda dalilai da dama:

  • Ba a amfani da jerin gwano sosai
  • Waɗannan layukan sauri ne, kuma a yanzu masu amfani suna jinkirin
  • Layi ne mai sauri, an sami matsala kuma masu amfani suna kama

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 14. Manyan layuka biyu tare da yanayin aiki tare daban-daban

Yanzu Broker 3 ya fadi.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 15. Dillali 3 ya fadi, ya bar master daya da madubi a kowane jerin gwano

Broker 3 ya dawo kan layi kuma an ƙirƙiri sabbin madubai. Babban Queue A yana fara kwafin saƙonnin da ke akwai zuwa sabon madubi, kuma a wannan lokacin ba a samun jerin gwano. Yana ɗaukar sa'o'i biyu don yin kwafin bayanan, wanda ya haifar da sa'o'i biyu na raguwa don wannan Queue!

Koyaya, Queue B yana nan a duk tsawon lokacin. Ta yi sadaukarwa don samun dama.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 16. Ba a samun jerin gwano yayin aiki tare

Bayan sa'o'i biyu, Queue A shima yana samuwa kuma zai iya fara karɓar karatu da rubutu kuma.

Ana ɗaukakawa

Wannan ɗabi'a na toshewa yayin aiki tare yana sa yana da wahala a sabunta tari tare da manyan layukan layi. A wani lokaci, babban kullin yana buƙatar sake kunnawa, wanda ke nufin ko dai matsawa zuwa madubi ko kuma kashe layin yayin da ake haɓaka uwar garken. Idan muka zaɓi canzawa, za mu rasa saƙonni idan ba a daidaita madubin ba. Ta hanyar tsohuwa, yayin kashe dillali, gazawar zuwa madubin da ba a daidaita shi ba. Wannan yana nufin cewa da zaran dillali ya dawo, ba mu rasa wani sako ba, illa kawai kawai layi ne mai sauƙi. Dokokin hali lokacin da aka katse dillali an saita su ta hanyar manufa ha-promote-on-shutdown. Kuna iya saita ɗaya daga cikin ƙima biyu:

  • always= An kunna canji zuwa madubin da ba a daidaita su ba
  • when-synced= canzawa zuwa madubi mai aiki tare kawai, in ba haka ba layin ya zama wanda ba a iya karantawa kuma ba a iya rubutawa. Layin yana komawa sabis da zarar dillali ya dawo

Wata hanya ko wata, tare da manyan layuka dole ne ka zaɓi tsakanin asarar bayanai da rashin samuwa.

Lokacin Samuwar Yana Inganta Tsaron Bayanai

Akwai ƙarin rikitarwa da za a yi la'akari kafin yanke shawara. Yayin da aiki tare ta atomatik ya fi kyau don sakewa, ta yaya yake tasiri amincin bayanai? Tabbas, tare da mafi kyawun sakewa, RabbitMQ ba shi da yuwuwar rasa saƙonnin data kasance, amma menene game da sabbin saƙonni daga masu wallafa?

Anan kuna buƙatar la'akari da waɗannan abubuwan:

  • Shin mawallafin zai iya dawo da kuskure kawai kuma ya sake gwada sabis na sama ko mai amfani daga baya?
  • Mai bugawa zai iya ajiye saƙon a cikin gida ko a cikin bayanan bayanai don sake gwadawa daga baya?

Idan mawallafin zai iya watsar da saƙon kawai, to, a zahiri, haɓaka samun dama kuma yana inganta tsaro na bayanai.

Don haka, dole ne a nemi daidaito, kuma mafita ya dogara da takamaiman yanayin.

Matsaloli tare da ha-promote-on-failure=lokacin da aka daidaita

Idea ha-inganta-kan-raguwa= lokacin da aka daidaita shine mu hana canzawa zuwa madubi mara daidaitawa kuma ta haka ne mu guje wa asarar bayanai. Jerin ya kasance ba a iya karantawa ko rubutawa. Maimakon haka, muna ƙoƙari mu dawo da dillalin da ya yi hatsari tare da bayanansa don ya ci gaba da aiki a matsayin maigida ba tare da asarar bayanai ba.

Amma (kuma wannan babba ne amma) idan dillali ya rasa bayanansa, to muna da babbar matsala: layin ya ɓace! Duk bayanan sun tafi! Ko da kuna da madubai waɗanda galibi suna kama da babban jerin gwano, waɗannan madubin kuma ana watsar da su.

Don sake ƙara kumburi mai suna iri ɗaya, muna gaya wa gungu su manta kullin da ya ɓace (tare da umarnin rabbitmqctl manta_cluster_node) kuma fara sabon dillali mai sunan mai masauki iri ɗaya. Yayin da tari yana tunawa da kullin da ya ɓace, yana tunawa da tsohon layi da madubin da ba a daidaita su ba. Lokacin da aka ce gungu ya manta da kullin marayu, wannan jerin gwano kuma an manta da shi. Yanzu muna bukatar mu sake bayyana shi. Mun rasa duk bayanan, ko da yake muna da madubai tare da sashe na bayanai. Zai fi kyau a canza zuwa madubi mara daidaitawa!

Don haka, aiki tare da hannu (da gazawar aiki tare) a haɗe tare da ha-promote-on-failure=when-synced, a ganina, quite m. Takardun sun ce akwai wannan zaɓin don tsaron bayanai, amma wuƙa ce mai kaifi biyu.

Maimaita daidaitawa

Kamar yadda muka yi alkawari, mun koma ga matsalar tara duk masters a kan daya ko dama nodes. Wannan na iya faruwa har ma sakamakon sabuntawar tari. A cikin gungu mai kumburin kulli uku, duk manyan layukan iyalai za su taru akan nodes ɗaya ko biyu.

Sake daidaita masters na iya zama matsala don dalilai guda biyu:

  • Babu kayan aiki masu kyau don yin sake daidaitawa
  • Aiki tare

Akwai wani ɓangare na uku don sake daidaitawa kari, wanda ba a tallafawa a hukumance. Game da plugins na ɓangare na uku a cikin littafin RabbitMQ yace: “Flugin yana ba da wasu ƙarin tsari da kayan aikin bayar da rahoto, amma ƙungiyar RabbitMQ ba ta goyan bayanta ko tabbatar da ita. Yi amfani da haɗarin ku."

Akwai wata dabara don motsa babban layi ta hanyar manufofin HA. Littafin ya ambaci rubutun domin wannan. Yana aiki kamar haka:

  • Yana kawar da duk madubai ta amfani da manufofin wucin gadi wanda ke da fifiko mafi girma fiye da tsarin HA na yanzu.
  • Yana canza manufofin wucin gadi na HA don amfani da yanayin kumburi, yana ƙayyadadden kumburin da yakamata a canja wurin babban layin.
  • Yana daidaita jerin gwano don ƙaura.
  • Bayan ƙaura ya cika, yana share manufofin wucin gadi. Manufar HA ta farko tana tasiri kuma an ƙirƙiri adadin da ake buƙata na madubai.

Abin da ya rage shi ne cewa wannan hanyar ba za ta yi aiki ba idan kuna da manyan layukan layi ko tsauraran buƙatun sakewa.

Yanzu bari mu ga yadda gungu na RabbitMQ ke aiki tare da sassan cibiyar sadarwa.

Rashin haɗin kai

An haɗa nodes na tsarin da aka rarraba ta hanyar haɗin yanar gizo, kuma hanyoyin haɗin yanar gizo na iya kuma za a cire su. Yawan kashewa ya dogara da kayan aikin gida ko amincin girgijen da aka zaɓa. A kowane hali, tsarin da aka rarraba dole ne su iya jimre da su. Har yanzu muna da zaɓi tsakanin samuwa da daidaito, kuma labari mai daɗi shine RabbitMQ yana ba da zaɓuɓɓuka biyu (kawai ba a lokaci ɗaya ba).

Tare da RabbitMQ muna da manyan zaɓuɓɓuka guda biyu:

  • Bada rarrabuwar hankali (raba-kwakwalwa). Wannan yana tabbatar da samuwa, amma yana iya haifar da asarar bayanai.
  • Kashe rabuwar hankali. Zai iya haifar da asarar samuwa na ɗan gajeren lokaci dangane da yadda abokan ciniki ke haɗawa da tari. Hakanan zai iya haifar da cikakkiyar rashin samuwa a cikin gungu mai kumburi biyu.

Amma menene rabuwar hankali? Wannan shine lokacin da gungu ya rabu gida biyu saboda asarar hanyoyin sadarwa. A kowane gefe, madubin suna ɗaukaka zuwa maigidan, ta yadda a ƙarshe akwai masters da yawa a kowane jerin gwano.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 17. Babban jerin gwano da madubai biyu, kowanne akan kulli daban. Sannan gazawar hanyar sadarwa ta zo kuma madubi guda ya zama ya ware. Kullin da aka ware yana ganin sauran biyun sun fadi kuma suna tallata madubinsa ga maigidan. Yanzu muna da manyan layukan layi guda biyu, duka masu rubutu da abin karantawa.

Idan masu wallafe-wallafen sun aika bayanai zuwa ga masters biyu, za mu ƙare da kwafi guda biyu daban-daban na jerin gwano.

Hanyoyi daban-daban na RabbitMQ suna ba da ko dai samuwa ko daidaito.

Yi watsi da yanayin (tsoho)

Wannan yanayin yana tabbatar da samun dama. Bayan asarar haɗin kai, rabuwar hankali yana faruwa. Bayan an dawo da haɗin kai, dole ne mai gudanarwa ya yanke shawarar wane bangare zai ba da fifiko. Za a sake kunna ɓangaren da ya ɓace kuma duk bayanan da aka tara a wannan ɓangaren za su ɓace.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 18. Ana haɗa mawallafa uku da dillalai uku. A ciki, gungu yana bin duk buƙatun zuwa babban layi akan Broker 2.

Yanzu mun rasa Broker 3. Ya ga cewa wasu dillalai sun fadi kuma suna tallata madubinsa ga maigidan. Wannan shine yadda rabuwa ta hankali ke faruwa.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 19. Rarraba hankali (rabe-kwakwalwa). Rubuce-rubuce sun shiga manyan layukan biyu, kuma kwafin biyu sun bambanta.

An dawo da haɗin kai, amma rabuwar hankali ya rage. Dole ne mai gudanarwa ya zaɓi ɓangaren da ya ɓace da hannu. A cikin yanayin da ke ƙasa, mai gudanarwa ya sake yin Broker 3. Duk saƙonnin da bai gudanar da aikawa ba sun ɓace.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 20. Administrator ya hana Broker 3.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 21. Administrator ya fara Broker 3 kuma yana shiga cikin cluster, ya rasa duk saƙonnin da aka bari a can.

Lokacin da aka rasa haɗin haɗin gwiwa da kuma bayan dawowarsa, gungu da wannan jerin gwano suna samuwa don karatu da rubutu.

Yanayin warkewa

Yana aiki iri ɗaya zuwa Yanayin Kau da kai, sai dai gungu da kansa yana zaɓar gefen da ya ɓace ta atomatik bayan rarrabuwa da dawo da haɗin kai. Bangaren da ya yi hasara yana komawa gungu babu kowa, kuma layin ya rasa duk saƙon da aka aika zuwa wancan ɓangaren kawai.

Dakatar da Yanayin tsiraru

Idan ba ma so mu ƙyale rarrabuwa ta hankali, to zaɓinmu ɗaya kawai shine mu watsar da karatu da rubutu akan ƙaramin ɓangaren bayan ɓangaren gungu. Lokacin da dillali ya ga cewa yana kan ƙarami, sai ya dakatar da aiki, wato, yana rufe duk haɗin da ke akwai kuma ya ƙi kowane sababbi. Sau ɗaya a cikin daƙiƙa guda yana bincika don dawo da haɗin haɗin gwiwa. Da zarar an dawo da haɗin kai, zai dawo aiki kuma ya haɗa tari.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 22. Ana haɗa mawallafa uku da dillalai uku. A ciki, gungu yana bin duk buƙatun zuwa babban layi akan Broker 2.

Dillalan 1 da 2 sai suka rabu da Dillali 3. Maimakon tallata madubin su don sarrafa, Broker 3 ya dakatar kuma ya zama babu samuwa.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 23. Dillali 3 ya dakata, ya cire haɗin duk abokan ciniki, kuma ya ƙi buƙatun haɗi.

Da zarar an dawo da haɗin kai, zai koma gungu.

Bari mu kalli wani misali inda babban layin ke kan Dillali 3.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 24. Babban layi akan Broker 3.

Sa'an nan kuma asarar haɗin haɗi ɗaya ta faru. Dillali 3 ya dakata saboda yana kan ƙarami. A gefe guda, nodes suna ganin cewa Broker 3 ya faɗi, don haka tsohuwar madubi daga Brokers 1 da 2 an haɓaka su zuwa ƙwarewa.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 25. Canjawa zuwa Dillali 2 idan babu Broker 3.

Lokacin da aka dawo da haɗin kai, Broker 3 zai shiga tari.

RabbitMQ vs Kafka: Haƙuri na Laifi da Babban Samuwa a cikin Tari
Shinkafa 26. Tarin ya koma aiki na yau da kullun.

Muhimmin abin da ya kamata mu fahimta anan shine muna samun daidaito, amma kuma zamu iya samun samuwa, idan Za mu sami nasarar canja wurin abokan ciniki zuwa yawancin sashin. Ga mafi yawan yanayi, Ni da kaina zan zaɓi yanayin Dakatar da 'Yan tsiraru, amma ya dogara da gaske akan yanayin mutum ɗaya.

Don tabbatar da samuwa, yana da mahimmanci don tabbatar da cewa abokan ciniki sun sami nasarar haɗawa da mai watsa shiri. Mu duba zabin mu.

Tabbatar da Haɗin Abokin Ciniki

Muna da zaɓuɓɓuka da yawa don yadda ake jagorantar abokan ciniki zuwa babban ɓangaren tari ko zuwa nodes ɗin aiki (bayan kumburi ɗaya ya gaza) bayan asarar haɗin gwiwa. Da farko, bari mu tuna cewa ana ɗaukar takamaiman jerin gwano akan takamaiman kulli, amma ana yin kwatance da manufofi a duk kulliyoyin. Abokan ciniki za su iya haɗawa zuwa kowane kumburi, kuma tuƙin ciki zai jagorance su inda suke buƙatar zuwa. Amma lokacin da aka dakatar da kumburi, yana ƙin haɗin gwiwa, don haka abokan ciniki dole ne su haɗa zuwa wani kumburi. Idan kumburin ya fadi, babu kadan da zai iya yi kwata-kwata.

Zaɓuɓɓukan mu:

  • Ana samun dama ga gungu ta amfani da ma'aunin nauyi wanda kawai ke kewayawa ta nodes kuma abokan ciniki suna sake gwada haɗawa har sai an yi nasara. Idan kumburin yana ƙasa ko an dakatar da shi, to ƙoƙarin haɗi zuwa wannan kumburin zai gaza, amma ƙoƙari na gaba zai tafi zuwa wasu sabobin (a cikin salon zagaye-zagaye). Wannan ya dace da asarar haɗin kai na ɗan gajeren lokaci ko sabar da aka rushe wanda za a dawo da shi da sauri.
  • Samun dama ga gungu ta hanyar ma'aunin nauyi kuma cire raƙuman rataye/ gazawa daga lissafin da zaran an gano su. Idan muka yi wannan da sauri, kuma idan abokan ciniki sun sami damar sake gwada hanyar haɗin gwiwa, to za mu sami ci gaba da kasancewa.
  • Ba kowane abokin ciniki jerin duk nodes, kuma abokin ciniki ya zaɓi ɗayan su ba da gangan lokacin haɗawa ba. Idan ya sami kuskure lokacin ƙoƙarin haɗi, yana matsawa zuwa kumburi na gaba a lissafin har sai ya haɗa.
  • Cire zirga-zirga daga kumburin da ya gaza/ dakatar da shi ta amfani da DNS. Ana yin wannan ta amfani da ƙaramin TTL.

binciken

Tarin RabbitMQ yana da fa'ida da rashin amfaninsa. Mafi girman rashin lahani shine:

  • lokacin shiga tari, nodes suna zubar da bayanan su;
  • toshe aiki tare yana sa layin ya zama babu.

Duk shawarwari masu wahala sun samo asali ne daga waɗannan fasalulluka biyu na gine-gine. Idan RabbitMQ zai iya ajiye bayanai lokacin da aka haɗa tari, to aiki tare zai yi sauri. Idan yana da ikon hana aiki tare, zai fi dacewa ya goyi bayan manyan layukan. Gyara waɗannan batutuwa guda biyu zai inganta aikin RabbitMQ sosai a matsayin mai jurewa kuskure da fasahar saƙon da ake samu sosai. Zan yi jinkirin ba da shawarar RabbitMQ tare da tari a cikin yanayi masu zuwa:

  • Cibiyar sadarwa mara dogaro.
  • Ma'ajiyar abin dogaro.
  • Dogayen layi.

Idan ya zo ga manyan saitunan samuwa, la'akari da waɗannan:

  • ha-promote-on-failure=always
  • ha-sync-mode=manual
  • cluster_partition_handling=ignore (ko autoheal)
  • m saƙonni
  • tabbatar da abokan ciniki sun haɗa zuwa kumburin aiki lokacin da kumburin ya gaza

Don daidaito (tsaro bayanan), la'akari da saitunan masu zuwa:

  • Mawallafin Yana Tabbatarwa da Amincewa da Manual a gefen mabukaci
  • ha-promote-on-failure=when-synced, idan masu wallafa za su iya sake gwadawa daga baya kuma idan kuna da ajiyar abin dogara sosai! In ba haka ba sa =always.
  • ha-sync-mode=automatic (amma don manyan layukan da ba su aiki ba, ana iya buƙatar yanayin jagora; kuma, la'akari da ko rashin samuwa zai sa a rasa saƙonnin)
  • Dakatar da yanayin tsiraru
  • m saƙonni

Har yanzu ba mu rufe dukkan batutuwan haƙurin kuskure da wadatar su ba tukuna; misali, yadda ake amintaccen aiwatar da hanyoyin gudanarwa (kamar sabuntawar birgima). Muna kuma buƙatar yin magana game da tarayya da plugin ɗin shebur.

Idan na rasa wani abu, don Allah a sanar da ni.

Duba kuma nawa post, Inda na yi ɓarna a kan gungu na RabbitMQ ta amfani da Docker da Blockade don gwada wasu daga cikin yanayin asarar saƙon da aka bayyana a cikin wannan labarin.

Abubuwan da suka gabata a cikin jerin:
Na 1 - habr.com/ru/company/itsumma/blog/416629
Na 2 - habr.com/ru/company/itsumma/blog/418389
Na 3 - habr.com/ru/company/itsumma/blog/437446

source: www.habr.com

Add a comment