RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ

Ifarada aṣiṣe ati wiwa giga jẹ awọn koko-ọrọ nla, nitorinaa a yoo ya awọn nkan lọtọ si RabbitMQ ati Kafka. Nkan yii jẹ nipa RabbitMQ, ati atẹle jẹ nipa Kafka, ni lafiwe pẹlu RabbitMQ. Eyi jẹ nkan ti o gun, nitorina jẹ ki ara rẹ ni itunu.

Jẹ ki a wo ifarada ẹbi, aitasera, ati awọn ilana wiwa giga (HA) ati awọn iṣowo ti ilana kọọkan ṣe. RabbitMQ le ṣiṣẹ lori iṣupọ ti awọn apa - ati pe lẹhinna jẹ ipin bi eto pinpin. Nigba ti o ba de si pin awọn ọna šiše, a igba soro nipa aitasera ati wiwa.

Awọn ero wọnyi ṣe apejuwe bi eto ṣe n huwa nigbati o kuna. Ikuna isopọ nẹtiwọọki, ikuna olupin, ikuna dirafu lile, aisi igba diẹ olupin nitori ikojọpọ idoti, ipadanu apo, tabi idinku asopọ nẹtiwọọki. Gbogbo eyi le ja si pipadanu data tabi awọn ija. O wa ni jade wipe o jẹ fere soro lati fi soke a eto ti o jẹ mejeeji patapata dédé (ko si data pipadanu, ko si data divergence) ati ki o wa (yoo gba kika ati kikọ) fun gbogbo ikuna awọn oju iṣẹlẹ.

A yoo rii pe aitasera ati wiwa wa ni awọn opin idakeji ti spekitiriumu, ati pe o nilo lati yan ọna wo lati mu dara si. Irohin ti o dara ni pe pẹlu RabbitMQ yiyan yii ṣee ṣe. O ni iru awọn lefa “nerdy” wọnyi lati yi iwọntunwọnsi si aitasera nla tabi iraye si nla.

A yoo san ifojusi pataki si eyi ti awọn atunto yorisi pipadanu data nitori awọn igbasilẹ ti a fọwọsi. Ẹwọn ojuse wa laarin awọn olutẹjade, awọn alagbata ati awọn alabara. Ni kete ti ifiranṣẹ naa ba ti firanṣẹ si alagbata, iṣẹ rẹ ni lati ma padanu ifiranṣẹ naa. Nigbati alagbata jẹwọ gbigba ti ikede ti ifiranṣẹ naa, a ko nireti pe yoo padanu. Ṣugbọn a yoo rii pe eyi le ṣẹlẹ nitootọ da lori alagbata ati iṣeto olutẹwe rẹ.

Awọn alakoko Resilience Node Nikan

Resilient Queuing/ afisona

Awọn oriṣi awọn ila meji lo wa ni RabbitMQ: ti o tọ ati ti ko tọ. Gbogbo awọn ila ti wa ni ipamọ ni aaye data Mnesia. Awọn ila ti o tọ ni a tun ṣe ipolowo ni ibẹrẹ ipade ati nitorinaa ye lati tun bẹrẹ, awọn ipadanu eto, tabi ipadanu olupin (niwọn igba ti data naa ba wa). Eyi tumọ si pe niwọn igba ti o ba kede ipa-ọna (paṣipaarọ) ati ti isinyi lati jẹ resilient, awọn amayederun ila-itọpa yoo pada wa lori ayelujara.

Awọn laini iyipada ati ipa-ọna ti yọ kuro nigbati ipade naa ti tun bẹrẹ.

Awọn ifiranṣẹ ti o duro

Nitoripe isinyi kan duro ko tumọ si pe gbogbo awọn ifiranṣẹ rẹ yoo ye ninu ipade tun bẹrẹ. Awọn ifiranṣẹ nikan ti a ṣeto nipasẹ olutẹwe si bi alagbero (duro). Awọn ifiranšẹ alarabara ṣẹda ẹru afikun lori alagbata, ṣugbọn ti ipadanu ifiranṣẹ ko ba jẹ itẹwọgba, lẹhinna ko si aṣayan miiran.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 1. Iduroṣinṣin matrix

Pipọpọ pẹlu digi ti isinyi

Lati ye isonu ti alagbata kan, a nilo apọju. A le ṣajọpọ ọpọ awọn apa RabbitMQ sinu iṣupọ kan, ati lẹhinna ṣafikun afikun apọju nipasẹ ṣiṣe awọn ila larin awọn apa ọpọ. Ni ọna yii, ti ipade kan ba kuna, a ko padanu data ati pe a wa.

