RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo

В lahatsoratra farany Nijery ny clustering RabbitMQ izahay ho an'ny fandeferana diso sy ny fisian'ny avo. Andeha isika handinika lalina ny Apache Kafka.

Eto ny singan'ny replication dia ny fisarahana. Ny lohahevitra tsirairay dia manana fizarana iray na maromaro. Ny fizarana tsirairay dia manana mpitarika misy mpanaraka na tsy misy. Rehefa mamorona lohahevitra ianao dia mamaritra ny isan'ny fisarahana sy ny coefficient replication. Ny sanda mahazatra dia 3, izay midika hoe kopia telo: mpitarika iray ary mpanara-dia roa.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 1. Fizarana efatra no zaraina amin'ireo mpivarotra telo

Ny fangatahana mamaky sy manoratra rehetra dia mankany amin'ny mpitarika. Mandefa fangatahana tsindraindray any amin'ny mpitarika ny mpanaraka mba handraisana ireo hafatra farany. Tsy mitodika any amin'ny mpanaraka velively ny mpanjifa; ny farany dia tsy misy afa-tsy amin'ny fandeferana sy fandeferana diso.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo

Fizarana tsy fahombiazana

Rehefa tsy mahomby ny broker dia matetika tsy mahomby ny mpitarika ny fizarana maromaro. Ao amin'ny tsirairay amin'izy ireo, mpanara-dia avy amin'ny node iray hafa no lasa mpitarika. Raha ny marina, tsy izany foana no mitranga, satria misy fiantraikany ihany koa ny anton'ny fampifanarahana: raha misy mpanaraka synchronized, ary raha tsy izany, dia azo atao ny mivadika amin'ny kopia tsy mifanaraka. Aoka anefa tsy hanasarotra ny raharaha amin’izao fotoana izao.

Ny Broker 3 dia miala amin'ny tambajotra, ary mpitarika vaovao no voafidy ho an'ny fizarana 2 ao amin'ny broker 2.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 2. Maty ny Broker 3 ary ny mpanaraka azy ao amin'ny broker 2 dia voafidy ho mpitarika vaovao amin'ny fizarana 2

Avy eo ny broker 1 dia miala ary ny fizarana 1 koa dia very ny mpitarika azy, izay ny anjara asany dia mandalo amin'ny broker 2.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 3. Misy mpivarotra iray sisa. Ny mpitarika rehetra dia ao amin'ny broker iray tsy misy redundansy

Rehefa miverina an-tserasera ny broker 1 dia manampy mpanaraka efatra izy io, manome fihenam-bidy ho an'ny fizarana tsirairay. Saingy mbola nijanona tao amin'ny broker 2 ny mpitarika rehetra.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 4. Mijanona ao amin'ny broker ny mpitarika 2

Rehefa tonga ny broker 3 dia miverina amin'ny kopia telo isaky ny fizarana. Saingy ny mpitarika rehetra dia mbola ao amin'ny broker 2.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 5. Fametrahana mpitarika tsy voalanjalanja taorian'ny famerenana amin'ny laoniny ny broker 1 sy 3

Kafka dia manana fitaovana ho an'ny famerenan'ny mpitarika tsara kokoa noho ny RabbitMQ. Tao ianao dia tsy maintsy nampiasa plugin na script an'ny antoko fahatelo izay nanova ny politikan'ny fifindrana ny node master amin'ny alàlan'ny fampihenana ny famerana mandritra ny fifindra-monina. Ho fanampin'izany, ho an'ny filaharana lehibe dia tsy maintsy nanaiky ny tsy fisiana izahay nandritra ny fampifanarahana.

Ny Kafka dia manana ny foto-kevitry ny "replika tiana" ho an'ny andraikitry ny mpitarika. Rehefa noforonina ny fizarana lohahevitra dia manandrana mizara mpitarika mitovy amin'ny node ny Kafka ary manamarika ireo mpitarika voalohany ireo ho tiany. Rehefa mandeha ny fotoana, noho ny famerenan'ny mpizara, ny tsy fahombiazana ary ny fahatapahan'ny fifandraisana, dia mety hiafara amin'ny nodes hafa ny mpitarika, toy ny tranga faran'izay voalaza etsy ambony.

Mba hamahana izany, Kafka dia manolotra safidy roa:

  • Option auto.leader.rebalance.enable=true mamela ny node mpanara-maso hamerenana ho azy ireo mpitarika hiverina amin'ny kopia tiany ary hamerina ny fizarana fanamiana.
  • Ny mpandrindra dia afaka mitantana ny script kafka-preferred-replica-election.sh ho an'ny famerenana amin'ny tanana.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 6. Replika aorian'ny fampifandanjana

Ity dia dikan-teny notsorina tamin'ny tsy fahombiazana, saingy sarotra kokoa ny zava-misy, na dia tsy misy zavatra sarotra loatra aza eto. Izany rehetra izany dia midina amin'ny replicas synchronize (In-Sync Replicas, ISR).

Replika voarindra (ISR)

Ny ISR dia andiana dika mitovy amin'ny fizarazarana izay heverina ho "synchronized" (in-sync). Misy ny mpitarika, fa mety tsy hisy mpanara-dia. Ny mpanara-dia iray dia heverina ho voarindra raha toa ka nanao dika mitovy amin'ny hafatra rehetran'ny mpitarika izy alohan'ny hifaranan'ny elanelam-potoana. replica.lag.time.max.ms.

Esorina amin'ny seta ISR ny mpanaraka iray raha toa ka:

  • tsy nanao fangatahana hisafidy ny elanelam-potoana replica.lag.time.max.ms (heverina fa maty)
  • tsy nahavita nanavao nandritra ny elanelam-potoana replica.lag.time.max.ms (heverina ho miadana)

Manao fangatahana santionany ao anatin'ny elanelam-potoana ny mpanaraka replica.fetch.wait.max.ms, izay mandeha amin'ny 500ms.

Mba hanazavana mazava tsara ny tanjon'ny ISR dia mila mijery ny fanamafisana avy amin'ny mpamokatra sy ny toe-javatra tsy fahombiazana sasany. Afaka misafidy ny mpamokatra rehefa mandefa fanamafisana ny broker:

  • acks=0, tsy alefa ny fanamafisana
  • acks=1, ny fanamafisana dia alefa rehefa avy nanoratra hafatra tao amin'ny diariny eo an-toerana ny mpitarika
  • acks=all, ny fanamafisana dia alefa rehefa avy nanoratra ny hafatra ho an'ny logs eo an-toerana ny kopia rehetra ao amin'ny ISR

