RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga

В kẹhin article a wo iṣupọ RabbitMQ fun ifarada ẹbi ati wiwa giga. Bayi jẹ ki a ma wà jin sinu Apache Kafka.

Nibi ẹyọ ti ẹda ni ipin. Koko kọọkan ni ọkan tabi diẹ ẹ sii awọn apakan. Ẹka kọọkan ni oludari pẹlu tabi laisi awọn ọmọlẹyin. Nigbati o ba ṣẹda koko-ọrọ kan, o pato nọmba awọn ipin ati olusọdipúpọ ẹda. Iwọn deede jẹ 3, eyiti o tumọ si awọn ẹda mẹta: oludari kan ati awọn ọmọlẹyin meji.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 1. Awọn apakan mẹrin ti pin laarin awọn alagbata mẹta

Gbogbo awọn ibeere kika ati kikọ lọ si ọdọ olori. Awọn ọmọlẹyin lorekore firanṣẹ awọn ibeere si adari lati gba awọn ifiranṣẹ tuntun wọle. Awọn onibara ko yipada si awọn ọmọlẹyin; igbehin wa nikan fun apọju ati ifarada ẹbi.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga

Ikuna ipin

Nigbati alagbata ba kuna, awọn oludari ti awọn apakan pupọ nigbagbogbo kuna. Nínú ọ̀kọ̀ọ̀kan wọn, ọmọlẹ́yìn láti ọ̀nà mìíràn di aṣáájú-ọ̀nà. Ni otitọ, eyi kii ṣe ọran nigbagbogbo, nitori pe ifosiwewe amuṣiṣẹpọ tun ni ipa: boya awọn ọmọlẹyin ti a muuṣiṣẹpọ wa, ati bi ko ba ṣe bẹ, lẹhinna boya yiyi pada si ẹda ti ko ṣiṣẹpọ ni a gba laaye. Ṣugbọn jẹ ki ká ko complicate ohun fun bayi.

Alagbata 3 kuro ni nẹtiwọọki, ati pe a yan oludari tuntun fun apakan 2 ni alagbata 2.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 2. Alagbata 3 ku ati pe ọmọlẹyin rẹ lori alagbata 2 ni a yan gẹgẹbi oludari tuntun ti ipin 2

Lẹhinna alagbata 1 fi oju silẹ ati apakan 1 tun padanu oludari rẹ, eyiti ipa rẹ kọja si alagbata 2.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 3. Alagbata kan wa ti o ku. Gbogbo awọn oludari wa lori alagbata kan pẹlu apọju odo

Nigbati alagbata 1 ba pada wa lori ayelujara, o ṣafikun awọn ọmọlẹyin mẹrin, pese diẹ ninu apọju si ipin kọọkan. Ṣugbọn gbogbo awọn oludari tun wa lori alagbata 2.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 4. Awọn oludari wa lori alagbata 2

Nigbati alagbata 3 ba wa, a pada si awọn ẹda mẹta fun ipin. Ṣugbọn gbogbo awọn oludari tun wa lori alagbata 2.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 5. Gbigbe aiṣedeede ti awọn oludari lẹhin imupadabọ ti awọn alagbata 1 ati 3

Kafka ni ọpa kan fun atunṣe olori ti o dara ju RabbitMQ. Nibe, o ni lati lo ohun itanna ẹni-kẹta tabi iwe afọwọkọ ti o yi awọn eto imulo pada fun iṣikiri ipade titunto si nipa idinku idinku lakoko ijira. Ni afikun, fun awọn laini nla a ni lati gba wiwa lakoko mimuuṣiṣẹpọ.

Kafka ni ero ti "awọn ẹda ti o fẹ" fun ipa olori. Nigbati awọn ipin koko ba ṣẹda, Kafka ngbiyanju lati pin kaakiri awọn oludari ni boṣeyẹ kọja awọn apa ati samisi awọn oludari akọkọ wọnyẹn bi o fẹ. Ni akoko pupọ, nitori awọn atunbere olupin, awọn ikuna, ati awọn fifọ asopọ asopọ, awọn oludari le pari lori awọn apa miiran, bi ninu ọran nla ti a ṣalaye loke.

Lati ṣatunṣe eyi, Kafka nfunni awọn aṣayan meji:

  • Aṣayan auto.leader.rebalance.enable=otitọ ngbanilaaye ipade oludari lati tun sọtọ awọn oludari laifọwọyi pada si awọn ẹda ti o fẹ ati nitorinaa mu pada pinpin aṣọ ile.
  • Alakoso le ṣiṣe iwe afọwọkọ naa kafka-ayanfẹ-ẹda-idibo.sh fun Afowoyi reassignment.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 6. Replicas lẹhin rebalancing

Eyi jẹ ẹya irọrun ti ikuna, ṣugbọn otitọ jẹ eka sii, botilẹjẹpe ko si ohun ti idiju pupọ nibi. Gbogbo rẹ wa si isalẹ lati muuṣiṣẹpọ awọn ẹda (In-Sync Replicas, ISR).

Awọn ẹda Amuṣiṣẹpọ (ISR)

ISR jẹ eto awọn ẹda ti ipin kan ti o jẹ “ṣiṣẹpọ” (in-sync). Olori kan wa, ṣugbọn o le ma si awọn ọmọlẹyin. A ṣe akiyesi ọmọlẹyin kan mimuuṣiṣẹpọ ti o ba ti ṣe awọn adakọ deede ti gbogbo awọn ifiranṣẹ oludari ṣaaju ki aarin naa to pari. replica.lag.time.max.ms.

A yọ ọmọlẹyin kuro ni eto ISR ti o ba jẹ:

  • ko ṣe ibeere lati yan fun aarin replica.lag.time.max.ms (a ro pe o ti ku)
  • ko ṣakoso lati ṣe imudojuiwọn lakoko aarin replica.lag.time.max.ms (a ro pe o lọra)

Awọn ọmọlẹyin ṣe awọn ibeere iṣapẹẹrẹ ni aarin replica.fetch.wait.max.ms, eyi ti o ṣe aṣiṣe si 500ms.

Lati ṣe alaye kedere idi ti ISR, a nilo lati wo awọn ijẹrisi lati ọdọ olupilẹṣẹ ati diẹ ninu awọn oju iṣẹlẹ ikuna. Awọn olupilẹṣẹ le yan nigbati alagbata ba fi ijẹrisi ranṣẹ:

  • acks=0, a ko fi ijẹrisi ranṣẹ
  • acks=1, a fi ìmúdájú ránṣẹ́ lẹ́yìn tí aṣáájú ti kọ ìfiránṣẹ́ sí àkọọ́lẹ̀ àdúgbò rẹ̀
  • acks=all, ifẹsẹmulẹ jẹ fifiranṣẹ lẹhin gbogbo awọn ẹda ti o wa ninu ISR ti kọ ifiranṣẹ si awọn akọọlẹ agbegbe