Ṣiṣafihan isinyi:

  • ọkan akọkọ isinyi (titunto si), eyi ti o gba gbogbo Kọ ati ki o ka ase
  • ọkan tabi diẹ ẹ sii awọn digi ti o gba gbogbo awọn ifiranṣẹ ati metadata lati isinyi akọkọ. Awọn digi wọnyi ko wa nibẹ fun wiwọn, ṣugbọn odasaka fun apọju.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 2. mirroring isinyi

Mirroring ti ṣeto nipasẹ eto imulo ti o yẹ. Ninu rẹ o le yan olùsọdipúpọ atunkọ ati paapaa awọn apa lori eyiti o yẹ ki o wa ni isinyi. Awọn apẹẹrẹ:

  • ha-mode: all
  • ha-mode: exactly, ha-params: 2 (Oga kan ati digi kan)
  • ha-mode: nodes, ha-params: rabbit@node1, rabbit@node2

ìmúdájú Akede

Lati ṣaṣeyọri gbigbasilẹ deede, Awọn Ijẹrisi Olutẹjade ni a nilo. Laisi wọn, o wa ewu ti awọn ifiranṣẹ ti sọnu. A fi ijẹrisi ranṣẹ si akede lẹhin ti a ti kọ ifiranṣẹ si disk. RabbitMQ kọ awọn ifiranṣẹ si disk kii ṣe lori gbigba, ṣugbọn ni igbakọọkan, ni agbegbe ti awọn ọgọọgọrun milliseconds. Nigbati a ba ṣe afihan isinyi, ifọwọsi ni a firanṣẹ lẹhin ti gbogbo awọn digi tun ti kọ ẹda wọn ti ifiranṣẹ si disk. Eyi tumọ si pe lilo awọn ijẹrisi ṣe afikun lairi, ṣugbọn ti aabo data ba ṣe pataki, lẹhinna wọn jẹ pataki.

Ti isinyi ikuna

Nigbati alagbata kan ba jade tabi ṣubu, gbogbo awọn oludari ti isinyi (awọn oluwa) ti o wa lori ipade yẹn jamba pẹlu rẹ. Awọn iṣupọ lẹhinna yan digi atijọ ti ọga kọọkan ati ṣe igbega bi oga tuntun.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 3. Multiple mirrored queues ati awọn won imulo

Alagbata 3 lọ si isalẹ. Ṣe akiyesi pe digi Queue C lori Broker 2 ti wa ni igbega si oluwa. Tun ṣe akiyesi pe a ti ṣẹda digi tuntun kan fun Queue C lori alagbata 1. RabbitMQ nigbagbogbo n gbiyanju lati ṣetọju ifosiwewe ẹda ti o pato ninu awọn eto imulo rẹ.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 4. Alagbata 3 kuna, nfa isinyi C lati kuna

Alagbata 1 atẹle ṣubu! Alagbata kan pere ni a wa. Digi Queue B ti ni igbega si titunto si.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Eeya. ọkan

A ti pada alagbata 1. Laibikita bawo daradara data naa ṣe ye pipadanu ati imularada ti alagbata, gbogbo awọn ifiranṣẹ isinyi mirrored ti sọnu lori atunbere. Eyi jẹ pataki lati ṣe akiyesi nitori awọn abajade yoo wa. A yoo wo awọn ipa wọnyi laipẹ. Nitorinaa Alagbata 1 tun jẹ ọmọ ẹgbẹ ti iṣupọ lẹẹkansi, ati iṣupọ n gbiyanju lati ni ibamu pẹlu awọn eto imulo ati nitorinaa ṣẹda awọn digi lori Broker 1.

Ni idi eyi, isonu ti alagbata 1 ti pari, bi data naa ṣe jẹ, nitorinaa Queue B ti a ko mọ ti sọnu patapata.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 6. Alagbata 1 pada si iṣẹ

Alagbata 3 ti pada wa lori ayelujara, nitorinaa awọn ila A ati B gba pada awọn digi ti a ṣẹda lori rẹ lati ni itẹlọrun awọn ilana HA wọn. Ṣugbọn ni bayi gbogbo awọn ila akọkọ wa lori ipade kan! Eyi kii ṣe apẹrẹ, paapaa pinpin laarin awọn apa dara julọ. Laanu, ko si awọn aṣayan pupọ nibi fun atunṣe awọn oluwa. A yoo pada wa si atejade yii nigbamii nitori a nilo lati wo amuṣiṣẹpọ ti isinyi ni akọkọ.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 7. Alagbata 3 pada si iṣẹ. Gbogbo akọkọ queues lori ọkan ipade!