Ao amin'ny teny Kafka, raha namonjy hafatra ny ISR, dia "manolo-tena". Acks=all no safidy azo antoka indrindra, fa manampy fahatarana fanampiny. Andeha hojerentsika ohatra roa momba ny tsy fahombiazana sy ny fomba ifandraisan'ireo safidy 'acks' amin'ny foto-kevitra ISR.

Acks=1 sy ISR

Amin'ity ohatra ity dia ho hitantsika fa raha tsy miandry ny hafatra rehetra avy amin'ny mpanaraka rehetra ho voavonjy ny mpitarika, dia mety ho very ny angona raha tsy mahomby ny mpitarika. Ny fandehanana mankany amin'ny mpanaraka tsy voarindra dia azo alefa na ajanona amin'ny alàlan'ny fametrahana tsy madio.leader.election.enable.

Amin'ity ohatra ity, ny mpanamboatra dia manana ny sanda acks=1. Ny fizarana dia zaraina amin'ny brokers telo. Ny Broker 3 dia ao ambadika, nifanaraka tamin'ny mpitarika valo segondra lasa izay ary hafatra 7456 no ao aoriana. Ny Broker 1 dia iray segondra monja taorian'izay. Mandefa hafatra ny mpamokatra anay ary mahazo valiny haingana, tsy misy mpanaraka miadana na maty izay tsy andrasan'ny mpitarika.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 7. ISR misy kopia telo

Ny Broker 2 dia tsy nahomby ary ny mpamokatra dia mahazo fahadisoana amin'ny fifandraisana. Taorian'ny nandalovan'ny mpitarika ny broker 1 dia very hafatra 123 izahay. Ny mpanaraka ny broker 1 dia anisan'ny ISR, saingy tsy nifanaraka tanteraka tamin'ny mpitarika rehefa nianjera.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 8. Very ny hafatra rehefa mianjera

Amin'ny fanamafisana bootstrap.servers Ny mpanamboatra dia manana broker maromaro voatanisa ary afaka manontany broker iray hafa izay mpitarika fizarana vaovao. Avy eo dia mametraka fifandraisana amin'ny broker 1 ary manohy mandefa hafatra.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 9. Mitohy ny fandefasana hafatra aorian'ny fiatoana kely

Ny Broker 3 dia mbola lavitra kokoa. Manao fangatahana maka izany fa tsy afaka mi-sync. Mety ho noho ny fifandraisana amin'ny tambajotra miadana eo amin'ny broker, olana fitahirizana, sns. Nesorina tao amin'ny ISR izany. Ankehitriny ny ISR dia ahitana kopia iray - ny mpitarika! Manohy mandefa hafatra sy mahazo fanamafisana ny mpanamboatra.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 10. Nesorina tao amin'ny ISR ny mpanaraka ny broker 3

Ny Broker 1 dia midina ary ny andraikitry ny mpitarika dia mankany amin'ny broker 3 miaraka amin'ny fahaverezan'ny hafatra 15286! Ny mpanamboatra dia mahazo hafatra diso momba ny fifandraisana. Ny fifindrana ho mpitarika ivelan'ny ISR dia tsy azo natao afa-tsy noho ny toe-javatra unclean.leader.election.enable=marina. Raha apetraka ao diso, dia tsy hitranga ny tetezamita ary ho lavina ny fangatahana mamaky sy manoratra rehetra. Amin'ity tranga ity, miandry ny fiverenan'ny broker 1 miaraka amin'ny angon-drakiny tsy misy dikany ao amin'ny kopia, izay handray ny fitarihana indray.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 11. Mianjera ny Broker 1. Rehefa misy tsy fahombiazana dia maro ny hafatra very

Ny mpamokatra dia mametraka fifandraisana amin'ny broker farany ary mahita fa izy izao no mpitarika ny fizarana. Manomboka mandefa hafatra any amin'ny broker 3 izy.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 12. Aorian'ny fiatoana kely dia alefa any amin'ny fizarana 0 indray ny hafatra

Hitanay fa, ankoatry ny fahatapahana fohy hametrahana fifandraisana vaovao sy fitadiavana mpitarika vaovao, dia nandefa hafatra hatrany ny mpanamboatra. Ity fanamafisana ity dia miantoka ny fisian'ny tsy fitoviana (fiarovana data). Namoy hafatra an'arivony i Kafka fa nanohy nandray asa soratra vaovao.

Acks=rehetra ary ISR

Aleo averina indray ity scenario ity fa miaraka amin'ny acks=rehetra. Ny Broker 3 dia manana fe-potoana efatra segondra. Ny mpanamboatra dia mandefa hafatra amin'ny acks=rehetra, ary tsy mahazo valiny haingana izao. Ny mpitarika dia miandry ny hafatra ho voavonjy amin'ny kopia rehetra ao amin'ny ISR.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 13. ISR misy kopia telo. Miadana ny iray, ka miteraka fahatarana ny fandraketana

Aorian'ny fahatarana efatra segondra fanampiny, mandefa ack ny broker 2. Havaozina tanteraka izao ny kopia rehetra.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 14. Ny kopia rehetra dia mitahiry hafatra ary mandefa ack

Ny Broker 3 izao dia lavo lavitra ary nesorina tao amin'ny ISR. Mihena be ny fahatarana satria tsy misy replika miadana tavela ao amin'ny ISR. Broker 2 izao dia miandry ny broker 1 fotsiny, ary manana 500 ms eo ho eo izy.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 15. Nesorina tao amin'ny ISR ny kopia amin'ny broker 3

Avy eo dia mianjera ny broker 2 ary ny mpitarika dia mandalo amin'ny broker 1 tsy misy hafatra very.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 16. Broker 2 nianjera

Nahita mpitarika vaovao ny mpanamboatra ary nanomboka nandefa hafatra ho azy. Mihena bebe kokoa ny fahatarana satria ny ISR dia misy kopia iray izao! Noho izany ny safidy acks=rehetra tsy manampy redundancy.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 17. Ny kopia amin'ny broker 1 dia mitarika tsy misy mahavery hafatra

Avy eo ny broker 1 dia nianjera ary ny fitarihana dia mankany amin'ny broker 3 miaraka amin'ny fahaverezan'ny hafatra 14238!

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 18. Maty ny Broker 1 ary ny fiovan'ny mpitarika miaraka amin'ny toerana tsy madio dia miteraka fahaverezan'ny angona

Tsy afaka nametraka ny safidy izahay tsy madio.leader.election.enable amin'ny dikany marina. Amin'ny alàlan'ny default dia mitovy diso. Fikirana acks=rehetra с unclean.leader.election.enable=marina manome fahafahana miditra miaraka amin'ny fiarovana data fanampiny. Saingy araka ny hitanao dia mbola mety very ny hafatra.