Ni awọn ọrọ-ọrọ Kafka, ti ISR ​​ba ti fipamọ ifiranṣẹ kan, o jẹ "fifiranṣẹ". Acks=gbogbo jẹ aṣayan ti o ni aabo julọ, ṣugbọn tun ṣe afikun idaduro afikun. Jẹ ki a wo awọn apẹẹrẹ meji ti ikuna ati bii awọn aṣayan 'acks' oriṣiriṣi ṣe nlo pẹlu imọran ISR.

Acks=1 ati ISR

Ninu apẹẹrẹ yii, a yoo rii pe ti oludari ko ba duro fun gbogbo ifiranṣẹ lati ọdọ gbogbo awọn ọmọlẹyin lati wa ni fipamọ, lẹhinna pipadanu data ṣee ṣe ti oludari ba kuna. Lilọ kiri si ọmọlẹhin aiṣiṣẹpọ le ṣee mu ṣiṣẹ tabi alaabo nipasẹ eto aimọ.olori.idibo.ṣiṣẹ.

Ni apẹẹrẹ yii, olupese naa ni iye acks=1. Abala naa ti pin kaakiri gbogbo awọn alagbata mẹta. Alagbata 3 wa lẹhin, o ṣiṣẹpọ pẹlu oludari ni iṣẹju-aaya mẹjọ sẹhin ati pe o wa ni bayi awọn ifiranṣẹ 7456 lẹhin. Alagbata 1 nikan ni iṣẹju-aaya kan lẹhin. Olupilẹṣẹ wa firanṣẹ ifiranṣẹ kan ati yarayara gba ack pada, laisi ori ti o lọra tabi awọn ọmọlẹyin ti o ku ti oludari ko duro de.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 7. ISR pẹlu mẹta replicas

Alagbata 2 kuna ati olupilẹṣẹ gba aṣiṣe asopọ kan. Lẹhin ti olori kọja si alagbata 1, a padanu awọn ifiranṣẹ 123. Olutẹle lori alagbata 1 jẹ apakan ti ISR, ṣugbọn ko muuṣiṣẹpọ ni kikun pẹlu oludari nigbati o ṣubu.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 8. Awọn ifiranṣẹ ti wa ni sọnu nigba ti o ipadanu

Ni iṣeto ni bootstrap.server Olupese naa ni awọn alagbata lọpọlọpọ ti a ṣe akojọ ati pe o le beere lọwọ alagbata miiran ti o jẹ oludari apakan tuntun. Lẹhinna o ṣe agbekalẹ asopọ kan si alagbata 1 ati tẹsiwaju fifiranṣẹ awọn ifiranṣẹ.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 9. Fifiranṣẹ awọn ifiranṣẹ bẹrẹ lẹhin isinmi kukuru kan

Alagbata 3 jẹ paapaa siwaju lẹhin. O ṣe awọn ibeere wiwa ṣugbọn ko le muṣiṣẹpọ. Eyi le jẹ nitori asopọ nẹtiwọọki ti o lọra laarin awọn alagbata, ọrọ ibi ipamọ, ati bẹbẹ lọ O yọkuro lati ISR. Bayi ISR ​​ni ajọra kan - adari! Olupese naa tẹsiwaju lati firanṣẹ ati gba awọn ijẹrisi.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 10. Olutẹle lori alagbata 3 ti yọ kuro lati ISR

Alagbata 1 lọ si isalẹ ati ipa olori lọ si alagbata 3 pẹlu pipadanu awọn ifiranṣẹ 15286! Olupese gba ifiranṣẹ aṣiṣe asopọ kan. Iyipada si oludari ni ita ISR ṣee ṣe nikan nitori eto naa unclean.leader.election.enable=otitọ. Ti o ba ti fi sori ẹrọ ni èké, lẹhinna iyipada naa kii yoo waye ati pe gbogbo awọn ibeere kika ati kikọ yoo kọ. Ni idi eyi, a duro fun alagbata 1 lati pada pẹlu data aipe rẹ ninu ẹda, eyi ti yoo tun gba olori.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 11. Alagbata 1 ṣubu. Nigbati ikuna ba waye, nọmba nla ti awọn ifiranṣẹ ti sọnu

Olupilẹṣẹ ṣe agbekalẹ asopọ kan pẹlu alagbata ti o kẹhin ati rii pe o jẹ oludari apakan bayi. O bẹrẹ fifiranṣẹ awọn ifiranṣẹ si alagbata 3.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 12. Lẹhin isinmi kukuru, awọn ifiranṣẹ yoo tun ranṣẹ si apakan 0

A rii pe, yato si awọn idilọwọ kukuru lati fi idi awọn asopọ tuntun mulẹ ati wa oludari tuntun, olupese n firanṣẹ nigbagbogbo. Iṣeto ni idaniloju wiwa ni laibikita fun aitasera (aabo data). Kafka padanu ẹgbẹẹgbẹrun awọn ifiranṣẹ ṣugbọn tẹsiwaju lati gba awọn kikọ tuntun.

Acks=gbogbo ati ISR

Jẹ ká tun yi ohn lẹẹkansi, ṣugbọn pẹlu acks=gbogbo. Alagbata 3 ni aropin aropin ti iṣẹju-aaya mẹrin. Olupese fi ifiranṣẹ kan ranṣẹ pẹlu acks=gbogbo, ati nisisiyi ko gba esi ni kiakia. Olori nduro fun ifiranṣẹ lati wa ni fipamọ nipasẹ gbogbo awọn ẹda ni ISR.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 13. ISR pẹlu mẹta replicas. Ọkan jẹ o lọra, Abajade ni awọn idaduro gbigbasilẹ

Lẹhin iṣẹju-aaya mẹrin ti idaduro afikun, alagbata 2 firanṣẹ ack kan. Gbogbo awọn ẹda ti wa ni imudojuiwọn ni kikun bayi.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 14. Gbogbo replicas fi awọn ifiranṣẹ ki o si fi ack

Alagbata 3 bayi ṣubu siwaju lẹhin ati yọkuro lati ISR. Lairi ti dinku ni pataki nitori pe ko si awọn ẹda ti o lọra ti o ku ni ISR. Alagbata 2 bayi n duro de alagbata 1 nikan, ati pe o ni aisun aropin ti 500 ms.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 15. Apẹrẹ lori alagbata 3 ti yọ kuro lati ISR

Lẹhinna alagbata 2 ṣubu ati oludari kọja si alagbata 1 laisi pipadanu awọn ifiranṣẹ.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 16. Alagbata 2 ṣubu

Olupese naa wa oludari tuntun ati bẹrẹ fifiranṣẹ awọn ifiranṣẹ si i. Lairi ti dinku siwaju nitori ISR ​​ni bayi ni ẹda kan! Nitorina aṣayan acks=gbogbo ko kun apọju.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 17. Ajọra on alagbata 1 gba awọn asiwaju lai ọdun awọn ifiranṣẹ