Nitorinaa ni bayi o yẹ ki o ni imọran bii awọn digi ṣe pese apọju ati ifarada ẹbi. Eyi ṣe idaniloju wiwa ni iṣẹlẹ ti ikuna ipade kan ati aabo lodi si pipadanu data. Ṣugbọn a ko tii ṣe sibẹsibẹ, nitori ni otitọ o jẹ idiju pupọ sii.

Amuṣiṣẹpọ

Nigbati o ba ṣẹda digi titun, gbogbo awọn ifiranṣẹ titun yoo ma ṣe atunṣe nigbagbogbo si digi yii ati awọn miiran. Bi fun data ti o wa ninu isinyi titunto si, a le tun ṣe si digi titun kan, eyiti o di ẹda pipe ti oluwa. A tun le yan lati ma ṣe atunṣe awọn ifiranṣẹ ti o wa tẹlẹ ki o jẹ ki isinyi akọkọ ati digi tuntun pejọ ni akoko, pẹlu awọn ifiranṣẹ titun ti o de ni iru ati awọn ifiranṣẹ ti o wa tẹlẹ nlọ ori ti isinyi akọkọ.

Amuṣiṣẹpọ yii jẹ adaṣe laifọwọyi tabi pẹlu ọwọ ati pe o ṣakoso ni lilo eto imulo isinyi. Jẹ́ ká wo àpẹẹrẹ kan.

A ni meji mirrored queues. Queue A ti muuṣiṣẹpọ laifọwọyi, ati Queue B ti muuṣiṣẹpọ pẹlu ọwọ. Awọn ila mejeeji ni awọn ifiranṣẹ mẹwa ninu.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 8. Awọn ila meji pẹlu awọn ọna amuṣiṣẹpọ oriṣiriṣi

Bayi a n padanu Alagbata 3.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 9. Alagbata 3 ṣubu

Alagbata 3 pada si iṣẹ. Iṣupọ naa ṣẹda digi kan fun isinyi kọọkan lori ipade tuntun ati muṣiṣẹpọ laifọwọyi Queue A tuntun pẹlu oluwa. Sibẹsibẹ, digi ti Queue B tuntun wa ni ofo. Ni ọna yii a ni apọju kikun lori Queue A ati digi kan ṣoṣo fun awọn ifiranṣẹ Queue B ti o wa tẹlẹ.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 10. Awọn titun digi ti isinyi A gba gbogbo awọn ti wa tẹlẹ awọn ifiranṣẹ, ṣugbọn awọn titun digi ti Queue B ko.

Awọn ifiranṣẹ mẹwa diẹ sii de ni awọn ila mejeeji. Alagbata 2 lẹhinna ṣubu ati Queue A yipo pada si digi atijọ, eyiti o wa lori Broker 1. Ko si pipadanu data nigbati o kuna. Ni Queue B, ogun awọn ifiranṣẹ wa ninu oluwa ati mẹwa nikan ni digi nitori isinyi yii ko ṣe atunṣe awọn ifiranṣẹ mẹwa atilẹba.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 11. Queue A yipo pada si alagbata 1 lai padanu awọn ifiranṣẹ

Awọn ifiranṣẹ mẹwa diẹ sii de ni awọn ila mejeeji. Bayi Broker 1 ipadanu. Queue A ni irọrun yipada si digi laisi sisọnu awọn ifiranṣẹ. Sibẹsibẹ, Queue B ni awọn iṣoro. Ni aaye yi a le je ki boya wiwa tabi aitasera.

Ti a ba fẹ lati mu iraye si, lẹhinna eto imulo naa ha-igbega-on-ikuna yẹ ki o fi sori ẹrọ ni nigbagbogbo. Eyi ni iye aiyipada, nitorinaa o le jiroro ni ko pato eto imulo rara. Ni idi eyi, a n gba awọn ikuna laaye ni pataki ni awọn digi aiṣiṣẹpọ. Eyi yoo fa ki awọn ifiranṣẹ sọnu, ṣugbọn isinyi yoo wa ni kika ati kọ.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 12. Queue A ti yiyi pada si alagbata 3 laisi awọn ifiranṣẹ ti o padanu. Queue B yipo pada si alagbata 3 pẹlu awọn ifiranṣẹ mẹwa ti sọnu

A tun le fi sori ẹrọ ha-promote-on-failure sinu itumo when-synced. Ni idi eyi, dipo yiyi pada si digi naa, isinyi yoo duro titi Broker 1 pẹlu data rẹ yoo pada si ipo ori ayelujara. Lẹhin ti o pada, isinyi akọkọ ti pada si alagbata 1 laisi pipadanu data eyikeyi. Wiwa ti wa ni rubọ fun aabo data. Ṣugbọn eyi jẹ ipo eewu ti o le ja si pipadanu data pipe, eyiti a yoo wo laipẹ.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 13. Queue B ko si lẹhin ti o padanu Alagbata 1