Ahoana anefa raha te hampitombo ny fiarovana ny angona isika? Azonao atao ny mametraka tsy madio.leader.election.enable = diso, saingy tsy voatery hiaro antsika amin'ny fahaverezan'ny data izany. Raha lavo mafy ny mpitarika ary naka ny angon-drakitra niaraka taminy, dia mbola very ny hafatra, ary very ny fahafahana mandra-pamerenan'ny mpitantana ny toe-javatra.

Tsara kokoa ny miantoka fa ny hafatra rehetra dia miverimberina, ary raha tsy izany dia ario ny firaketana. Avy eo, farafaharatsiny amin'ny fomba fijerin'ny broker, ny fahaverezan'ny angona dia azo atao raha misy tsy fahombiazana roa na mihoatra.

Acks=all, min.insync.replicas ary ISR

Miaraka amin'ny fikirakirana lohahevitra min.insync.replicas Mampitombo ny haavon'ny fiarovana ny angona izahay. Andeha hojerentsika indray ny ampahany farany amin'ny scenario teo aloha, fa amin'ity indray mitoraka ity min.insync.replicas=2.

Noho izany ny broker 2 dia manana mpitarika kopia ary ny mpanaraka ny broker 3 dia nesorina tao amin'ny ISR.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 19. ISR avy amin'ny kopia roa

Mianjera ny Broker 2 ary mandalo amin'ny broker 1 ny mpitarika nefa tsy misy hafatra very. Fa ankehitriny ny ISR dia tsy misy afa-tsy dika mitovy. Tsy mahafeno ny isa kely indrindra handraisana firaketana izany, ary noho izany dia mamaly ny andrana manoratra amin'ny fahadisoana ny broker NotEnoughReplicas.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 20. Ny isan'ny ISR dia ambany iray noho ny voalaza ao amin'ny min.insync.replicas

Ity fandrindrana ity dia manafoana ny fisian'ny tsy fitoviana. Alohan'ny hanekena hafatra dia miantoka izahay fa voasoratra amin'ny kopia roa farafahakeliny. Manome fahatokisana bebe kokoa ny mpanamboatra izany. Eto, ny fahaverezan'ny hafatra dia tsy azo atao raha tsy misy replika roa miaraka amin'ny fotoana fohy mandra-pamerenana ilay hafatra amin'ny mpanaraka fanampiny, izay tsy azo inoana. Fa raha tena paranoïde ianao dia azonao atao ny mametraka ny fatran'ny replication ho 5, ary min.insync.replicas amin'ny 3. Eto dia tsy maintsy lavo amin'ny fotoana iray ny mpanakalo telo mba hamoy ny rakitra! Mazava ho azy fa mandoa an'io fahatokisana io amin'ny fahatarana fanampiny ianao.

Rehefa ilaina ny fidirana amin'ny fiarovana data

Toy ny ao amin'ny tranga miaraka amin'ny RabbitMQ, indraindray ilaina ny fidirana amin'ny fiarovana ny angona. Izao no tokony hoeritreretinao:

  • Afaka mamerina hadisoana fotsiny ve ny mpamoaka ary asaivo manandrana indray ny serivisy ambony na ny mpampiasa any aoriana?
  • Afaka mitahiry ny hafatra ao an-toerana na ao anaty tahiry ve ny mpamoaka mba hanandrana indray any aoriana?

Raha tsia ny valiny, dia manatsara ny fiarovana ny angona ny fanatsarana ny fisiana. Kely kokoa ny angona ho very ianao raha misafidy ny fisiana fa tsy mirakitra an-tsoratra. Noho izany, ny zava-drehetra dia miankina amin'ny fitadiavana fifandanjana, ary ny fanapahan-kevitra dia miankina amin'ny toe-javatra manokana.

Ny dikan'ny ISR

Ny suite ISR dia ahafahanao misafidy ny fifandanjana tsara indrindra eo amin'ny fiarovana ny angon-drakitra sy ny fahatarana. Ohatra, miantoka ny fisiana raha sendra ny tsy fahombiazan'ny ankamaroan'ny kopia, manamaivana ny fiantraikan'ny replika maty na miadana amin'ny resaka fahatarana.

Isika ihany no misafidy ny dikany replica.lag.time.max.ms araka ny filanao. Amin'ny ankapobeny, io mari-pamantarana io dia midika hoe hatraiza ny fahatarana hanaiky ny fotoana acks=rehetra. Ny sandan'ny default dia folo segondra. Raha lava loatra aminao izany dia azonao ahena. Avy eo dia hitombo ny fatran'ny fanovana ao amin'ny ISR, satria hesorina ny mpanaraka ary ampiana matetika kokoa.

RabbitMQ dia fitaratry ny fitaratra mila averina. Ny fitaratra miadana dia mampiditra faneriterena fanampiny, ary ny fitaratra maty dia afaka miandry mandra-pahatongan'ny fonosana izay manamarina ny fisian'ny node tsirairay (net tick) hamaly. ISR dia fomba mahaliana hialana amin'ireo olan'ny fahatarana ireo. Saingy tandindonin-doza ny fahaverezan'ny asa satria ny ISR dia mety hihena ho an'ny mpitarika fotsiny. Mba hisorohana an'io risika io, ampiasao ny fandrindrana min.insync.replicas.

Antoky ny fifandraisan'ny mpanjifa

Ao amin'ny filaharana bootstrap.servers Ny mpamokatra sy ny mpanjifa dia afaka mamaritra brokers maro hampifandray ny mpanjifa. Ny hevitra dia rehefa midina ny node iray, dia misy sisa tavela izay ahafahan'ny mpanjifa manokatra fifandraisana. Tsy voatery ho mpitarika fizarana ireo, fa takela-bato fotsiny ho an'ny entana voalohany. Ny mpanjifa dia afaka manontany azy ireo hoe iza no node mampiantrano ny mpitarika fizarana mamaky/manoratra.

Ao amin'ny RabbitMQ, ny mpanjifa dia afaka mifandray amin'ny node rehetra, ary ny zotra anatiny dia mandefa ny fangatahana any amin'izay tokony halehany. Midika izany fa afaka mametraka mpifandanja entana eo anoloan'ny RabbitMQ ianao. Kafka dia mitaky ny mpanjifa hifandray amin'ny node izay mampiantrano ny mpitarika fisarahana mifanaraka amin'izany. Amin'ny toe-javatra toy izany, dia tsy afaka mametraka load balancer ianao. Lisitra bootstrap.servers Zava-dehibe ny ahafahan'ny mpanjifa miditra sy mahita ny nodes marina aorian'ny tsy fahombiazana.