Lẹhinna alagbata 1 kọlu ati asiwaju lọ si alagbata 3 pẹlu pipadanu awọn ifiranṣẹ 14238!

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 18. Alagbata 1 ku ati iyipada olori pẹlu awọn abajade eto alaimọ ni pipadanu data nla

A ko le fi aṣayan naa sori ẹrọ aimọ.olori.idibo.ṣiṣẹ sinu itumo otitọ. Nipa aiyipada o jẹ dogba èké. Ètò acks=gbogbo с unclean.leader.election.enable=otitọ pese iraye si pẹlu diẹ ninu aabo data ti a ṣafikun. Ṣugbọn bi o ti le rii, a tun le padanu awọn ifiranṣẹ.

Ṣugbọn kini ti a ba fẹ mu aabo data pọ si? O le fi unclean.leader.election.enable = iro, ṣugbọn eyi kii yoo daabo bo wa lati ipadanu data. Ti oludari ba ṣubu ni lile ati mu data pẹlu rẹ, lẹhinna awọn ifiranṣẹ ṣi sọnu, pẹlu wiwa ti sọnu titi ti oludari yoo mu ipo naa pada.

O dara lati rii daju pe gbogbo awọn ifiranṣẹ ti wa ni laiṣe, ati bibẹẹkọ sọ igbasilẹ naa silẹ. Lẹhinna, o kere ju lati oju wiwo alagbata, pipadanu data ṣee ṣe nikan ni iṣẹlẹ ti awọn ikuna meji tabi diẹ sii nigbakanna.

Acks=gbogbo, min.insync.replicas ati ISR

Pẹlu iṣeto ni koko min.insync.replicas A n pọ si ipele aabo data. Jẹ ki ká lọ nipasẹ awọn ti o kẹhin apa ti awọn ti tẹlẹ ohn lẹẹkansi, sugbon akoko yi pẹlu min.insync.replicas=2.

Nitorina alagbata 2 ni oludari ajọra kan ati pe ọmọ-ẹhin lori alagbata 3 ti yọkuro lati ISR.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 19. ISR lati meji replicas

Alagbata 2 ṣubu ati olori kọja si alagbata 1 laisi pipadanu awọn ifiranṣẹ. Ṣugbọn nisisiyi awọn ISR oriširiši nikan kan ajọra. Eyi ko pade nọmba to kere julọ lati gba awọn igbasilẹ, ati nitori naa alagbata naa dahun si igbiyanju kikọ pẹlu aṣiṣe kan NotEnoughReplicas.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 20. Nọmba awọn ISR jẹ ọkan ti o kere ju ti a sọ ni min.insync.replicas

Yi iṣeto ni ẹbọ wiwa fun aitasera. Ṣaaju ki o to jẹwọ ifiranṣẹ kan, a rii daju pe o ti kọ si o kere ju awọn ẹda meji. Eleyi yoo fun olupese Elo siwaju sii igbekele. Nibi, ipadanu ifiranṣẹ ṣee ṣe nikan ti awọn ẹda meji ba kuna nigbakanna ni aarin kukuru kan titi ti ifiranṣẹ yoo fi tun ṣe si ọmọlẹhin afikun, eyiti ko ṣeeṣe. Ṣugbọn ti o ba Super paranoid, o le ṣeto awọn ẹda ifosiwewe to 5, ati min.insync.replicas nipasẹ 3. Nibi awọn alagbata mẹta gbọdọ ṣubu ni akoko kanna lati padanu igbasilẹ naa! Nitoribẹẹ, o sanwo fun igbẹkẹle yii ni afikun lairi.

Nigbati iraye si jẹ pataki fun aabo data

Bi ninu irú pẹlu RabbitMQ, nigbami iraye si jẹ pataki fun aabo data. Eyi ni ohun ti o nilo lati ronu nipa:

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

Ti idahun ko ba jẹ bẹ, lẹhinna wiwa wiwa dara si aabo data. Iwọ yoo padanu data ti o dinku ti o ba yan wiwa dipo kii ṣe gbigbasilẹ. Nitorinaa, gbogbo rẹ wa si wiwa iwọntunwọnsi, ati pe ipinnu da lori ipo kan pato.

Itumọ ti ISR

ISR suite ngbanilaaye lati yan iwọntunwọnsi to dara julọ laarin aabo data ati lairi. Fun apẹẹrẹ, rii daju wiwa ni iṣẹlẹ ti ikuna ti ọpọlọpọ awọn ẹda, idinku ipa ti awọn ẹda ti o ku tabi o lọra ni awọn ofin ti lairi.

A yan itumọ ara wa replica.lag.time.max.ms gẹgẹ bi aini rẹ. Ni pataki, paramita yii tumọ si iye idaduro ti a fẹ lati gba nigbawo acks=gbogbo. Awọn aiyipada iye ni mẹwa aaya. Ti eyi ba gun ju fun ọ, o le dinku. Lẹhinna igbohunsafẹfẹ ti awọn ayipada ninu ISR yoo pọ si, nitori awọn ọmọlẹyin yoo yọkuro ati ṣafikun nigbagbogbo.

RabbitMQ jẹ apẹrẹ ti awọn digi ti o nilo lati tun ṣe. Awọn digi ti o lọra ṣafihan airi afikun, ati awọn digi ti o ku le duro titi awọn apo-iwe ti o ṣayẹwo wiwa ti oju ipade kọọkan (ami net) lati dahun. ISR jẹ ọna ti o nifẹ lati yago fun awọn ọran lairi wọnyi. Ṣugbọn a ṣe eewu pipadanu apọju nitori ISR ​​le dinku si oludari nikan. Lati yago fun ewu yii, lo eto naa min.insync.replicas.

Onibara asopọ lopolopo

Ni awọn eto bootstrap.server olupilẹṣẹ ati olumulo le pato awọn alagbata pupọ fun sisopọ awọn alabara. Ero naa ni pe nigbati ipade kan ba lọ silẹ, ọpọlọpọ awọn apoju lo wa pẹlu eyiti alabara le ṣii asopọ kan. Iwọnyi kii ṣe awọn oludari apakan dandan, ṣugbọn nirọrun orisun omi fun ikojọpọ akọkọ. Onibara le beere lọwọ wọn iru ipade ti o gbalejo oludari ipin kika/kọ.

Ni RabbitMQ, awọn alabara le sopọ si eyikeyi oju ipade, ati ipa ọna inu nfi ibeere ranṣẹ si ibiti o nilo lati lọ. Eyi tumọ si pe o le fi iwọntunwọnsi fifuye sori iwaju RabbitMQ. Kafka nilo awọn alabara lati sopọ si ipade ti o gbalejo oludari ipin ti o baamu. Ni iru ipo bẹẹ, o ko le fi iwọntunwọnsi fifuye sori ẹrọ. Akojọ bootstrap.server O ṣe pataki pe awọn alabara le wọle ati wa awọn apa ti o pe lẹhin ikuna kan.

Kafka ipohunpo Architecture