O le beere, "Ṣe o dara lati ma lo amuṣiṣẹpọ aladaaṣe?" Idahun si ni pe amuṣiṣẹpọ jẹ iṣẹ idinamọ. Lakoko imuṣiṣẹpọ, isinyi akọkọ ko le ṣe eyikeyi awọn iṣẹ kika tabi kọ!

Jẹ́ ká wo àpẹẹrẹ kan. Bayi a ni awọn ila ti o gun pupọ. Bawo ni wọn ṣe le dagba si iru iwọn bẹẹ? Fun ọpọlọpọ awọn idi:

  • Awọn ila ti wa ni ko actively lo
  • Iwọnyi jẹ awọn laini iyara giga, ati ni bayi awọn alabara lọra
  • O jẹ awọn isinyi iyara to gaju, glitch kan ti wa ati pe awọn alabara n mu

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 14. Awọn ila nla meji pẹlu awọn ọna amuṣiṣẹpọ oriṣiriṣi

Bayi Alagbata 3 ṣubu.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 15. Alagbata 3 ṣubu, nlọ ọkan titunto si ati digi ni kọọkan ti isinyi

Alagbata 3 pada wa lori ayelujara ati awọn digi tuntun ti ṣẹda. Ifilelẹ akọkọ A bẹrẹ ṣiṣe ẹda awọn ifiranṣẹ ti o wa tẹlẹ si digi tuntun, ati ni akoko yii Queue ko si. Yoo gba to wakati meji lati tun data naa ṣe, ti o yọrisi awọn wakati meji ti isunmi fun isinyi yii!

Sibẹsibẹ, Queue B wa ni gbogbo akoko naa. O rubọ diẹ ninu awọn apọju fun iraye si.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 16. Ti isinyi ko si lakoko mimuuṣiṣẹpọ

Lẹhin awọn wakati meji, Queue A tun wa o le bẹrẹ gbigba awọn kika ati kọ lẹẹkansi.

Awọn imudojuiwọn

Iwa ìdènà yii lakoko mimuuṣiṣẹpọ jẹ ki o nira lati ṣe imudojuiwọn awọn iṣupọ pẹlu awọn ila ti o tobi pupọ. Ni aaye kan, ipade titunto si nilo lati tun bẹrẹ, eyiti o tumọ si boya yiyi pada si digi kan tabi pa isinyin kuro lakoko ti olupin ti n gbega. Ti a ba yan lati yipada, a yoo padanu awọn ifiranṣẹ ti awọn digi ko ba muuṣiṣẹpọ. Nipa aiyipada, lakoko ijade alagbata, ikuna si digi aiṣiṣẹpọ ko ṣe. Eyi tumọ si pe ni kete ti alagbata ba pada, a ko padanu awọn ifiranṣẹ eyikeyi, ibajẹ nikan jẹ isinyi ti o rọrun. Awọn ofin ihuwasi nigbati alagbata ti ge-asopo ti ṣeto nipasẹ eto imulo ha-promote-on-shutdown. O le ṣeto ọkan ninu awọn iye meji:

  • always= iyipada si awọn digi aiṣiṣẹpọ ti ṣiṣẹ
  • when-synced= iyipada si digi mimuuṣiṣẹpọ nikan, bibẹẹkọ isinyi di ai ka ati ko kọ. Ti isinyi pada si iṣẹ ni kete ti alagbata ba pada

Ọna kan tabi omiiran, pẹlu awọn ila nla o ni lati yan laarin pipadanu data ati wiwa.

Nigbati Wiwa Ṣe ilọsiwaju Aabo Data

Iṣoro kan wa lati ronu ṣaaju ṣiṣe ipinnu. Lakoko ti amuṣiṣẹpọ adaṣe dara julọ fun apọju, bawo ni o ṣe ni ipa aabo data? Nitoribẹẹ, pẹlu isọdọtun to dara julọ, RabbitMQ ko ṣeeṣe lati padanu awọn ifiranṣẹ ti o wa tẹlẹ, ṣugbọn kini nipa awọn ifiranṣẹ tuntun lati ọdọ awọn olutẹjade?

Nibi o nilo lati ro awọn wọnyi:

  • Njẹ olutẹwe le kan da aṣiṣe pada ki o jẹ ki iṣẹ oke tabi olumulo gbiyanju lẹẹkansi nigbamii?
  • Njẹ olutẹwe le fipamọ ifiranṣẹ naa ni agbegbe tabi ni ibi ipamọ data lati gbiyanju lẹẹkansi nigbamii bi?