Kafka Consensus Architecture

Hatramin'izao, tsy nandinika ny fomba ianaran'ny cluster momba ny fianjeran'ny broker sy ny fomba nifidianana mpitarika vaovao. Mba hahatakarana ny fomba fiasan'i Kafka amin'ny fisarahana amin'ny tambajotra dia mila mahatakatra ny maritrano marimaritra iraisana ianao.

Ny kluster Kafka tsirairay dia apetraka miaraka amin'ny kluster Zookeeper, izay serivisy marimaritra iraisana izay ahafahan'ny rafitra manatratra ny marimaritra iraisana amin'ny fanjakana sasany, manao laharam-pahamehana ny tsy fitoviana amin'ny fahafahana. Ny faneken'ny ankamaroan'ny node Zookeeper dia takiana amin'ny fankatoavana ny asa famakiana sy fanoratana.

Ny Zookeeper dia mitahiry ny toetry ny cluster:

  • Lisitr'ireo lohahevitra, fizarana, fanamafisam-peo, kopia mpitarika ankehitriny, kopia tiana.
  • Mpikambana ao amin'ny kluster. Ny broker tsirairay dia mandefa ny cluster Zookeeper. Raha tsy mahazo ping ao anatin'ny fe-potoana voafaritra dia raisin'ny Zookeeper ho tsy misy ilay broker.
  • Misafidiana ny nodes lehibe sy mitsitsy ho an'ny mpanara-maso.

Ny node mpanara-maso dia iray amin'ireo broker Kafka izay tompon'andraikitra amin'ny fifidianana ireo mpitarika dika mitovy. Ny Zookeeper dia mandefa fampandrenesana amin'ny mpanara-maso momba ny maha-mpikambana ao amin'ny cluster sy ny fiovan'ny lohahevitra, ary tsy maintsy miasa amin'ireo fanovana ireo ny mpanara-maso.

Ohatra, andeha isika haka lohahevitra vaovao miaraka amin'ny fizarazarana folo sy ny replication an'ny 3. Ny mpanara-maso dia tsy maintsy mifidy mpitarika ho an'ny fizarana tsirairay, miezaka ny mizara tsara ny mpitarika eo amin'ireo brokers.

Ho an'ny mpifehy fizarana tsirairay:

  • fanavaozana vaovao ao amin'ny Zookeeper momba ny ISR sy ny mpitarika;
  • Mandefa LeaderAndISRCmand ho an'ny broker tsirairay izay mampiantrano ny dika mitovy amin'ity fizarana ity, mampahafantatra ny brokers momba ny ISR sy ny mpitarika.

Rehefa lavo ny mpivarotra iray misy mpitarika, dia mandefa fampandrenesana amin'ny mpanara-maso ny Zookeeper, ary mifidy mpitarika vaovao izy. Averina indray, manavao ny Zookeeper aloha ny mpanara-maso ary avy eo dia mandefa baiko amin'ny broker tsirairay mampahafantatra azy ireo ny fiovan'ny mpitarika.

Ny mpitarika tsirairay dia tompon'andraikitra amin'ny fandraisana mpiasa ISR. Fikirana replica.lag.time.max.ms mamaritra izay hiditra ao. Rehefa miova ny ISR dia mampita vaovao vaovao amin'ny Zookeeper ny mpitarika.

Ny Zookeeper dia ampahafantarina hatrany ny fiovana rehetra ka raha sendra misy tsy fahombiazana dia mizotra tsara ny fitantanana amin'ny mpitarika vaovao.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 21. Kafka Consensus

Protocol replication

Ny fahatakarana ny antsipirian'ny replication dia manampy anao hahatakatra bebe kokoa ny toe-javatra mety ho very angona.

Fanontaniana santionany, Log End Offset (LEO) ary Highwater Mark (HW)

Noheverinay fa mandefa tsindraindray ny fangatahana fanala amin'ny mpitarika ny mpanaraka. Ny elanelana mahazatra dia 500ms. Tsy mitovy amin'ny RabbitMQ izany fa ao amin'ny RabbitMQ replication dia tsy natomboky ny fitaratra filaharana fa ny tompony. Ny tompony dia manosika fiovana amin'ny fitaratra.

Ny mpitarika sy ny mpanaraka rehetra dia mitahiry ny Log End Offset (LEO) sy ny marika Highwater (HW). Ny marika LEO dia mitahiry ny offset amin'ny hafatra farany ao amin'ny kopia eo an-toerana, ary ny HW no mitazona ny offset amin'ny fanekena farany. Tsarovy fa ho an'ny sata fanolorana, ny hafatra dia tsy maintsy mijanona amin'ny replika ISR rehetra. Midika izany fa matetika ny LEO dia mialoha kely ny HW.

Rehefa mahazo hafatra ny mpitarika dia mitahiry izany eo an-toerana. Ny mpanaraka dia manao fangatahana maka amin'ny alàlan'ny fampitana ny LEO azy. Ny mpitarika dia mandefa hafatra maromaro manomboka amin'ity LEO ity ary mampita ny HW ankehitriny. Rehefa mahazo vaovao ny mpitarika fa ny kopia rehetra dia nitahiry ny hafatra amin'ny offset nomena, dia manosika ny marika HW. Ny mpitarika ihany no afaka manetsika ny HW, ka ho fantatry ny mpanara-dia rehetra ny sanda misy ankehitriny amin'ny valin'ny fangatahan'izy ireo. Midika izany fa ny mpanaraka dia mety hihemotra amin'ny mpitarika amin'ny hafatra sy ny fahalalana HW. Ny mpanjifa ihany no mahazo hafatra hatramin'ny HW ankehitriny.

Mariho fa ny "miharitra" dia midika hoe nosoratana ho fahatsiarovana, fa tsy amin'ny kapila. Ho an'ny fampisehoana, Kafka dia mampifanaraka amin'ny kapila amin'ny fotoana voafaritra. Manana elanelam-potoana toy izany ihany koa ny RabbitMQ, saingy handefa fanekena amin'ny mpamoaka izy io raha tsy aorian'ny nanoratan'ny tompony sy ny fitaratra rehetra ny hafatra amin'ny kapila. Ny mpamorona Kafka, noho ny antony fampisehoana, dia nanapa-kevitra ny handefa ack raha vao nosoratana ho fahatsiarovana ny hafatra. Kafka dia miloka fa ny faneriterena dia manonitra ny mety hitehirizana vetivety ireo hafatra ekena ao anaty fitadidiana fotsiny.

Ny tsy fahombiazan'ny mpitarika