Titi di isisiyi, a ko ṣe akiyesi bii iṣupọ ṣe kọ ẹkọ nipa isubu ti alagbata ati bi a ṣe yan oludari tuntun. Lati loye bii Kafka ṣe n ṣiṣẹ pẹlu awọn ipin nẹtiwọọki, o nilo akọkọ lati loye faaji ifọkanbalẹ.

Iṣupọ Kafka kọọkan ni a gbe lọ pẹlu iṣupọ Zookeeper, eyiti o jẹ iṣẹ isọdọkan pinpin ti o fun laaye eto lati de ipohunpo lori diẹ ninu awọn ipinlẹ ti a fun, ni iṣaju aitasera lori wiwa. Iyọọda ti ọpọlọpọ awọn apa Zookeeper ni a nilo lati fọwọsi awọn iṣẹ kika ati kikọ.

Zookeeper tọju ipo iṣupọ naa:

  • Akojọ awọn akọle, awọn apakan, iṣeto ni, awọn ẹda adari lọwọlọwọ, awọn ẹda ti o fẹ.
  • Awọn ọmọ ẹgbẹ iṣupọ. Olukuluku alagbata pingi iṣupọ Zookeeper. Ti ko ba gba ping laarin akoko kan pato, lẹhinna Zookeeper ṣe igbasilẹ alagbata bi ko si.
  • Yiyan akọkọ ati apoju apa fun oludari.

Ipin oludari jẹ ọkan ninu awọn alagbata Kafka ti o ni iduro fun yiyan awọn oludari ajọra. Zookeeper fi awọn ifitonileti ranṣẹ si oludari nipa ẹgbẹ iṣupọ ati awọn iyipada koko, ati pe oludari gbọdọ ṣiṣẹ lori awọn ayipada wọnyi.

Fun apẹẹrẹ, jẹ ki a mu koko tuntun kan pẹlu awọn ipin mẹwa ati ifosiwewe ẹda ti 3. Alakoso gbọdọ yan oludari fun ipin kọọkan, n gbiyanju lati pin kaakiri awọn oludari ni aipe laarin awọn alagbata.

Fun oluṣakoso apakan kọọkan:

  • imudojuiwọn alaye ni Zookeeper nipa ISR ati olori;
  • Fi LeaderAndISRCommand ranṣẹ si alagbata kọọkan ti o gbalejo ẹda ti ipin yii, sọfun awọn alagbata nipa ISR ati adari.

Nigbati alagbata ti o ni adari ba ṣubu, Zookeeper fi ifitonileti ranṣẹ si oludari, ati pe o yan oludari tuntun kan. Lẹẹkansi, oludari akọkọ ṣe imudojuiwọn Zookeeper ati lẹhinna fi aṣẹ ranṣẹ si alagbata kọọkan ti n sọ fun wọn nipa iyipada olori.

Olori kọọkan jẹ iduro fun igbanisiṣẹ ISRs. Ètò replica.lag.time.max.ms pinnu ẹni tí yóò wọ ibẹ̀. Nigbati ISR ​​ba yipada, oludari n gbe alaye tuntun si Zookeeper.

Zookeeper nigbagbogbo ni ifitonileti ti eyikeyi awọn ayipada nitori pe ni iṣẹlẹ ti ikuna, iṣakoso awọn iyipada laisiyonu si oludari tuntun kan.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 21. Kafka ipohunpo

Ilana atunṣe

Loye awọn alaye ti ẹda tun ṣe iranlọwọ fun ọ lati ni oye awọn oju iṣẹlẹ ipadanu data ti o pọju.

Awọn ibeere iṣapẹẹrẹ, Aiṣedeede Ipari Wọle (LEO) ati Samisi Highwater (HW)

A ro pe awọn ọmọlẹyin lorekore firanṣẹ awọn ibeere wiwa si adari. Aarin aiyipada jẹ 500ms. Eyi yato si RabbitMQ ni pe ni RabbitMQ atunṣe kii ṣe ipilẹṣẹ nipasẹ digi ti isinyi ṣugbọn nipasẹ oluwa. Titunto si titari awọn ayipada si awọn digi.

Olori ati gbogbo awọn ọmọlẹyin ṣafipamọ Log End Offset (LEO) ati aami Highwater (HW). Aami LEO n tọju aiṣedeede ti ifiranṣẹ ti o kẹhin ni ẹda agbegbe, ati pe HW ṣe idaduro aiṣedeede ti o kẹhin. Ranti pe fun ipo ifaramọ, ifiranṣẹ naa gbọdọ wa ni itara kọja gbogbo awọn ẹda ISR. Eyi tumọ si pe LEO nigbagbogbo jẹ diẹ siwaju HW.

Nigbati adari ba gba ifiranṣẹ kan, o tọju rẹ ni agbegbe. Atẹle naa ṣe ibeere wiwa nipasẹ gbigbe LEO rẹ. Olori lẹhinna firanṣẹ ipele ti awọn ifiranṣẹ ti o bẹrẹ lati LEO yii ati tun gbejade HW lọwọlọwọ. Nigbati adari ba gba alaye ti gbogbo awọn ẹda ti o ti fipamọ ifiranṣẹ naa ni aiṣedeede ti a fun, o gbe ami HW naa. Alakoso nikan le gbe HW, ati nitorinaa gbogbo awọn ọmọlẹyin yoo mọ iye lọwọlọwọ ninu awọn idahun si ibeere wọn. Eyi tumọ si pe awọn ọmọlẹyin le duro lẹhin oludari ni ifiranṣẹ mejeeji ati imọ HW. Awọn onibara gba awọn ifiranṣẹ nikan titi di HW lọwọlọwọ.

Ṣe akiyesi pe "tẹsiwaju" tumọ si kikọ si iranti, kii ṣe disk. Fun iṣẹ ṣiṣe, Kafka muṣiṣẹpọ si disk ni aarin kan pato. RabbitMQ tun ni iru aarin, ṣugbọn yoo fi iwe-ẹri ranṣẹ si akede nikan lẹhin oluwa ati gbogbo awọn digi ti kọ ifiranṣẹ si disk. Awọn olupilẹṣẹ Kafka, fun awọn idi iṣẹ ṣiṣe, pinnu lati firanṣẹ ack ni kete ti ifiranṣẹ naa ti kọ si iranti. Kafka bets ti apọju aiṣedeede eewu ti ipamọ awọn ifiranṣẹ ti o gba ni ṣoki ni iranti nikan.

Ikuna olori

Nigbati adari ba ṣubu, Zookeeper leti oludari, ati pe o yan ẹda adari tuntun kan. Olori tuntun ṣeto ami HW tuntun ni ibamu si LEO rẹ. Awọn ọmọlẹyin lẹhinna gba alaye nipa oludari tuntun. Da lori ẹya Kafka, ọmọlẹyin yoo yan ọkan ninu awọn oju iṣẹlẹ meji:

  1. Yoo ge akọọlẹ agbegbe si HW ti a mọ ati firanṣẹ ibeere kan si oludari tuntun fun awọn ifiranṣẹ lẹhin ami yii.
  2. Yoo firanṣẹ ibeere kan si adari lati wa HW ni akoko ti o yan oludari, ati lẹhinna ge log naa si aiṣedeede yii. Yoo bẹrẹ ṣiṣe awọn ibeere wiwa igbakọọkan ti o bẹrẹ ni aiṣedeede yii.