Ti olutẹwe ba le sọ ifiranṣẹ naa silẹ nikan, lẹhinna ni otitọ, imudara iraye si tun mu aabo data dara si.

Nitorinaa, iwọntunwọnsi gbọdọ wa, ati ojutu da lori ipo kan pato.

Awọn iṣoro pẹlu ha-promote-on-failure=nigbati-ṣiṣẹpọ

Agutan ha-igbega-on-ikuna= nigbati-ṣiṣẹpọ ni pe a ṣe idiwọ iyipada si digi ti ko ṣiṣẹpọ ati nitorinaa yago fun pipadanu data. Awọn ti isinyi si maa wa unreadable tabi kikọ. Dipo, a gbiyanju lati gba alagbata ti o kọlu pada pẹlu data data rẹ ki o le tun ṣiṣẹ bi oluwa laisi pipadanu data.

Ṣugbọn (ati pe eyi jẹ nla ṣugbọn) ti alagbata ti padanu data rẹ, lẹhinna a ni iṣoro nla kan: isinyi ti sọnu! Gbogbo data ti lọ! Paapa ti o ba ni awọn digi ti o mu pẹlu isinyi akọkọ, awọn digi yẹn jẹ asonu paapaa.

Lati tun fi apa kan kun pẹlu orukọ kanna, a sọ fun iṣupọ lati gbagbe ipade ti o sọnu (pẹlu aṣẹ rabbitmqctl gbagbe_cluster_node) ati bẹrẹ alagbata titun pẹlu orukọ olupin kanna. Lakoko ti iṣupọ naa ranti ipade ti o sọnu, o ranti isinyi atijọ ati awọn digi ti ko ṣiṣẹpọ. Nigbati a ba sọ fun iṣupọ kan lati gbagbe ipade alainibaba, isinyi naa tun gbagbe. Bayi a nilo lati tun kede rẹ. A padanu gbogbo data naa, botilẹjẹpe a ni awọn digi pẹlu ipin kan ti data. Yoo dara julọ lati yipada si digi ti ko ṣiṣẹpọ!

Nitorina, mimuuṣiṣẹpọ afọwọṣe (ati ikuna lati muṣiṣẹpọ) ni apapo pẹlu ha-promote-on-failure=when-synced, ni temi, oyimbo eewu. Awọn docs sọ pe aṣayan yii wa fun aabo data, ṣugbọn o jẹ ọbẹ oloju meji.

Titunto si rebalancing

Gẹgẹbi ileri, a pada si iṣoro ti ikojọpọ gbogbo awọn oluwa lori ọkan tabi pupọ awọn apa. Eyi le paapaa ṣẹlẹ bi abajade ti imudojuiwọn iṣupọ sẹsẹ kan. Ninu iṣupọ ipade mẹta, gbogbo awọn isinyi titunto si yoo kojọpọ lori awọn apa kan tabi meji.

Iṣatunṣe awọn oluwa le jẹ iṣoro fun awọn idi meji:

  • Ko si awọn irinṣẹ to dara lati ṣe atunṣe
  • Amuṣiṣẹpọ ti isinyi

Ẹnikẹta wa fun isọdọtun pulọọgi ninu, eyi ti o ti wa ni ko ifowosi ni atilẹyin. Nipa awọn afikun ẹnikẹta ninu ilana ilana RabbitMQ sọ: “Afikun naa n pese diẹ ninu iṣeto ni afikun ati awọn irinṣẹ ijabọ, ṣugbọn ko ṣe atilẹyin tabi jẹrisi nipasẹ ẹgbẹ RabbitMQ. Lo ninu eewu tirẹ."

Ẹtan miiran wa lati gbe isinyi akọkọ nipasẹ awọn eto imulo HA. Awọn Afowoyi nmẹnuba akosile fun eyi. O ṣiṣẹ bi eleyi:

  • Yọ gbogbo awọn digi kuro nipa lilo eto imulo igba diẹ ti o ni ayo ti o ga julọ ju ilana HA ti o wa tẹlẹ.
  • Ṣe iyipada eto imulo igba diẹ HA lati lo ipo ipade, ni pato ipade eyiti o yẹ ki o gbe isinyi titunto si.
  • Ṣiṣẹpọ ti isinyi fun iṣilọ titari.
  • Lẹhin ti ijira ti pari, paarẹ eto imulo igba diẹ. Eto imulo HA akọkọ gba ipa ati nọmba ti a beere fun awọn digi ti ṣẹda.