Rehefa lavo ny mpitarika iray, dia mampandre ny mpanara-maso ny Zookeeper, ary mifidy kopia mpitarika vaovao izy. Ny mpitarika vaovao dia mametraka marika HW vaovao araka ny LEO azy. Ny mpanaraka dia mahazo vaovao momba ny mpitarika vaovao. Miankina amin'ny dikan-kafka, ny mpanaraka dia hifidy iray amin'ireo sehatra roa:

  1. Hotapahiny amin'ny HW fanta-daza ny lozisialy eo an-toerana ary handefa fangatahana amin'ny mpitarika vaovao ho an'ny hafatra aorian'io marika io.
  2. Handefa fangatahana any amin'ny mpitarika mba hamantatra ny HW tamin'ny fotoana nifidianana azy ho mpitarika, ary avy eo dia tapaho ny log ho an'ity offset ity. Avy eo dia hanomboka hanao fangatahana fanalana tsindraindray manomboka amin'ity offset ity.

Ny mpanaraka dia mety mila manapaka ny log noho ireto antony manaraka ireto:

  • Rehefa tsy mahomby ny mpitarika iray, ny mpanaraka voalohany ao amin'ny seta ISR voasoratra ao amin'ny Zookeeper no mandresy amin'ny fifidianana ary lasa mpitarika. Ny mpanaraka rehetra ao amin'ny ISR, na dia heverina ho "mifanaraka" aza dia mety tsy nahazo dika mitovy amin'ny hafatra rehetra avy amin'ny mpitarika teo aloha. Azo atao tsara fa tsy manana ny kopia farany indrindra ny mpanaraka asongadina. Miantoka ny Kafka fa tsy misy fahasamihafana eo amin'ny kopia. Noho izany, mba hisorohana ny tsy fitovian-kevitra, ny mpanara-dia tsirairay dia tsy maintsy manapaka ny diariny amin'ny sandan'ny HW an'ny mpitarika vaovao amin'ny fotoana lany. Izany no antony iray hafa mahatonga ny fametrahana acks=rehetra tena ilaina amin'ny tsy fitoviana.
  • Ny hafatra dia soratana tsindraindray amin'ny kapila. Raha toa ka tsy mahomby amin'ny fotoana mitovy ny node cluster rehetra, dia hotehirizina ao amin'ny disk ny kopia misy offset samihafa. Azo inoana fa rehefa miverina amin'ny Internet ny mpikirakira dia ny mpitarika vaovao izay voafidy dia ho ao ambadiky ny mpanara-dia azy satria voavonjy amin'ny disk alohan'ny hafa.

Reunion miaraka amin'ny cluster

Rehefa miditra indray ao amin'ny cluster, ny dika mitovy dia manao toy ny rehefa tsy mahomby ny mpitarika: manamarina ny dika mitovy amin'ny mpitarika izy ireo ary manapaka ny diany ao amin'ny HW (amin'ny fotoana fifidianana). Raha ampitahaina, ny RabbitMQ dia mitondra ny node tafaverina ho vaovao tanteraka. Amin'ireo tranga roa ireo, ny broker dia manary ny fanjakana misy. Raha ampiasaina ny fampifanarahana mandeha ho azy, dia tsy maintsy mamerina tanteraka ny votoatiny ankehitriny amin'ny fitaratra vaovao ny tompony amin'ny fomba "avelao hiandry izao tontolo izao". Ny tompony dia tsy manaiky ny famakiana na fanoratana mandritra ity fandidiana ity. Ity fomba ity dia miteraka olana amin'ny filaharana lehibe.

Kafka dia lozisialy zaraina ary amin'ny ankapobeny dia mitahiry hafatra bebe kokoa noho ny filaharana RabbitMQ, izay esorina amin'ny filaharana ny angon-drakitra aorian'ny famakiana azy. Tokony hijanona ho kely ny filaharana mavitrika. Fa ny Kafka dia diary manana ny politikany fitazonana azy manokana, izay afaka mametraka fe-potoana andro na herinandro. Ny fanakanana filaharana sy ny fomba fampifanarahana feno dia tsy azo ekena mihitsy ho an'ny diary zaraina. Ny mpanara-dia an'i Kafka kosa dia manapaka fotsiny ny diariny any amin'ny HW an'ny mpitarika (tamin'ny fotoana nifidianany azy) raha toa ka mialoha ny mpitarika ny kopiany. Amin'ny tranga mety kokoa, rehefa ao aoriana ny mpanara-dia, dia manomboka manao fangatahana maka fotsiny izy manomboka amin'ny LEO ankehitriny.

Manomboka ivelan'ny ISR ireo mpanaraka vaovao na tafaverina ary tsy mandray anjara amin'ny fanoloran-tena. Miara-miasa fotsiny amin'ny vondrona izy ireo, mandray hafatra haingana araka izay tratrany mandra-pahatongany amin'ny mpitarika ary miditra ao amin'ny ISR. Tsy misy hidin-trano ary tsy ilaina ny manary ny angonao rehetra.

Very ny fifandraisana

Manana singa bebe kokoa noho ny RabbitMQ ny Kafka, noho izany dia manana fitondran-tena sarotra kokoa izy rehefa tapaka ny cluster. Fa ny Kafka dia natao ho an'ny cluster tany am-boalohany, noho izany dia tena eritreretina tsara ny vahaolana.

Ireto ambany ireto misy tranganà tsy fahombiazan'ny fifandraisana:

  • Scenario 1: Ny mpanara-dia tsy mahita ny mpitarika, fa mbola mahita ny Zookeeper.
  • Scenario 2: Tsy mahita mpanaraka ny mpitarika, fa mbola mahita ny Zookeeper.
  • Scenario 3: Ny mpanara-dia dia mahita ny mpitarika, fa tsy mahita ny Zookeeper.
  • Scenario 4: Ny mpitarika dia mahita ny mpanara-dia, fa tsy mahita ny Zookeeper.
  • Scenario 5: Misaraka tanteraka amin'ireo node Kafka hafa sy Zookeeper ny mpanaraka.
  • Scenario 6: Misaraka tanteraka amin'ireo node Kafka hafa sy Zookeeper ny mpitarika.
  • Scenario 7: Tsy afaka mahita node Kafka hafa ny node controller Kafka.
  • Scenario 8: Kafka controller tsy mahita Zookeeper.

Samy manana ny fitondrantenany ny scenario tsirairay.

Scenario 1: Ny mpanaraka dia tsy mahita ny mpitarika, fa mbola mahita ny Zookeeper

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 22. Scenario 1: ISR misy kopia telo