Olutẹle le nilo lati ge akọọlẹ naa fun awọn idi wọnyi:

  • Nigbati adari ba kuna, ọmọlẹhin akọkọ ninu eto ISR ti o forukọsilẹ pẹlu Zookeeper ṣẹgun idibo naa o si di adari. Gbogbo awọn ọmọlẹyin lori ISR, botilẹjẹpe a kà si “ni imuṣiṣẹpọ,” le ma ti gba awọn ẹda ti gbogbo awọn ifiranṣẹ lati ọdọ oludari iṣaaju. O ṣee ṣe patapata pe ọmọlẹhin ifihan ko ni ẹda ti o ni imudojuiwọn julọ. Kafka ṣe idaniloju pe ko si iyatọ laarin awọn ẹda. Nitorinaa, lati yago fun awọn iyatọ, ọmọlẹyin kọọkan gbọdọ ge log rẹ si iye HW ti oludari tuntun ni akoko idibo rẹ. Eyi jẹ idi miiran ti iṣeto acks=gbogbo ki pataki fun aitasera.
  • Awọn ifiranṣẹ ti wa ni igbakọọkan kọ si disk. Ti gbogbo awọn apa iṣupọ ba kuna ni akoko kanna, lẹhinna awọn ẹda pẹlu awọn aiṣedeede oriṣiriṣi yoo wa ni ipamọ sori awọn disiki naa. O ṣee ṣe pe nigbati awọn alagbata ba pada wa lori ayelujara, oludari tuntun ti o yan yoo wa lẹhin awọn ọmọlẹhin rẹ nitori pe o ti fipamọ si disk ṣaaju awọn miiran.

Ijọpọ pẹlu iṣupọ

Nigbati o ba tun darapọ mọ iṣupọ, awọn ẹda naa ṣe kanna bii nigbati adari ba kuna: wọn ṣayẹwo ẹda adari ati ge iwe akọọlẹ wọn si HW rẹ (ni akoko idibo). Ni ifiwera, RabbitMQ ṣe itọju awọn apa isọdọkan bi tuntun patapata. Ni awọn ọran mejeeji, alagbata sọ eyikeyi ipo ti o wa tẹlẹ. Ti a ba lo amuṣiṣẹpọ laifọwọyi, lẹhinna oluwa gbọdọ tun ṣe gbogbo akoonu lọwọlọwọ si digi tuntun ni ọna “jẹ ki gbogbo agbaye duro”. Titunto si ko gba eyikeyi kika tabi kọ awọn iṣẹ lakoko iṣẹ yii. Ọna yii ṣẹda awọn iṣoro ni awọn ila nla.

Kafka jẹ akọọlẹ pinpin ati ni gbogbogbo o tọju awọn ifiranṣẹ diẹ sii ju isinyi RabbitMQ, nibiti a ti yọ data kuro ni isinyi lẹhin ti o ti ka. Awọn ila ti nṣiṣe lọwọ yẹ ki o wa ni iwọn kekere. Ṣugbọn Kafka jẹ log pẹlu eto imulo idaduro tirẹ, eyiti o le ṣeto akoko ti awọn ọjọ tabi awọn ọsẹ. Idilọwọ awọn isinyi ati ọna imuṣiṣẹpọ ni kikun jẹ itẹwẹgba rara fun akọọlẹ pinpin kan. Dipo, awọn ọmọlẹyin Kafka nìkan ge log wọn si HW olori (ni akoko idibo rẹ) ti ẹda wọn ba wa niwaju olori. Ninu ọran ti o ṣeeṣe diẹ sii, nigbati ọmọlẹyin ba wa lẹhin, o kan bẹrẹ ṣiṣe awọn ibeere wiwa ti o bẹrẹ pẹlu LEO lọwọlọwọ rẹ.

Titun tabi awọn ọmọlẹyin ti o darapọ mọ bẹrẹ ni ita ISR ati pe ko ṣe alabapin ninu awọn adehun. Wọn nìkan ṣiṣẹ lẹgbẹẹ ẹgbẹ naa, gbigba awọn ifiranṣẹ ni yarayara bi wọn ti le titi ti wọn yoo fi gba olori ati tẹ ISR. Ko si titiipa-in ati pe ko si iwulo lati jabọ gbogbo data rẹ.

Isonu ti Asopọmọra

Kafka ni awọn paati diẹ sii ju RabbitMQ lọ, nitorinaa o ni eto awọn ihuwasi ti o ni idiwọn diẹ sii nigbati iṣupọ ba ge-asopo. Ṣugbọn Kafka jẹ apẹrẹ akọkọ fun awọn iṣupọ, nitorinaa awọn ojutu ni ero daradara daradara.

Ni isalẹ wa ni ọpọlọpọ awọn oju iṣẹlẹ ikuna asopọ:

  • Oju iṣẹlẹ 1: Olutẹle ko ri olori, ṣugbọn tun ri Zookeeper.
  • Oju iṣẹlẹ 2: Olori ko rii awọn ọmọlẹyin eyikeyi, ṣugbọn o tun rii Zookeeper.
  • Oju iṣẹlẹ 3: Olutẹle ri olori, ṣugbọn ko ri Zookeeper.
  • Oju iṣẹlẹ 4: Olori wo awọn ọmọlẹyin, ṣugbọn ko ri Zookeeper.
  • Oju iṣẹlẹ 5: Atẹle naa ya sọtọ patapata si awọn apa Kafka miiran ati Zookeeper.
  • Oju iṣẹlẹ 6: Olori jẹ iyatọ patapata si awọn apa Kafka miiran ati Zookeeper.
  • Oju iṣẹlẹ 7: Ipin oludari Kafka ko le rii oju ipade Kafka miiran.
  • Oju iṣẹlẹ 8: Alakoso Kafka ko rii Zookeeper.

Oju iṣẹlẹ kọọkan ni ihuwasi tirẹ.

Oju iṣẹlẹ 1: Olutẹle ko rii oludari, ṣugbọn tun rii Zookeeper

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 22. ohn 1: ISR ti mẹta replicas

Ikuna Asopọmọra yapa alagbata 3 lati awọn alagbata 1 ati 2, ṣugbọn kii ṣe lati Zookeeper. Alagbata 3 ko le firanṣẹ awọn ibeere wiwa mọ. Lẹhin ti akoko ti kọja replica.lag.time.max.ms o ti yọ kuro lati ISR ​​ati pe ko ṣe alabapin ninu awọn ifọrọranṣẹ. Ni kete ti Asopọmọra ti tun pada, yoo tun bẹrẹ awọn ibeere wiwa ati darapọ mọ ISR nigbati o ba de ọdọ oludari. Zookeeper yoo tẹsiwaju lati gba awọn pings ati ro pe alagbata wa laaye ati daradara.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 23. Oju iṣẹlẹ 1: A ti yọ alagbata kuro ni ISR ​​ti ko ba si ibeere gbigba lati ọdọ rẹ laarin aarin replica.lag.time.max.ms