Isalẹ ni pe ọna yii le ma ṣiṣẹ ti o ba ni awọn laini nla tabi awọn ibeere apọju ti o muna.

Bayi jẹ ki a wo bii awọn iṣupọ RabbitMQ ṣe n ṣiṣẹ pẹlu awọn ipin nẹtiwọọki.

Isonu ti Asopọmọra

Awọn apa ti eto pinpin ni asopọ nipasẹ awọn ọna asopọ nẹtiwọọki, ati awọn ọna asopọ nẹtiwọọki le ati pe yoo ge. Awọn igbohunsafẹfẹ ti awọn ijade da lori awọn amayederun agbegbe tabi igbẹkẹle ti awọsanma ti o yan. Ni eyikeyi idiyele, awọn eto pinpin gbọdọ ni anfani lati koju wọn. Lekan si a ni yiyan laarin wiwa ati aitasera, ati lẹẹkansi iroyin ti o dara ni pe RabbitMQ pese awọn aṣayan mejeeji (kii ṣe ni akoko kanna).

Pẹlu RabbitMQ a ni awọn aṣayan akọkọ meji:

  • Gba laaye pipin mogbonwa (pipin-ọpọlọ). Eyi ṣe idaniloju wiwa, ṣugbọn o le fa pipadanu data.
  • Pa mogbonwa Iyapa. Le ja si ipadanu wiwa igba kukuru da lori bii awọn alabara ṣe sopọ mọ iṣupọ naa. O tun le ja si pipe pipe ninu iṣupọ ipade-meji.

Ṣugbọn kini iyapa ti ọgbọn? Eyi jẹ nigbati iṣupọ kan pin si meji nitori pipadanu awọn isopọ nẹtiwọọki. Ni ẹgbẹ kọọkan, awọn digi ti wa ni igbega si titunto si, ki o wa ni bajẹ ọpọlọpọ awọn oluwa fun isinyi.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 17. Main isinyi ati meji digi, kọọkan lori lọtọ ipade. Lẹhinna ikuna nẹtiwọọki kan waye ati digi kan yoo ya sọtọ. Ipin ti o ya sọtọ rii pe awọn meji miiran ti ṣubu ati igbega awọn digi rẹ si oluwa. Bayi a ni awọn ila akọkọ meji, mejeeji ti a kọ ati kika.

Ti awọn olutẹjade ba fi data ranṣẹ si awọn ọga mejeeji, a pari pẹlu awọn ẹda oriṣiriṣi meji ti isinyi.

Awọn ipo oriṣiriṣi RabbitMQ pese boya wiwa tabi aitasera.

Foju ipo (aiyipada)

Ipo yii ṣe idaniloju iraye si. Lẹhin isonu ti Asopọmọra, iyapa ọgbọn kan waye. Lẹhin ti Asopọmọra ti tun pada, oluṣakoso gbọdọ pinnu iru ipin lati fun ni pataki si. Ẹgbẹ ti o padanu yoo tun bẹrẹ ati gbogbo data ti o ṣajọpọ ni ẹgbẹ yẹn yoo sọnu.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 18. Awọn atẹjade mẹta ni o ni nkan ṣe pẹlu awọn alagbata mẹta. Ni inu, iṣupọ naa tọ gbogbo awọn ibeere lọ si isinyi akọkọ lori Alagbata 2.

Bayi a n padanu Broker 3. O rii pe awọn alagbata miiran ti ṣubu ati igbega digi rẹ si oluwa. Eyi ni bi ipinya ọgbọn ṣe waye.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 19. Logic pipin (pipin-ọpọlọ). Awọn igbasilẹ lọ sinu awọn ila akọkọ meji, ati awọn ẹda meji naa yatọ.

Asopọmọra ti wa ni pada, sugbon mogbonwa Iyapa si maa wa. Alakoso gbọdọ pẹlu ọwọ yan ẹgbẹ ti o padanu. Ninu ọran ti o wa ni isalẹ, oluṣakoso tun atunbere alagbata 3. Gbogbo awọn ifiranṣẹ ti ko ṣakoso lati firanṣẹ ti sọnu.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 20. Alakoso naa pa alagbata 3.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 21. Alakoso bẹrẹ alagbata 3 ati pe o darapọ mọ iṣupọ, padanu gbogbo awọn ifiranṣẹ ti o fi silẹ nibẹ.

Lakoko isonu ti Asopọmọra ati lẹhin imupadabọ rẹ, iṣupọ ati isinyi wa fun kika ati kikọ.

Ipo autoheal