Ny tsy fahombiazan'ny fifandraisana dia manasaraka ny broker 3 amin'ny brokers 1 sy 2, fa tsy amin'ny Zookeeper. Ny Broker 3 dia tsy afaka mandefa fangatahana fetch intsony. Rehefa nandeha ny fotoana replica.lag.time.max.ms nesorina tao amin'ny ISR izy io ary tsy mandray anjara amin'ny fandefasana hafatra. Rehefa tafaverina amin'ny laoniny ny fampifandraisana dia hanohy ny fangatahana fakana ary hiditra amin'ny ISR izy rehefa mahatratra ny mpitarika. Ny Zookeeper dia hanohy handray pings ary hihevitra fa velona sy salama ilay broker.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 23. Scenario 1: Nesorina tao amin'ny ISR ny broker raha tsy misy fangatahana fetch voaray avy aminy ao anatin'ny elanelan'ny replica.lag.time.max.ms

Tsy misy fampiatoana ati-doha na node toy ny ao amin'ny RabbitMQ. Mihena kosa ny fandroahana.

Scenario 2: Tsy mahita mpanaraka ny mpitarika, fa mbola mahita Zookeeper

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 24. Toe-javatra 2. Mpitarika sy mpanara-dia roa

Ny fahatapahan'ny fifandraisana amin'ny tambajotra dia manasaraka ny mpitarika amin'ny mpanaraka, saingy mbola afaka mahita ny Zookeeper ny broker. Toy ny tamin'ny scenario voalohany, nihena ny ISR, saingy tamin'ity indray mitoraka ity dia ho an'ny mpitarika ihany satria ny mpanara-dia rehetra dia mitsahatra tsy mandefa fangatahana. Tsy misy fizarazarana lojika indray. Raha ny tokony ho izy, dia misy ny fatiantoka ho an'ny hafatra vaovao mandra-pamerenana ny fifandraisana. Ny Zookeeper dia manohy mahazo ping ary mino fa velona sy salama ilay mpivarotra.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 25. Scenario 2. Nihena ho an'ny mpitarika ihany ny ISR

Scenario 3. Ny mpanara-dia dia mahita ny mpitarika, fa tsy mahita ny Zookeeper

Ny mpanaraka dia misaraka amin'ny Zookeeper, fa tsy amin'ny broker miaraka amin'ny mpitarika. Vokatr'izany dia manohy manao fangatahana fanangonam-bokatra ny mpanaraka ary ho mpikambana ao amin'ny ISR. Tsy mahazo ping intsony ny Zookeeper ary manoratra lozam-pifamoivoizana, fa satria mpanara-dia fotsiny izy, dia tsy misy vokany aorian'ny fanarenana.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 26. Scenario 3: Ny mpanara-dia dia manohy mandefa fangatahana amin'ny mpitarika

Scenario 4. Ny mpitarika dia mahita mpanaraka, fa tsy mahita Zookeeper

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 27. Toe-javatra 4. Mpitarika sy mpanara-dia roa

Ny mpitarika dia misaraka amin'ny Zookeeper, fa tsy amin'ny brokers miaraka amin'ny mpanaraka.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 28. Scenario 4: Nitokana tamin'ny Zookeeper ny mpitarika

Rehefa afaka kelikely, Zookeeper dia hanoratra ny tsy fahombiazan'ny broker ary hampandre ny mpanara-maso momba izany. Hifidy mpitarika vaovao eo amin’ireo mpanara-dia azy izy. Na izany aza, ny mpitarika tany am-boalohany dia mbola hihevitra fa izy no mpitarika ary hanohy hanaiky ny fidirana avy amin'ny acks=1. Tsy mandefa fangatahana haka azy intsony ny mpanaraka, ka heveriny ho faty izy ireo ary hiezaka ny hampihena ny ISR ho azy. Saingy noho izy tsy manana fifandraisana amin'ny Zookeeper, dia tsy ho afaka hanao izany izy, ary amin'izay fotoana izay dia handà ny hanaiky ny fidirana fanampiny.

hafatra acks=rehetra dia tsy hahazo fankasitrahana satria ny ISR dia mamadika ny kopia rehetra aloha, ary tsy tonga any aminy ny hafatra. Rehefa miezaka manaisotra azy ireo ao amin'ny ISR ny mpitarika voalohany dia tsy ho afaka hanao izany ary tsy hanaiky ny hafatra rehetra intsony.

Vetivety dia mahatsikaritra ny fiovan'ny mpitarika ny mpanjifa ary manomboka mandefa rakitra amin'ny mpizara vaovao. Rehefa tafaverina amin'ny laoniny ny tambajotra dia hitan'ny mpitarika tany am-boalohany fa tsy mpitarika intsony izy ary ampitaina amin'ny sandan'ny HW izay nananan'ny mpitarika vaovao tamin'ny fotoana tsy nahavitany ny tsy fitovian'ny log. Avy eo dia hanomboka handefa fangatahana fanala amin'ny mpitarika vaovao izany. Very avokoa ny rakitra rehetra avy amin'ny mpitarika voalohany izay tsy naverina tamin'ny mpitarika vaovao. Izany hoe, ho very ireo hafatra izay tsy neken’ny mpitondra tany am-boalohany tao anatin’izay segondra vitsy niasan’ny mpitarika roa.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 29. Scenario 4. Lasa mpanara-dia ny mpitarika ao amin'ny broker 1 rehefa tafaverina amin'ny laoniny ny tambajotra.

Scenario 5: Misaraka tanteraka amin'ireo node Kafka hafa sy Zookeeper ny mpanaraka

Ny mpanaraka dia mitoka-monina tanteraka amin'ireo node Kafka hafa sy Zookeeper. Manala ny tenany amin'ny ISR fotsiny izy mandra-piverin'ny tambajotra, ary avy eo dia manaraka ny hafa.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 30. Scenario 5: Nesorina tao amin'ny ISR ny mpanaraka mitokana

Scenario 6: Misaraka tanteraka amin'ireo node Kafka hafa sy Zookeeper ny mpitarika

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 31. Toe-javatra 6. Mpitarika sy mpanara-dia roa

Ny mpitarika dia mitoka-monina tanteraka amin'ny mpanara-dia azy, ny mpanara-maso ary ny Zookeeper. Mandritra ny fotoana fohy dia hanohy hanaiky ny fidirana avy amin'ny acks=1.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 32. Scenario 6: Manasaraka ny mpitarika amin'ny node Kafka sy Zookeeper hafa

Tsy nahazo fangatahana taorian'ny lany daty replica.lag.time.max.ms, dia hiezaka ny hampihena ny ISR ho azy, saingy tsy ho vita izany satria tsy misy fifandraisana amin'ny Zookeeper, dia tsy hanaiky ny fanoratana intsony.