Ko si pipin-ọpọlọ tabi idadoro ipade bi ninu RabbitMQ. Dipo, apọju ti dinku.

Oju iṣẹlẹ 2: Alakoso ko rii awọn ọmọlẹyin eyikeyi, ṣugbọn tun rii Zookeeper

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 24. Oju iṣẹlẹ 2. Olori ati awọn ọmọ-ẹhin meji

Pipin ni Asopọmọra nẹtiwọọki n ya adari kuro ninu awọn ọmọlẹyin, ṣugbọn alagbata tun le rii Zookeeper. Gẹgẹbi oju iṣẹlẹ akọkọ, ISR dinku, ṣugbọn ni akoko yii nikan si oludari bi gbogbo awọn ọmọlẹyin ṣe dẹkun fifiranṣẹ awọn ibeere wiwa. Lẹẹkansi, ko si pipin ogbon. Dipo, isonu ti apọju wa fun awọn ifiranṣẹ titun titi ti asopọ yoo fi tun pada. Zookeeper tẹsiwaju lati gba awọn pings ati gbagbọ pe alagbata wa laaye ati daradara.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 25. Oju iṣẹlẹ 2. ISR ti dinku si olori nikan

Oju iṣẹlẹ 3. Olutẹle ri olori, ṣugbọn ko ri Zookeeper

Olutẹle ti yapa si Zookeeper, ṣugbọn kii ṣe lati ọdọ alagbata pẹlu olori. Bi abajade, ọmọlẹhin naa tẹsiwaju lati ṣe awọn ibeere wiwa ati jẹ ọmọ ẹgbẹ ti ISR. Zookeeper ko gba awọn pings mọ ati forukọsilẹ jamba alagbata, ṣugbọn niwọn bi o ti jẹ ọmọlẹyin nikan, ko si awọn abajade lẹhin imularada.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 26. Oju iṣẹlẹ 3: Atẹle tẹsiwaju lati firanṣẹ awọn ibeere wiwa si olori

Oju iṣẹlẹ 4. Olori wo awọn ọmọlẹyin, ṣugbọn ko ri Zookeeper

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 27. Oju iṣẹlẹ 4. Olori ati awọn ọmọ-ẹhin meji

Olori naa yapa si Zookeeper, ṣugbọn kii ṣe lati ọdọ awọn alagbata pẹlu awọn ọmọlẹyin.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 28. ohn 4: Olori sọtọ lati Zookeeper

Lẹhin akoko diẹ, Zookeeper yoo forukọsilẹ ikuna alagbata kan ati ki o sọ fun oludari nipa rẹ. Oun yoo yan olori titun laarin awọn ọmọlẹhin rẹ. Sibẹsibẹ, oludari atilẹba yoo tẹsiwaju lati ronu pe o jẹ oludari ati pe yoo tẹsiwaju lati gba awọn titẹ sii lati acks=1. Awọn ọmọlẹyin ko tun firanṣẹ awọn ibeere wiwa fun u, nitorinaa oun yoo ro pe wọn ti ku ati gbiyanju lati dinku ISR si funrararẹ. Ṣugbọn niwọn igba ti ko ni asopọ si Zookeeper, kii yoo ni anfani lati ṣe eyi, ati pe ni aaye yẹn yoo kọ lati gba awọn titẹ sii siwaju sii.

Awọn ifiranṣẹ acks=gbogbo kii yoo gba ifọwọsi nitori ISR ​​akọkọ wa lori gbogbo awọn ẹda, ati awọn ifiranṣẹ ko de ọdọ wọn. Nigbati oludari atilẹba ba gbiyanju lati yọ wọn kuro ni ISR, kii yoo lagbara lati ṣe bẹ ati pe yoo da gbigba awọn ifiranṣẹ eyikeyi duro rara.

Laipẹ awọn alabara ṣe akiyesi iyipada ninu oludari ati bẹrẹ fifiranṣẹ awọn igbasilẹ si olupin tuntun. Ni kete ti nẹtiwọọki ba tun pada, adari atilẹba rii pe kii ṣe adari ati ge log rẹ si iye HW ti oludari tuntun ni ni akoko ikuna lati yago fun iyatọ log. Yoo bẹrẹ fifiranṣẹ awọn ibeere wiwa si adari tuntun. Gbogbo awọn igbasilẹ lati ọdọ oludari atilẹba ti ko ṣe atunṣe si oludari tuntun ti sọnu. Iyẹn ni, awọn ifiranṣẹ ti ko jẹwọ nipasẹ oludari atilẹba ni iṣẹju diẹ yẹn nigbati awọn oludari meji n ṣiṣẹ yoo padanu.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 29. Oju iṣẹlẹ 4. Olori lori alagbata 1 di ọmọlẹyin lẹhin ti nẹtiwọki ti tun pada.

Oju iṣẹlẹ 5: Atẹle naa ya sọtọ patapata si awọn apa Kafka miiran ati Zookeeper

Atẹle naa ti ya sọtọ patapata lati awọn apa Kafka miiran ati Zookeeper. O kan yọ ararẹ kuro ni ISR ​​titi ti nẹtiwọọki yoo fi tun pada, ati lẹhinna mu pẹlu awọn miiran.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 30. Oju iṣẹlẹ 5: Ọmọlẹhin ti o ya sọtọ ni a yọkuro lati ISR

Oju iṣẹlẹ 6: Olori jẹ iyatọ patapata si awọn apa Kafka miiran ati Zookeeper

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 31. Oju iṣẹlẹ 6. Olori ati awọn ọmọ-ẹhin meji

Olori ti ya sọtọ patapata lati ọdọ awọn ọmọlẹyin rẹ, oludari ati Zookeeper. Fun igba diẹ yoo tẹsiwaju lati gba awọn titẹ sii lati acks=1.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 32. ohn 6: Ya sọtọ olori lati miiran Kafka ati Zookeeper apa

Ti ko gba awọn ibeere lẹhin ipari replica.lag.time.max.ms, yoo gbiyanju lati dinku ISR si ara rẹ, ṣugbọn kii yoo ni anfani lati ṣe bẹ nitori pe ko si ibaraẹnisọrọ pẹlu Zookeeper, lẹhinna o yoo dawọ gbigba awọn kikọ.

Nibayi, Zookeeper yoo samisi alagbata ti o ya sọtọ bi okú ati oludari yoo yan oludari tuntun kan.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 33. Oju iṣẹlẹ 6. Olori meji