Ṣiṣẹ bakannaa si Foju ipo, ayafi ti iṣupọ funrararẹ yan ẹgbẹ ti o padanu laifọwọyi lẹhin pipin ati mimu-pada sipo Asopọmọra. Ẹgbẹ ti o padanu yoo pada si iṣupọ sofo, ati isinyi padanu gbogbo awọn ifiranṣẹ ti a firanṣẹ si ẹgbẹ yẹn nikan.

Duro Ipò Kekere

Ti a ko ba fẹ gba ipin ti ọgbọn, lẹhinna aṣayan wa nikan ni lati sọ awọn kika ati kikọ silẹ ni ẹgbẹ ti o kere julọ lẹhin ipin iṣupọ. Nigbati alagbata ba rii pe o wa ni apa kekere, o da iṣẹ duro, iyẹn ni, o tilekun gbogbo awọn asopọ ti o wa tẹlẹ ati kọ eyikeyi awọn tuntun. Ni ẹẹkan fun iṣẹju-aaya o ṣayẹwo fun imupadabọ isopọmọ. Ni kete ti Asopọmọra ti tun pada, yoo bẹrẹ iṣẹ ati darapọ mọ iṣupọ naa.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 22. Awọn atẹjade mẹta ni o ni nkan ṣe pẹlu awọn alagbata mẹta. Ni inu, iṣupọ naa tọ gbogbo awọn ibeere lọ si isinyi akọkọ lori Alagbata 2.

Awọn alagbata 1 ati 2 lẹhinna pin si alagbata 3. Dipo igbega digi wọn si oluwa, Broker 3 da duro ati pe ko si.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 23. Alagbata 3 da duro, ge asopọ gbogbo awọn alabara, ati kọ awọn ibeere asopọ.

Ni kete ti Asopọmọra ti tun pada, yoo pada si iṣupọ.

Jẹ ki a wo apẹẹrẹ miiran nibiti isinyin akọkọ wa lori Alagbata 3.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 24. Ifilelẹ akọkọ lori alagbata 3.

Lẹhinna isonu kanna ti Asopọmọra waye. Alagbata 3 da duro nitori pe o wa ni ẹgbẹ ti o kere julọ. Ni apa keji, awọn apa wo pe Broker 3 ti ṣubu, nitorina digi agbalagba lati Brokers 1 ati 2 ni igbega si oluwa.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 25. Iyipada si alagbata 2 ti alagbata 3 ko ba si.

Nigbati Asopọmọra ba tun pada, Alagbata 3 yoo darapọ mọ iṣupọ naa.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa Giga ni Awọn iṣupọ
Iresi. 26. Iṣupọ ti pada si iṣẹ deede.

Ohun pataki lati ni oye nibi ni pe a gba aitasera, ṣugbọn a tun le gba wiwa, ti o ba ti A yoo ṣaṣeyọri gbe awọn alabara lọ si pupọ julọ apakan naa. Fun awọn ipo pupọ julọ, Emi tikalararẹ yoo yan ipo Pause Minority, ṣugbọn o da lori ọran kọọkan.

Lati rii daju wiwa, o ṣe pataki lati rii daju pe awọn alabara ni aṣeyọri sopọ si agbalejo naa. Jẹ ki a wo awọn aṣayan wa.

Aridaju Asopọmọra Onibara

A ni awọn aṣayan pupọ fun bi o ṣe le ṣe itọsọna awọn alabara si apakan akọkọ ti iṣupọ tabi si awọn apa iṣẹ (lẹhin ti ipade kan kuna) lẹhin isonu ti Asopọmọra. Ni akọkọ, jẹ ki a ranti pe isinyi kan pato ti gbalejo lori ipade kan pato, ṣugbọn ipa-ọna ati awọn eto imulo jẹ tun ṣe ni gbogbo awọn apa. Awọn alabara le sopọ si ipade eyikeyi, ati ipa-ọna inu yoo tọ wọn si ibiti wọn nilo lati lọ. Ṣugbọn nigbati ipade kan ba ti daduro, o kọ awọn asopọ, nitorinaa awọn alabara gbọdọ sopọ si ipade miiran. Ti ipade naa ba ṣubu, diẹ ni o le ṣe rara.