Mandritra izany fotoana izany, ny Zookeeper dia hanamarika ilay mpivarotra mitoka-monina ho maty ary hifidy mpitarika vaovao ny mpanara-maso.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 33. Toe-javatra 6. Mpitarika roa

Ny mpitarika tany am-boalohany dia mety hanaiky ny fidirana mandritra ny segondra vitsy, fa avy eo dia mijanona tsy manaiky hafatra. Havaozina isaky ny 60 segondra ny mpanjifa miaraka amin'ny metadata farany. Hampahafantarina azy ireo ny fiovan'ny mpitarika ary hanomboka handefa lahatsoratra amin'ny mpitarika vaovao.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 34. Scenario 6: Nivadika mpitarika vaovao ny mpanamboatra

Ny fidirana voamarina rehetra nataon'ny mpitarika voalohany hatramin'ny fahaverezan'ny fifandraisana dia ho very. Rehefa tafaverina amin'ny laoniny ny tambajotra dia ho hitan'ny mpitarika voalohany amin'ny alàlan'ny Zookeeper fa tsy izy intsony no mpitarika. Avy eo dia hotapahiny amin'ny HW ny mpitarika vaovao amin'ny fotoanan'ny fifidianana ary hanomboka handefa fangatahana ho mpanara-dia.

RabbitMQ vs Kafka: Fandeferana amin'ny hadisoana sy ny fisian'ny avo
vary. 35. Scenario 6: Lasa mpanara-dia ny mpitarika voalohany rehefa tafaverina amin'ny laoniny ny fifandraisan'ny tambajotra

Amin'ity toe-javatra ity, ny fisarahana lojika dia mety hitranga mandritra ny fotoana fohy, fa raha tsy izany acks=1 и min.insync.replicas koa 1. Mifarana ho azy ny fisarahana lojika na rehefa tafaverina amin'ny laoniny ny tambajotra, rehefa tsapan'ny mpitarika tany am-boalohany fa tsy izy intsony no mpitarika, na rehefa fantatry ny mpanjifa rehetra fa niova ny mpitarika ary nanomboka nanoratra tamin'ny mpitarika vaovao - na inona na inona mitranga aloha. Na ahoana na ahoana, dia ho very ny hafatra sasany, fa miaraka amin'ny acks=1.

Misy karazany iray hafa amin'ity toe-javatra ity izay, talohan'ny nisarahan'ny tambajotra, dia nianjera ny mpanaraka ary ny mpitarika dia nanindry ny ISR ho azy irery. Dia lasa mitoka-monina noho ny fahaverezan'ny fifandraisana. Mpitondra vaovao no voafidy, fa ny mpitarika tany am-boalohany dia manohy manaiky ny fidirana, na dia acks=rehetra, satria tsy misy olon-kafa ao amin'ny ISR afa-tsy izy. Ho very ireo rakitra ireo rehefa tafaverina amin'ny laoniny ny tambajotra. Ny hany fomba hisorohana an'io safidy io dia min.insync.replicas = 2.

Scenario 7: Kafka Controller Node dia tsy mahita Kafka Node hafa

Amin'ny ankapobeny, rehefa very ny fifandraisana amin'ny node Kafka, dia tsy afaka mampita vaovao momba ny fiovan'ny mpitarika aminy ny mpanara-maso. Amin'ny tranga ratsy indrindra, izany dia hitarika amin'ny fisarahana lojika fohy, toy ny ao amin'ny scenario 6. Matetika kokoa noho ny tsy, ny broker dia tsy ho lasa kandidà ho mpitarika fotsiny raha tsy mahomby ity farany.

Scenario 8: Kafka controller tsy mahita Zookeeper

Tsy hahazo ping avy amin'ny mpanara-maso lavo ny Zookeeper ary hifidy node Kafka vaovao ho mpanara-maso. Ny mpanara-maso tany am-boalohany dia afaka manohy maneho ny tenany ho toy izany, saingy tsy mahazo fampandrenesana avy amin'ny Zookeeper, ka tsy hanana asa hotanterahina. Rehefa tafaverina amin'ny laoniny ny tambajotra dia ho tsapany fa tsy mpanara-maso intsony izy, fa lasa node Kafka mahazatra.

Fehiny avy amin'ireo scenario

Hitanay fa ny fahaverezan'ny fifandraisana amin'ny mpanara-dia dia tsy miteraka fahaverezan'ny hafatra, fa mampihena vetivety fotsiny ny famerana mandra-piverina amin'ny laoniny ny tambajotra. Izany, mazava ho azy, dia mety hitarika amin'ny fahaverezan'ny angon-drakitra raha misy nodes iray na maromaro very.

Raha tafasaraka amin'ny Zookeeper ny mpitarika noho ny fahaverezan'ny fifandraisana, dia mety hiteraka hafatra very avy amin'ny acks=1. Ny tsy fahampian'ny fifandraisana amin'ny Zookeeper dia miteraka fisarahana lojika fohy amin'ireo mpitarika roa ireo. Ity olana ity dia voavaha amin'ny alàlan'ny parameter acks=rehetra.

fikirana min.insync.replicas amin'ny kopia roa na maromaro dia manome antoka fanampiny fa tsy hiteraka hafatra very toy ny ao amin'ny Scenario 6 ny toe-javatra fohy toy izany.

Famintinana ireo hafatra very

Andeha hotanisaintsika ny fomba rehetra ahafahanao manary data ao amin'ny Kafka:

  • Ny tsy fahombiazan'ny mpitarika raha toa ka voamarina ny fampiasana ny hafatra acks=1
  • Izay tetezamita maloto fitondran-tena, izany hoe, mpanaraka ivelan'ny ISR, na dia miaraka amin'ny acks=rehetra
  • Manasaraka ny mpitarika amin'ny Zookeeper raha voamarina ny hafatra acks=1
  • Ny fitokanana tanteraka ny mpitarika izay efa nampihena ny vondrona ISR ho azy. Ho very avokoa ny hafatra rehetra acks=rehetra. Marina ihany izany raha min.insync.replicas=1.
  • Ny tsy fahombiazana miaraka amin'ny node fisarahana rehetra. Satria ekena avy amin'ny fitadidiana ny hafatra, ny sasany dia mety mbola tsy voasoratra ao anaty kapila. Aorian'ny famerenana indray ny lohamilina dia mety tsy hita ny hafatra sasany.

Azo sorohina amin'ny alalan'ny fandrarana azy ireo ny fifindran'ny fitarihana maloto na ny fiantohana ny fandroahana roa farafahakeliny. Ny fanamafisana maharitra indrindra dia fitambarana acks=rehetra и min.insync.replicas mihoatra ny 1.