Olori atilẹba le gba awọn titẹ sii fun iṣẹju diẹ, ṣugbọn lẹhinna da gbigba awọn ifiranṣẹ eyikeyi duro. Awọn alabara ti ni imudojuiwọn ni gbogbo iṣẹju 60 pẹlu metadata tuntun. Wọn yoo sọ fun iyipada olori ati pe yoo bẹrẹ fifiranṣẹ awọn titẹ sii si olori tuntun.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 34. ohn 6: Awọn olupese yipada si titun kan olori

Gbogbo awọn titẹ sii ti a fọwọsi nipasẹ oludari atilẹba lati igba isonu ti Asopọmọra yoo sọnu. Ni kete ti nẹtiwọọki ba ti tun pada, adari atilẹba yoo ṣawari nipasẹ Zookeeper pe kii ṣe adari mọ. Lẹhinna yoo ge akọọlẹ rẹ si HW ti oludari tuntun ni akoko idibo ati bẹrẹ fifiranṣẹ awọn ibeere bi ọmọlẹyin.

RabbitMQ vs Kafka: Ifarada Aṣiṣe ati Wiwa giga
Iresi. 35. Oju iṣẹlẹ 6: Olori atilẹba di ọmọlẹyin lẹhin ti Asopọmọra nẹtiwọọki ti tun pada

Ni ipo yii, iyapa ọgbọn le waye fun igba diẹ, ṣugbọn ti o ba jẹ nikan acks=1 и min.insync.replicas tun 1. Mogbonwa Iyapa laifọwọyi dopin boya lẹhin ti awọn nẹtiwọki ti wa ni pada, nigbati awọn atilẹba olori mọ wipe o ti wa ni ko si ohun to olori, tabi nigbati gbogbo awọn onibara mọ pe olori ti yi pada ki o si bẹrẹ kikọ si titun olori - eyikeyi ti o ṣẹlẹ akọkọ. Ni eyikeyi idiyele, diẹ ninu awọn ifiranṣẹ yoo sọnu, ṣugbọn pẹlu nikan acks=1.

Iyatọ miiran wa ti oju iṣẹlẹ yii nibiti, ṣaaju pipin nẹtiwọọki, awọn ọmọlẹyin ṣubu lẹhin ati oludari fisinuirindigbindigbin ISR si ararẹ nikan. Lẹhinna o di ipinya nitori isonu ti Asopọmọra. A titun olori ti wa ni dibo, ṣugbọn awọn atilẹba olori tẹsiwaju lati gba awọn titẹ sii, ani acks=gbogbo, nitori ko si ẹlomiran ni ISR ​​ayafi rẹ. Awọn igbasilẹ wọnyi yoo sọnu ni kete ti nẹtiwọki ba ti mu pada. Ọna kan ṣoṣo lati yago fun aṣayan yii ni min.insync.replicas = 2.

Oju iṣẹlẹ 7: Node Adarí Kafka Ko le Wo Node Kafka miiran

Ni gbogbogbo, ni kete ti asopọ pẹlu ipade Kafka kan ti sọnu, oludari kii yoo ni anfani lati atagba eyikeyi alaye iyipada olori si rẹ. Ninu ọran ti o buru julọ, eyi yoo ja si ipinya ọgbọn igba kukuru, bi ninu oju iṣẹlẹ 6. Ni igbagbogbo ju bẹẹkọ, alagbata naa kii yoo di oludije fun olori ti igbehin ba kuna.

Oju iṣẹlẹ 8: Alakoso Kafka ko rii Zookeeper

Zookeeper kii yoo gba ping kan lati ọdọ oludari ti o ṣubu ati pe yoo yan oju ipade Kafka tuntun bi oludari. Oluṣakoso atilẹba le tẹsiwaju lati ṣafihan ararẹ bi iru bẹ, ṣugbọn ko gba awọn iwifunni lati Zookeeper, nitorinaa kii yoo ni awọn iṣẹ ṣiṣe eyikeyi lati ṣe. Ni kete ti a ti tun nẹtiwọọki naa pada, yoo mọ pe oun kii ṣe oludari mọ, ṣugbọn o ti di ipade Kafka deede.

Awọn ipari lati awọn oju iṣẹlẹ

A rii pe pipadanu isọdọmọ ọmọlẹyin ko ja si ipadanu ifiranṣẹ, ṣugbọn lasan ni igba diẹ dinku apọju titi ti nẹtiwọọki yoo tun pada. Eyi, dajudaju, le ja si pipadanu data ti ọkan tabi diẹ ẹ sii awọn apa ti sọnu.

Ti adari ba yapa si Zookeeper nitori isonu ti asopọ, eyi le ja si awọn ifiranṣẹ ti sọnu lati acks=1. Aini ibaraẹnisọrọ pẹlu Zookeeper fa pipin ọgbọn kukuru pẹlu awọn oludari meji. Iṣoro yii jẹ ipinnu nipasẹ paramita acks=gbogbo.

Apaadi min.insync.replicas sinu awọn ẹda meji tabi diẹ sii n pese idaniloju ni afikun pe iru awọn oju iṣẹlẹ igba diẹ kii yoo ja si awọn ifiranṣẹ ti o sọnu bi ninu Ifilelẹ 6.

Akopọ ti sọnu Awọn ifiranṣẹ

Jẹ ki a ṣe atokọ gbogbo awọn ọna ti o le padanu data ni Kafka:

  • Ikuna olori eyikeyi ti awọn ifiranṣẹ ba jẹrisi nipa lilo acks=1
  • Eyikeyi iyipada alaimọ ti olori, iyẹn ni, si ọmọlẹhin kan ni ita ISR, paapaa pẹlu acks=gbogbo
  • Yasọtọ adari lati Zookeeper ti awọn ifiranṣẹ ba jẹrisi nipa lilo acks=1
  • Ipinya pipe ti oludari ti o ti dinku ẹgbẹ ISR tẹlẹ si ararẹ. Gbogbo awọn ifiranṣẹ yoo sọnu, paapaa acks=gbogbo. Eleyi jẹ otitọ nikan ti o ba min.insync.replicas=1.
  • Awọn ikuna nigbakanna ti gbogbo awọn apa ipin. Nitori awọn ifiranṣẹ ti wa ni gba lati iranti, diẹ ninu awọn le ko sibẹsibẹ wa ni kọ si disk. Lẹhin atunbere awọn olupin, diẹ ninu awọn ifiranṣẹ le sonu.

Awọn iyipada olori alaimọ ni a le yago fun nipasẹ boya ni idinamọ wọn tabi aridaju o kere ju awọn isọdọtun meji. Awọn julọ ti o tọ iṣeto ni a apapo acks=gbogbo и min.insync.replicas diẹ sii ju 1.

Ifiwewe taara ti igbẹkẹle ti RabbitMQ ati Kafka