Awọn aṣayan wa:

  • A wọle si iṣupọ naa nipa lilo iwọntunwọnsi fifuye ti o kan yiyi nipasẹ awọn apa ati awọn alabara tun gbiyanju sisopọ titi di aṣeyọri. Ti ipade kan ba wa ni isalẹ tabi daduro, lẹhinna awọn igbiyanju lati sopọ si ipade yẹn yoo kuna, ṣugbọn awọn igbiyanju atẹle yoo lọ si awọn olupin miiran (ni aṣa yika-robin). Eyi dara fun isonu igba diẹ ti Asopọmọra tabi olupin ti o ti sọ silẹ ti yoo yara mu pada soke.
  • Wọle si iṣupọ nipasẹ iwọntunwọnsi fifuye ki o yọ awọn apa idaduro/ kuna kuro ninu atokọ ni kete ti wọn ba rii. Ti a ba ṣe eyi ni kiakia, ati pe ti awọn alabara ba ni anfani lati tun asopọ naa gbiyanju, lẹhinna a yoo ṣaṣeyọri wiwa igbagbogbo.
  • Fun alabara kọọkan ni atokọ ti gbogbo awọn apa, ati alabara laileto yan ọkan ninu wọn nigbati o ba sopọ. Ti o ba gba aṣiṣe nigbati o ngbiyanju lati sopọ, yoo gbe lọ si ipade atẹle ninu atokọ titi yoo fi sopọ.
  • Yọọ ijabọ kuro lati oju ipade ti o kuna/daduro nipa lilo DNS. Eyi ni a ṣe nipa lilo TTL kekere kan.

awari

Iṣakojọpọ RabbitMQ ni awọn anfani ati awọn alailanfani rẹ. Awọn alailanfani to ṣe pataki julọ ni pe:

  • Nigbati o ba darapọ mọ iṣupọ kan, awọn apa sọ data wọn silẹ;
  • ìdènà amuṣiṣẹpọ fa ti isinyi lati di ko si.

Gbogbo awọn ipinnu ti o nira lati inu awọn ẹya ayaworan meji wọnyi. Ti RabbitMQ ba le ṣafipamọ data nigbati iṣupọ naa ba tun darapọ, lẹhinna mimuuṣiṣẹpọ yoo yara. Ti o ba lagbara ti mimuuṣiṣẹpọ ti kii ṣe idinamọ, yoo dara julọ ṣe atilẹyin awọn ila nla. Ṣiṣatunṣe awọn ọran meji wọnyi yoo mu ilọsiwaju iṣẹ RabbitMQ pọ si bi ifarada-aṣiṣe ati imọ-ẹrọ fifiranṣẹ ti o wa ga julọ. Emi yoo ṣiyemeji lati ṣeduro RabbitMQ pẹlu ikojọpọ ni awọn ipo atẹle:

  • Nẹtiwọọki ti ko ni igbẹkẹle.
  • Ibi ipamọ ti ko ni igbẹkẹle.
  • Gan gun queues.

Nigbati o ba de si awọn eto wiwa giga, ro nkan wọnyi:

  • ha-promote-on-failure=always
  • ha-sync-mode=manual
  • cluster_partition_handling=ignore (tabi autoheal)
  • jubẹẹlo awọn ifiranṣẹ
  • rii daju pe awọn alabara sopọ si ipade ti nṣiṣe lọwọ nigbati awọn ipade ba kuna

Fun aitasera (aabo data), ro awọn eto wọnyi:

  • Olutẹwe jẹri ati Awọn Ifọwọsi Ifọwọyi ni ẹgbẹ olumulo
  • ha-promote-on-failure=when-synced, ti awọn olutẹjade ba le gbiyanju lẹẹkansi nigbamii ati ti o ba ni ibi ipamọ ti o gbẹkẹle pupọ! Bibẹẹkọ fi =always.
  • ha-sync-mode=automatic (ṣugbọn fun ipo afọwọṣe awọn laini aiṣiṣẹ nla le nilo; tun ronu boya wiwa yoo fa awọn ifiranṣẹ sọnu)
  • Daduro Ipo Kekere
  • jubẹẹlo awọn ifiranṣẹ

A ko ti bo gbogbo awọn ọran ti ifarada ẹbi ati wiwa giga sibẹsibẹ; fun apẹẹrẹ, bi o ṣe le ṣe awọn ilana iṣakoso ni aabo (gẹgẹbi awọn imudojuiwọn yiyi). A tun nilo lati sọrọ nipa federation ati ohun itanna Shovel.

Ti mo ba padanu ohunkohun miiran, jọwọ jẹ ki mi mọ.

Wo tun mi sare, Nibiti Mo ṣe iparun kan lori iṣupọ RabbitMQ nipa lilo Docker ati Blockade lati ṣe idanwo diẹ ninu awọn oju iṣẹlẹ pipadanu ifiranṣẹ ti a ṣalaye ninu nkan yii.

Awọn nkan iṣaaju ninu jara:
No. 1 - habr.com/ru/company/itsumma/blog/416629
No. 2 - habr.com/ru/company/itsumma/blog/418389
No. 3 - habr.com/ru/company/itsumma/blog/437446

orisun: www.habr.com

Fi ọrọìwòye kun