Fampitahana mivantana ny fahamendrehan'ny RabbitMQ sy Kafka

Mba hiantohana ny fahamendrehana sy ny fisian'ny avo lenta, ny sehatra roa dia mametraka rafitra famerenana voalohany sy faharoa. Na izany aza, manana ombelahin-tongony Achilles ny RabbitMQ. Rehefa mifandray indray aorian'ny tsy fahombiazana, ny nodes dia manilika ny angonany ary voasakana ny fampifanarahana. Mametraka fanontaniana momba ny faharetan'ny filaharana lehibe ao amin'ny RabbitMQ ity fanenjehana indroa ity. Tsy maintsy manaiky ianao na ny fampihenana ny fandroahana na ny fotoana fanakanana lava. Ny fampihenana ny redundancy dia mampitombo ny mety hisian'ny fahaverezan'ny angona goavana. Saingy raha kely ny filaharana, dia azo fehezina amin'ny fampiasana andrana fifandraisana miverimberina ny fotoana fohy tsy misy (segondra vitsy).

Tsy manana an'io olana io i Kafka. Manary angon-drakitra izy io raha tsy eo amin'ny toerana misy ny tsy fitovian'ny mpitarika sy ny mpanaraka. Ny angon-drakitra nozaraina rehetra dia voatahiry. Ankoatra izany, ny replication dia tsy manakana ny rafitra. Ny mpitarika dia manohy manaiky lahatsoratra raha mbola tratra ny mpanaraka vaovao, ka ho an'ny devops, ny fidirana na ny fidirana indray amin'ny cluster dia lasa asa tsy misy dikany. Mazava ho azy fa mbola misy olana toy ny bandwidth tambajotra mandritra ny replication. Raha manampy mpanaraka maromaro miaraka ianao dia mety ho tratran'ny fetran'ny bandwidth.

RabbitMQ dia ambony noho ny Kafka amin'ny fahamendrehana rehefa tsy mahomby amin'ny fotoana iray ny mpizara maromaro ao anaty cluster. Araka ny efa voalazanay, RabbitMQ dia mandefa fanamafisana amin'ny mpanonta raha tsy aorian'ny fanoratana ny hafatra amin'ny kapila nataon'ny tompony sy ny fitaratra rehetra. Saingy manampy fahatarana fanampiny izany noho ny antony roa:

  • fsync isaky ny zato milisegondra
  • Ny tsy fahombiazan'ny fitaratra dia tsy azo tsikaritra afa-tsy rehefa tapitra ny androm-piainan'ireo fonosana izay manamarina ny fisian'ny node tsirairay (net tick). Raha miadana na mianjera ny fitaratra dia manampy fahatarana izany.

Ny tian'i Kafka dia ny hoe raha voatahiry amin'ny node maro ny hafatra iray, dia afaka manaiky hafatra izy raha vantany vao tonga amin'ny fitadidiana. Noho izany, misy ny mety ho very hafatra amin'ny karazana (na acks=rehetra, min.insync.replicas=2) raha misy tsy fahombiazana miaraka.

Amin'ny ankapobeny, ny Kafka dia mampiseho fampandehanana rindrambaiko tsara kokoa ary natao hatrany am-boalohany ho an'ny cluster. Ny isan'ny mpanaraka dia azo ampitomboina ho 11 raha ilaina amin'ny fahatokisana. Antony fanaovana kopia 5 sy isa kely indrindra amin'ny fampifanarahana min.insync.replicas=3 hahatonga ny fahaverezan'ny hafatra ho hetsika tsy fahita firy. Raha afaka manohana an'io tahan'ny replication io sy ny haavon'ny redundansy ny fotodrafitrasanao, dia azonao atao ny misafidy io safidy io.

Ny clustering RabbitMQ dia tsara amin'ny filaharana kely. Saingy na dia ny filaharana kely aza dia mety hitombo haingana rehefa misy fifamoivoizana be. Rehefa lasa lehibe ny filaharana dia tsy maintsy manao safidy henjana ianao eo amin'ny fisiana sy ny fahatokisana. Ny clustering RabbitMQ dia mifanentana indrindra amin'ny toe-javatra tsy mahazatra izay misy tombony amin'ny fahafahan'ny RabbitMQ mihoatra noho ny tsy fahampian'ny fanangonana azy.

Fanafody iray amin'ny faharefoan'ny RabbitMQ amin'ny filaharana lehibe dia ny manasaraka azy ireo ho filaharana kely kokoa. Raha tsy mitaky filaharana feno ianao, fa ireo hafatra mifandraika ihany (ohatra, hafatra avy amin'ny mpanjifa manokana), na tsy manafatra na inona na inona, dia azo ekena ity safidy ity: jereo ny tetikasako Rebalancer hampisaraka ny filaharana (mbola eo am-piandohana ny tetikasa).

Farany, aza adino ny momba ny bibikely maromaro ao amin'ny rafitra fanangonana sy replication an'ny RabbitMQ sy Kafka. Rehefa mandeha ny fotoana, ny rafitra dia lasa matotra sy miorina tsara, saingy tsy misy hafatra ho azo antoka 100% amin'ny fahaverezana! Fanampin'izany, misy lozam-pifamoivoizana lehibe mitranga any amin'ny foibe data!

Raha misy zavatra diso aho, nanao hadisoana, na tsy mitovy hevitra amin'ny iray amin'ireo teboka ianao dia aza misalasala manoratra fanamarihana na mifandray amiko.

Matetika aho no manontany hoe: "Inona no hofidiana, Kafka sa RabbitMQ?", "Inona no sehatra tsara kokoa?". Ny marina dia tena miankina amin'ny toe-javatra misy anao, traikefa amin'izao fotoana izao, sns. Misalasala aho hanome ny hevitro satria mety ho fanatsorana loatra ny fanolorana sehatra iray ho an'ny tranga fampiasana rehetra sy ny fetra mety hitranga. Nosoratako ity andian-dahatsoratra ity mba hahafahanao mamorona ny hevitrao manokana.

Te-hilaza aho fa samy mpitarika amin'ity sehatra ity ireo rafitra roa ireo. Mety ho mitongilana kely aho satria avy amin'ny traikefako amin'ny tetikasa dia mazàna manome lanja ny zavatra toy ny fandefasana hafatra azo antoka sy azo itokisana.

Hitako ireo teknolojia hafa izay tsy manana io fahatokisana io sy azo antoka ny baiko, avy eo mijery ny RabbitMQ sy Kafka aho ary mahatsapa ny sanda tsy mampino an'ireo rafitra roa ireo.

Source: www.habr.com

Add a comment