Lati rii daju pe igbẹkẹle ati wiwa giga, awọn iru ẹrọ mejeeji ṣe imuse eto isọdọtun akọkọ ati atẹle. Sibẹsibẹ, RabbitMQ ni igigirisẹ Achilles kan. Nigbati o ba tun so pọ lẹhin ikuna, awọn apa sọ data wọn silẹ ati mimuuṣiṣẹpọ ti dina. Whammy ilọpo meji yii n pe sinu ibeere gigun ti awọn ila nla ni RabbitMQ. Iwọ yoo ni lati gba boya idinku idinku tabi awọn akoko idinamọ gigun. Idinku apọju pọ si eewu ti pipadanu data nla. Ṣugbọn ti awọn ila ba wa ni kekere, lẹhinna fun idi ti apọju, awọn akoko kukuru ti aiwa (awọn iṣẹju diẹ) le ṣee ṣe pẹlu lilo awọn igbiyanju asopọ ti o tun ṣe.

Kafka ko ni iṣoro yii. O da data silẹ nikan lati aaye iyatọ laarin oludari ati ọmọlẹhin. Gbogbo data pinpin ti wa ni ipamọ. Ni afikun, atunkọ ko ni dènà eto naa. Olori tẹsiwaju lati gba awọn ifiweranṣẹ lakoko ti ọmọlẹyin tuntun ba mu, nitorinaa fun awọn oluyapa, didapọ tabi darapọ mọ iṣupọ naa di iṣẹ ṣiṣe ti ko ṣe pataki. Nitoribẹẹ, awọn ọran tun wa bii bandiwidi nẹtiwọọki lakoko ẹda. Ti o ba ṣafikun awọn ọmọlẹyin pupọ ni akoko kanna, o le ba pade opin bandiwidi kan.

RabbitMQ ga ju Kafka lọ ni igbẹkẹle nigbati ọpọlọpọ awọn olupin ni iṣupọ kan kuna ni akoko kanna. Gẹgẹbi a ti sọ tẹlẹ, RabbitMQ firanṣẹ ijẹrisi kan si akede nikan lẹhin ti a ti kọ ifiranṣẹ si disk nipasẹ oluwa ati gbogbo awọn digi. Ṣugbọn eyi ṣe afikun idaduro afikun fun awọn idi meji:

  • fsync gbogbo diẹ ọgọrun milliseconds
  • Ikuna ti digi le ṣee ṣe akiyesi nikan lẹhin igbesi aye awọn apo-iwe ti o ṣayẹwo wiwa ti ipade kọọkan (ami ami net) ti pari. Ti digi ba fa fifalẹ tabi ṣubu, eyi ṣe afikun idaduro.

Kafka ká tẹtẹ ni wipe ti o ba ti a ifiranṣẹ ti wa ni fipamọ kọja ọpọ apa, o le jẹwọ awọn ifiranṣẹ bi ni kete bi nwọn ti lu iranti. Nitori eyi, eewu wa ti sisọnu awọn ifiranṣẹ ti iru eyikeyi (paapaa acks=gbogbo, min.insync.replicas=2) ni ọran ti ikuna nigbakanna.

Iwoye, Kafka ṣe afihan iṣẹ ṣiṣe sọfitiwia to dara julọ ati pe a ṣe apẹrẹ lati ilẹ fun awọn iṣupọ. Nọmba awọn ọmọlẹyin le pọ si 11 ti o ba jẹ dandan fun igbẹkẹle. Ipin isọdọtun 5 ati nọmba ti o kere ju ti awọn ẹda ni imuṣiṣẹpọ min.insync.replicas=3 yoo jẹ ki ipadanu ifiranṣẹ jẹ iṣẹlẹ ti o ṣọwọn pupọ. Ti awọn amayederun rẹ ba le ṣe atilẹyin ipin isọdọtun yii ati ipele apọju, lẹhinna o le yan aṣayan yii.

Iṣijọpọ RabbitMQ dara fun awọn ila kekere. Ṣugbọn paapaa awọn ila kekere le dagba ni kiakia nigbati ijabọ eru ba wa. Ni kete ti awọn ila ba tobi, iwọ yoo ni lati ṣe awọn yiyan lile laarin wiwa ati igbẹkẹle. Iṣijọpọ RabbitMQ dara julọ fun awọn ipo ti kii ṣe aṣoju nibiti awọn anfani ti irọrun RabbitMQ ju awọn aila-nfani eyikeyi ti ikojọpọ rẹ lọ.

Apagun kan si ailagbara RabbitMQ si awọn laini nla ni lati fọ wọn sinu awọn ila kekere pupọ. Ti o ko ba nilo aṣẹ pipe ti gbogbo isinyi, ṣugbọn awọn ifiranṣẹ ti o yẹ nikan (fun apẹẹrẹ, awọn ifiranṣẹ lati ọdọ alabara kan), tabi ko paṣẹ ohunkohun rara, lẹhinna aṣayan yii jẹ itẹwọgba: wo iṣẹ akanṣe mi. Rebalancer lati pin awọn ti isinyi (ise agbese jẹ ṣi ni ohun tete ipele).

Lakotan, maṣe gbagbe nipa nọmba awọn idun ninu iṣupọ ati awọn ọna ṣiṣe ẹda ti RabbitMQ ati Kafka. Lori akoko, awọn ọna šiše ti di diẹ ogbo ati idurosinsin, sugbon ko si ifiranṣẹ yoo lailai jẹ 100% ailewu lati pipadanu! Ni afikun, awọn ijamba nla waye ni awọn ile-iṣẹ data!

Ti mo ba padanu nkankan, ṣe aṣiṣe, tabi ti o ko ni ibamu pẹlu eyikeyi awọn aaye, lero ọfẹ lati kọ ọrọ kan tabi kan si mi.

Nigbagbogbo a beere lọwọ mi: “Kini lati yan, Kafka tabi RabbitMQ?”, “Ewo ni pẹpẹ ti o dara julọ?”. Otitọ ni pe o da lori ipo rẹ gaan, iriri lọwọlọwọ, ati bẹbẹ lọ Mo ṣiyemeji lati fun ero mi nitori pe yoo jẹ pupọ ju ti iṣaju lati ṣeduro pẹpẹ kan fun gbogbo awọn ọran lilo ati awọn idiwọn ti o ṣeeṣe. Mo kọ awọn nkan lẹsẹsẹ yii ki o le ṣe agbekalẹ ero tirẹ.

Mo fẹ sọ pe awọn ọna ṣiṣe mejeeji jẹ awọn oludari ni agbegbe yii. Mo le jẹ aibikita diẹ nitori lati iriri mi pẹlu awọn iṣẹ akanṣe Mo ṣọ lati ni iye awọn nkan bii aṣẹ ifiranšẹ iṣeduro ati igbẹkẹle.

Mo rii awọn imọ-ẹrọ miiran ti ko ni igbẹkẹle yii ati aṣẹ iṣeduro, lẹhinna Mo wo RabbitMQ ati Kafka ati mọ iye iyalẹnu ti awọn ọna ṣiṣe mejeeji wọnyi.

orisun: www.habr.com

Fi ọrọìwòye kun