RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau

Π’ kab lus kawg peb saib RabbitMQ pawg rau kev ua txhaum cai thiab muaj siab. Tam sim no cia peb khawb tob rau hauv Apache Kafka.

Ntawm no yog chav tsev ntawm replication yog qhov muab faib. Txhua lub ncauj lus muaj ib lossis ntau ntu. Txhua ntu muaj tus thawj coj nrog lossis tsis muaj cov thwjtim. Thaum tsim ib lub ncauj lus, koj qhia tus naj npawb ntawm cov partitions thiab cov coefficient replication. Tus nqi ib txwm yog 3, uas txhais tau hais tias peb qhov kev hloov pauv: ib tus thawj coj thiab ob tus thwjtim.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 1. Plaub ntu raug faib rau peb tus neeg ua haujlwm

Txhua daim ntawv thov nyeem thiab sau ntawv mus rau tus thawj coj. Cov neeg ua raws ib ntus xa cov lus thov mus rau tus thawj coj kom tau txais cov lus tseeb. Cov neeg tau txais kev pab yeej tsis tig mus rau cov thwjtim; qhov tom kawg muaj tsuas yog rau kev rov ua dua thiab ua txhaum kev zam txim.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau

Kev faib tsis ua haujlwm

Thaum tus broker ua tsis tiav, cov thawj coj ntawm ob peb ntu feem ntau ua tsis tiav. Nyob rau hauv txhua tus ntawm lawv, ib tug follower los ntawm lwm lub node los ua tus thawj coj. Qhov tseeb, qhov no tsis yog ib txwm muaj, txij li qhov kev sib koom ua ke kuj cuam tshuam: seb puas muaj cov neeg ua raws synchronized, thiab yog tias tsis yog, txawm tias hloov mus rau qhov tsis sib xws yog tso cai. Tab sis cia peb tsis nyuaj rau tam sim no.

Broker 3 tawm hauv lub network, thiab tus thawj coj tshiab raug xaiv rau ntu 2 ntawm tus broker 2.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 2. Broker 3 tuag thiab nws cov follower ntawm broker 2 raug xaiv los ua tus thawj coj tshiab ntawm partition 2

Tom qab ntawd tus broker 1 tawm thiab ntu 1 kuj poob nws tus thawj coj, nws lub luag haujlwm dhau mus rau tus broker 2.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 3. Muaj ib tug broker sab laug. Tag nrho cov thawj coj yog nyob rau ntawm ib tug broker nrog xoom redundancy

Thaum tus broker 1 rov qab los hauv online, nws ntxiv plaub tus thwjtim, muab qee qhov rov ua dua rau txhua qhov kev faib tawm. Tab sis tag nrho cov thawj coj tseem tseem nyob ntawm tus broker 2.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 4. Cov thawj coj tseem nyob ntawm tus broker 2

Thaum tus broker 3 tuaj txog, peb rov qab mus rau peb qhov kev hloov pauv rau ib qho kev faib tawm. Tab sis tag nrho cov thawj coj tseem nyob ntawm tus broker 2.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 5. Kev tsis sib haum xeeb ntawm cov thawj coj tom qab kev txhim kho ntawm cov neeg ua haujlwm 1 thiab 3

Kafka muaj cov cuab yeej rau cov thawj coj zoo dua qub dua li RabbitMQ. Nyob ntawd, koj yuav tsum siv lub plugin thib peb lossis tsab ntawv uas hloov cov cai rau kev tsiv teb tsaws tus tswv los ntawm kev txo qis rov qab thaum tsiv teb tsaws. Tsis tas li ntawd, rau cov kab loj loj peb yuav tsum lees txais qhov tsis muaj nyob hauv synchronization.

Kafka muaj lub tswv yim ntawm "nyiam replicas" rau tus thawj coj lub luag haujlwm. Thaum cov ntsiab lus faib tau tsim, Kafka sim faib cov thawj coj sib npaug thoob plaws ntawm cov kab thiab cim cov thawj coj thawj coj raws li nyiam. Thaum lub sij hawm, vim lub server reboots, tsis ua hauj lwm, thiab connectivity breakdowns, cov thawj coj yuav xaus mus rau lwm cov nodes, raws li nyob rau hauv cov ntaub ntawv loj tau piav saum toj no.

Txhawm rau kho qhov no, Kafka muaj ob txoj hauv kev:

  • Xaiv auto.leader.rebalance.enable = tseeb tso cai rau tus maub los node cia li muab cov thawj coj rov qab mus rau qhov nyiam replicas thiab yog li rov ua kom zoo li qub.
  • Tus thawj coj tuaj yeem khiav cov ntawv kafka-preferred-replica-election.sh rau manual reassignment.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 6. Replicas tom qab rebalancing

Qhov no yog ib qho yooj yim version ntawm qhov tsis ua haujlwm, tab sis qhov tseeb yog qhov nyuaj dua, txawm hais tias tsis muaj dab tsi nyuaj ntawm no. Nws tag nrho los rau synchronized replicas (In-Sync Replicas, ISR).

Synchronized Replicas (ISR)

Ib qho ISR yog cov txheej txheem ntawm kev faib tawm uas suav tias yog "synchronized" (in-sync). Muaj ib tug thawj coj, tiam sis tej zaum yuav tsis muaj cov thwjtim. Ib tus neeg taug qab raug suav tias yog synchronized yog tias nws tau ua cov ntawv luam ntawm tag nrho cov thawj coj cov lus ua ntej lub sijhawm tas sijhawm replica.lag.time.max.ms.

Ib tus neeg taug qab raug tshem tawm ntawm ISR yog tias nws:

  • tsis tau thov xaiv rau lub caij nyoog replica.lag.time.max.ms (presumed tuag)
  • tsis tau tswj kom hloov kho thaum lub caij nyoog replica.lag.time.max.ms (xav tias qeeb)

Cov neeg ua raws ua qauv thov hauv lub sijhawm replica.fetch.wait.max.ms, uas defaults rau 500ms.

Yuav kom piav qhia meej txog lub hom phiaj ntawm ISR, peb yuav tsum tau saib cov lus pom zoo los ntawm cov neeg tsim khoom thiab qee qhov xwm txheej tsis ua haujlwm. Cov neeg tsim khoom tuaj yeem xaiv thaum tus broker xa ntawv lees paub:

  • acks=0, kev lees paub tsis raug xa
  • acks = 1, kev lees paub raug xa mus tom qab tus thawj coj tau sau cov lus rau nws lub vev xaib
  • acks = tag nrho, kev lees paub raug xa tom qab txhua qhov kev hloov pauv hauv ISR tau sau cov lus rau cov ntawv teev npe hauv zos

Hauv Kafka terminology, yog tias ISR tau khaws cov lus, nws yog "kev cog lus". Acks = tag nrho yog qhov kev xaiv nyab xeeb tshaj plaws, tab sis kuj ntxiv ncua ntxiv. Cia peb saib ob qho piv txwv ntawm kev ua tsis tiav thiab qhov txawv 'acks' kev xaiv cuam tshuam nrog ISR lub tswv yim li cas.

Acks = 1 thiab ISR

Hauv qhov piv txwv no, peb yuav pom tias yog tus thawj coj tsis tos txhua cov lus los ntawm txhua tus neeg ua raws li kev cawmdim, ces cov ntaub ntawv poob yog ua tau yog tias tus thawj coj ua tsis tiav. Kev taw qhia mus rau tus neeg ua raws tsis sib xws tuaj yeem qhib lossis kaw los ntawm kev teeb tsa tsis huv.leader.election.enable.

Hauv qhov piv txwv no, cov chaw tsim khoom muaj tus nqi acks = 1. Cov seem yog faib thoob plaws peb tus broker. Broker 3 nyob tom qab, nws synchronized nrog tus thawj coj yim vib nas this dhau los thiab tam sim no 7456 lus tom qab. Broker 1 tsuas yog ib thib ob tom qab. Peb cov neeg tsim khoom xa cov lus thiab sai sai tau txais ib qho ack rov qab, tsis muaj cov nyiaj them poob haujlwm qeeb lossis tuag cov neeg uas tus thawj coj tsis tos.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 7. ISR nrog peb replicas

Broker 2 ua tsis tiav thiab tus tsim khoom tau txais kev sib txuas yuam kev. Tom qab kev coj noj coj ua dhau mus rau tus broker 1, peb poob 123 cov lus. Tus neeg taug qab ntawm tus broker 1 yog ib feem ntawm ISR, tab sis tsis tau ua tiav nrog tus thawj coj thaum nws poob.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 8. Cov lus ploj thaum nws tsoo

Nyob rau hauv configuration bootstrap.servers Cov chaw tsim khoom muaj ntau tus broker tau teev tseg thiab tuaj yeem nug lwm tus broker uas yog tus thawj coj ntawm ntu tshiab. Tom qab ntawd nws tsim kev sib txuas rau tus broker 1 thiab txuas ntxiv xa cov lus.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 9. Xa cov lus rov pib dua tom qab ib ntus so

Broker 3 tseem nyob tom qab. Nws ua fetch thov tab sis tsis tau sync. Qhov no tej zaum yuav yog vim qeeb network kev sib txuas ntawm cov brokers, qhov teeb meem cia, thiab lwm yam. Nws raug tshem tawm ntawm ISR. Tam sim no lub ISR muaj ib tug replica - tus thawj coj! Cov chaw tsim khoom tseem xa cov lus thiab tau txais kev pom zoo.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 10. Cov neeg taug qab ntawm tus broker 3 raug tshem tawm ntawm ISR

Tus broker 1 nqis mus thiab lub luag haujlwm ua thawj coj mus rau tus broker 3 nrog qhov poob ntawm 15286 cov lus! Cov chaw tsim khoom tau txais cov lus yuam kev txuas. Kev hloov mus rau ib tus thawj coj sab nraud ntawm ISR tsuas yog ua tau vim qhov teeb tsa tsis huv.leader.election.enable=true. Yog hais tias nws yog ntsia rau hauv cuav, ces qhov kev hloov pauv yuav tsis tshwm sim thiab txhua qhov kev thov nyeem thiab sau ntawv yuav raug tsis lees paub. Nyob rau hauv rooj plaub no, peb tos tus broker 1 rov qab nrog nws cov ntaub ntawv tsis zoo nyob rau hauv lub replica, uas yuav rov qab los ua thawj coj.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 11. Tus 1 ntog. Thaum muaj qhov tsis ua tiav, ntau cov lus ploj

Tus neeg tsim khoom tsim kev sib txuas nrog tus broker kawg thiab pom tias tam sim no nws yog tus thawj coj ntawm ntu. Nws pib xa xov mus rau tus broker 3.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 12. Tom qab luv luv, cov lus raug xa rov qab mus rau ntu 0

Peb pom tias, sib nrug los ntawm kev cuam tshuam luv luv los tsim kev sib txuas tshiab thiab tshawb nrhiav tus thawj coj tshiab, cov chaw tsim khoom tau xa cov lus tas li. Qhov kev teeb tsa no ua kom muaj qhov muaj nyob ntawm tus nqi sib xws (cov ntaub ntawv kev ruaj ntseg). Kafka poob ntau txhiab cov lus tab sis txuas ntxiv lees txais cov ntawv sau tshiab.

Acks = tag nrho thiab ISR

Cia peb rov ua qhov xwm txheej no dua, tab sis nrog acks = tag nrho. Broker 3 muaj qhov nruab nrab latency ntawm plaub vib nas this. Cov chaw tsim khoom xa xov nrog acks = tag nrho, thiab tam sim no tsis tau txais cov lus teb ceev. Tus thawj coj tos cov lus kom tau txais kev cawmdim los ntawm tag nrho cov replicas hauv ISR.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 13. ISR nrog peb replicas. Ib qho yog qeeb, ua rau cov ntaub ntawv qeeb

Tom qab plaub vib nas this ntawm kev ncua ntxiv, tus broker 2 xa ib qho ack. Tag nrho cov replicas yog tam sim no hloov tshiab tag nrho.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 14. Tag nrho cov replicas txuag cov lus thiab xa ack

Broker 3 tam sim no ntog ntxiv tom qab thiab raug tshem tawm ntawm ISR. Latency tau txo qis vim tias tsis muaj qhov hloov pauv qeeb hauv ISR. Tus broker 2 tam sim no tsuas yog tos rau tus broker 1, thiab nws muaj qhov nruab nrab ntawm 500 ms.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 15. Lub replica ntawm broker 3 raug tshem tawm ntawm ISR

Tom qab ntawd tus broker 2 ntog thiab kev coj noj coj ua hla mus rau tus broker 1 yam tsis tau poob cov lus.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 16. Tus 2 ntog

Cov chaw tsim khoom nrhiav tus thawj coj tshiab thiab pib xa cov lus rau nws. Lub latency tau txo qis dua vim tias tam sim no ISR muaj ib qho kev hloov pauv! Yog li qhov kev xaiv acks = tag nrho tsis ntxiv redundancy.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 17. Replica ntawm broker 1 coj tus thawj coj yam tsis tau poob cov lus

Tom qab ntawd tus broker 1 tsoo thiab cov hlau lead mus rau tus broker 3 nrog kev poob ntawm 14238 cov lus!

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 18. Tus broker 1 tuag thiab kev hloov pauv kev coj noj coj ua nrog kev teeb tsa tsis huv ua rau cov ntaub ntawv ntau dhau

Peb tsis tuaj yeem nruab qhov kev xaiv tsis huv.leader.election.enable rau hauv lub ntsiab lus muaj tseeb. Los ntawm lub neej ntawd nws yog sib npaug cuav. Chaw acks = tag nrho с tsis huv.leader.election.enable=true muab kev nkag tau yooj yim nrog qee cov ntaub ntawv ntxiv kev ruaj ntseg. Tab sis raws li koj tau pom, peb tseem tuaj yeem poob cov lus.

Tab sis yuav ua li cas yog tias peb xav nce cov ntaub ntawv kev ruaj ntseg? Koj tuaj yeem tso tsis huv.leader.election.enable = cuav, tab sis qhov no yuav tsis tas tiv thaiv peb ntawm cov ntaub ntawv poob. Yog tias tus thawj coj poob qis thiab coj cov ntaub ntawv nrog nws, ces cov lus tseem ploj, ntxiv rau qhov muaj ploj mus txog thaum tus thawj tswj hwm kho qhov xwm txheej.

Nws yog qhov zoo dua los xyuas kom meej tias tag nrho cov lus rov ua dua, thiab muab pov tseg cov ntaub ntawv. Tom qab ntawd, tsawg kawg los ntawm tus broker qhov kev xav, cov ntaub ntawv poob tsuas yog ua tau thaum muaj ob lossis ntau qhov ua tsis tiav ib txhij.

Acks = tag nrho, min.insync.replicas thiab ISR

Nrog lub ntsiab lus configuration min.insync.replicas Peb tab tom nce qib ntawm cov ntaub ntawv kev ruaj ntseg. Cia peb mus txog qhov kawg ntawm qhov xwm txheej dhau los dua, tab sis lub sijhawm no nrog min.insync.replicas=2.

Yog li tus broker 2 muaj tus thawj coj rov ua dua thiab cov neeg taug qab ntawm tus broker 3 raug tshem tawm ntawm ISR.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 19. ISR los ntawm ob lub replicas

Broker 2 ntog thiab kev coj noj coj ua hla mus rau tus broker 1 yam tsis tau poob ntawm cov lus. Tab sis tam sim no lub ISR muaj tsuas yog ib tug replica. Qhov no tsis ua raws li tus lej tsawg kawg nkaus kom tau txais cov ntaub ntawv, thiab yog li tus broker teb rau qhov kev sim sau nrog qhov yuam kev NotEnoughReplicas.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 20. Tus naj npawb ntawm ISR yog ib qho qis dua li teev hauv min.insync.replicas

Qhov kev teeb tsa no ua rau muaj kev sib haum xeeb. Ua ntej lees paub cov lus, peb xyuas kom meej tias nws tau sau rau tsawg kawg ob daim ntawv luam tawm. Qhov no ua rau cov neeg tsim khoom muaj kev ntseeg siab ntau dua. Ntawm no, cov lus poob tsuas yog ua tau yog tias ob qhov kev hloov pauv ua tsis tiav ib txhij nyob rau lub sijhawm luv kom txog thaum cov lus raug rov ua dua rau tus neeg ua raws ntxiv, uas tsis zoo li. Tab sis yog tias koj yog super paranoid, koj tuaj yeem teeb tsa qhov rov ua dua rau 5, thiab min.insync.replicas los ntawm 3. Ntawm no peb tus broker yuav tsum poob tib lub sijhawm kom poob cov ntaub ntawv! Tau kawg, koj them rau qhov kev ntseeg siab no ntxiv latency.

Thaum nkag tau yog tsim nyog rau cov ntaub ntawv kev ruaj ntseg

Xws li hauv Case nrog RabbitMQ, qee zaum kev nkag mus tau yog qhov tsim nyog rau cov ntaub ntawv kev ruaj ntseg. Nov yog yam koj yuav tsum xav txog:

  • Tus tshaj tawm puas tuaj yeem rov qab ua qhov yuam kev thiab muaj cov kev pabcuam saum toj kawg nkaus lossis cov neeg siv rov sim dua tom qab?
  • Tus tshaj tawm puas tuaj yeem khaws cov lus hauv zos lossis hauv cov ntaub ntawv kom rov sim dua tom qab?

Yog tias cov lus teb tsis yog, ces optimizing muaj pab txhim kho cov ntaub ntawv kev ruaj ntseg. Koj yuav poob cov ntaub ntawv tsawg dua yog tias koj xaiv qhov muaj es tsis txhob kaw. Yog li, nws tag nrho los mus nrhiav qhov sib npaug, thiab qhov kev txiav txim siab nyob ntawm qhov xwm txheej tshwj xeeb.

Lub ntsiab lus ntawm ISR

ISR suite tso cai rau koj xaiv qhov zoo tshaj qhov sib npaug ntawm cov ntaub ntawv kev ruaj ntseg thiab latency. Piv txwv li, xyuas kom muaj nyob rau hauv qhov kev tshwm sim tsis ua hauj lwm ntawm feem ntau ntawm replicas, txo qhov cuam tshuam ntawm cov tuag los yog qeeb replicas nyob rau hauv cov nqe lus ntawm latency.

Peb xaiv lub ntsiab ntawm peb tus kheej replica.lag.time.max.ms raws li koj xav tau. Qhov tseem ceeb, qhov ntsuas no txhais tau tias ncua sijhawm ntev npaum li cas peb txaus siab txais thaum twg acks = tag nrho. Lub neej ntawd tus nqi yog kaum vib nas this. Yog tias qhov no ntev rau koj, koj tuaj yeem txo nws. Tom qab ntawd qhov zaus ntawm kev hloov pauv hauv ISR yuav nce ntxiv, vim cov neeg ua raws yuav raug tshem tawm thiab ntxiv ntau zaus.

RabbitMQ tsuas yog cov iav tsom iav uas yuav tsum tau rov ua dua. Cov iav qeeb qhia ntxiv latency, thiab cov iav tuag tuaj yeem tos kom txog thaum cov pob ntawv uas kuaj xyuas qhov muaj nyob ntawm txhua qhov (net zuam) los teb. ISR yog ib txoj hauv kev nthuav kom zam cov teeb meem latency no. Tab sis peb pheej hmoo poob rov qab vim tias ISR tuaj yeem txo qis rau tus thawj coj. Txhawm rau zam qhov kev pheej hmoo no, siv qhov chaw min.insync.replicas.

Client kev twb kev txuas guarantee

Hauv chaw bootstrap.servers tus neeg tsim khoom thiab cov neeg siv khoom tuaj yeem hais qhia ntau tus broker rau kev sib txuas cov neeg siv khoom. Lub tswv yim yog tias thaum ib qho ntawm nqes mus, muaj ntau qhov chaw seem uas tus neeg siv tuaj yeem qhib kev sib txuas rau. Cov no tsis yog cov thawj coj ntawm ntu, tab sis tsuas yog lub caij nplooj ntoo hlav rau kev thauj khoom thawj zaug. Tus neeg thov tuaj yeem nug lawv qhov twg ntawm tus tswv tsev nyeem / sau cov thawj coj faib.

Hauv RabbitMQ, cov neeg siv khoom tuaj yeem txuas mus rau txhua qhov ntawm, thiab kev sib txuas sab hauv xa cov lus thov mus rau qhov twg nws yuav tsum mus. Qhov no txhais tau tias koj tuaj yeem nruab ib lub load balancer nyob rau hauv pem hauv ntej ntawm RabbitMQ. Kafka xav kom cov neeg siv khoom txuas mus rau cov node uas tuav tus thawj coj sib faib. Nyob rau hauv cov xwm txheej zoo li no, koj tsis tuaj yeem nruab lub load balancer. Sau npe bootstrap.servers Nws yog ib qho tseem ceeb uas cov neeg siv khoom tuaj yeem nkag mus thiab nrhiav qhov tseeb ntawm qhov tseeb tom qab ua tsis tiav.

Kafka Consensus Architecture

Txog rau tam sim no, peb tsis tau xav txog yuav ua li cas pawg kawm paub txog kev poob ntawm tus broker thiab yuav xaiv tus thawj coj tshiab li cas. Yuav kom nkag siab tias Kafka ua haujlwm li cas nrog kev faib tawm hauv lub network, koj yuav tsum xub nkag siab txog qhov kev pom zoo tsim qauv.

Txhua Kafka pawg raug xa mus nrog rau Zookeeper pawg, uas yog qhov kev pabcuam kev pom zoo uas tso cai rau lub kaw lus kom ncav cuag qhov kev pom zoo ntawm qee lub xeev, ua qhov tseem ceeb tshaj qhov muaj. Kev tso cai los ntawm feem ntau ntawm Zookeeper nodes yuav tsum pom zoo nyeem thiab sau cov haujlwm.

Zookeeper khaws lub xeev ntawm pawg:

  • Cov npe ntawm cov ncauj lus, ntu, kev teeb tsa, cov thawj coj tam sim no replicas, nyiam replicas.
  • Pawg neeg. Txhua tus broker pings Zookeeper pawg. Yog tias nws tsis tau txais ping nyob rau lub sijhawm teev tseg, ces Zookeeper sau tus broker tsis muaj.
  • Xaiv lub ntsiab thiab seem ntawm cov maub los.

Cov tswj ntawm node yog ib qho ntawm Kafka brokers uas yog lub luag hauj lwm rau xaiv cov thawj coj replica. Zookeeper xa cov ntawv ceeb toom rau tus tswj hwm txog kev koom tes hauv pawg thiab cov ncauj lus hloov pauv, thiab tus tswj hwm yuav tsum ua raws li cov kev hloov pauv no.

Piv txwv li, cia peb coj ib lub ntsiab lus tshiab nrog kaum partitions thiab replication factor ntawm 3. Tus maub los yuav tsum xaiv tus thawj coj rau txhua qhov kev faib tawm, sim ua kom zoo tshaj plaws faib cov thawj coj ntawm cov brokers.

Rau txhua seem tswj:

  • hloov kho cov ntaub ntawv hauv Zookeeper txog ISR thiab tus thawj coj;
  • Xa ib Tus Thawj CojAndISRCommand rau txhua tus broker uas tuav ib qho kev sib faib ntawm qhov kev faib tawm no, qhia rau cov neeg ua haujlwm txog ISR thiab tus thawj coj.

Thaum tus broker nrog tus thawj coj poob, Zookeeper xa ntawv ceeb toom rau tus tswj, thiab nws xaiv tus thawj coj tshiab. Ib zaug ntxiv, tus tswj hwm thawj zaug hloov kho Zookeeper thiab tom qab ntawd xa cov lus txib rau txhua tus broker ceeb toom lawv txog kev hloov pauv kev coj noj coj ua.

Txhua tus thawj coj yog lub luag haujlwm rau kev nrhiav ISRs. Chaw replica.lag.time.max.ms txiav txim seb leej twg yuav nkag rau ntawd. Thaum ISR hloov pauv, tus thawj coj xa cov ntaub ntawv tshiab rau Zookeeper.

Zookeeper yeej ib txwm paub txog txhua yam kev hloov pauv kom nyob rau hauv qhov xwm txheej tsis ua haujlwm, kev tswj hwm hloov mus rau tus thawj coj tshiab.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 21. Kafka Kev pom zoo

Replication raws tu qauv

To taub cov ntsiab lus ntawm replication pab koj nkag siab zoo dua cov ntaub ntawv poob scenarios.

Sampling queries, Log End Offset (LEO) thiab Highwater Mark (HW)

Peb txiav txim siab tias cov neeg ua raws sijhawm xa cov lus thov mus rau tus thawj coj. Lub sijhawm luv luv yog 500ms. Qhov no txawv ntawm RabbitMQ nyob rau hauv uas nyob rau hauv RabbitMQ replication tsis yog pib los ntawm daim iav queue tab sis los ntawm tus tswv. Tus tswv thawb hloov mus rau daim iav.

Tus thawj coj thiab tag nrho cov neeg taug qab txuag lub Log End Offset (LEO) thiab Highwater (HW) daim ntawv lo. Lub cim LEO khaws cov offset ntawm cov lus kawg hauv lub zos replica, thiab HW tuav qhov offset ntawm qhov kev cog lus kawg. Nco ntsoov tias rau kev ua raws li txoj cai, cov lus yuav tsum tau txuas ntxiv mus thoob plaws tag nrho ISR replicas. Qhov no txhais tau hais tias LEO feem ntau yog me ntsis ua ntej HW.

Thaum tus thawj coj tau txais cov lus, nws khaws nws hauv zos. Tus neeg taug qab ua qhov kev thov los ntawm kev xa nws LEO. Tus thawj coj ces xa ib pawg ntawm cov lus pib los ntawm LEO no thiab tseem xa HW tam sim no. Thaum tus thawj coj tau txais cov ntaub ntawv uas tag nrho cov replicas tau khaws cov lus ntawm qhov muab offset, nws txav HW cim. Tsuas yog tus thawj coj thiaj li txav tau HW, thiab yog li txhua tus neeg ua raws yuav paub tus nqi tam sim no hauv cov lus teb rau lawv qhov kev thov. Qhov no txhais tau hais tias cov neeg ua raws yuav poob qab tus thawj coj hauv ob qho lus thiab HW kev paub. Cov neeg siv khoom tau txais cov lus tsuas yog mus txog HW tam sim no.

Nco ntsoov tias "persisted" txhais tau tias sau rau lub cim xeeb, tsis yog rau disk. Rau kev ua tau zoo, Kafka synchronizes rau disk ntawm lub sijhawm tshwj xeeb. RabbitMQ kuj muaj lub sijhawm zoo li no, tab sis nws yuav xa ntawv lees paub rau tus tshaj tawm tsuas yog tom qab tus tswv thiab txhua daim iav tau sau cov lus rau disk. Cov neeg tsim tawm Kafka, rau qhov ua tau zoo, txiav txim siab xa ib qho ack sai li sai tau cov lus sau rau hauv nco. Kafka bets uas redundancy offsets qhov kev pheej hmoo ntawm luv luv khaws cov lus lees paub hauv lub cim xeeb nkaus xwb.

Cov thawj coj ua tsis tiav

Thaum tus thawj coj ntog, Zookeeper ceeb toom rau tus tswj, thiab nws xaiv tus thawj coj tshiab. Tus thawj coj tshiab tau teeb tsa HW cim tshiab raws li nws LEO. Cov neeg ua raws ces tau txais cov ntaub ntawv hais txog tus thawj coj tshiab. Nyob ntawm qhov version ntawm Kafka, cov neeg taug qab yuav xaiv ib qho ntawm ob qhov xwm txheej:

  1. Nws yuav txiav lub log hauv zos mus rau HW paub thiab xa ib daim ntawv thov mus rau tus thawj coj tshiab rau cov lus tom qab lub cim no.
  2. Yuav xa daim ntawv thov mus rau tus thawj coj kom paub txog HW thaum lub sijhawm nws raug xaiv los ua thawj coj, thiab tom qab ntawd txiav lub log rau qhov kev tawm tsam no. Tom qab ntawd nws yuav pib ua cov ntawv thov ncua sij hawm pib ntawm qhov offset no.

Ib tus neeg tuaj yeem yuav tsum tau txiav lub log rau cov laj thawj hauv qab no:

  • Thaum ib tus thawj coj ua tsis tiav, thawj tus thawj coj hauv ISR tau sau npe nrog Zookeeper yeej qhov kev xaiv tsa thiab dhau los ua tus thawj coj. Txhua tus neeg ua raws ntawm ISR, txawm hais tias suav tias "hauv sync," tej zaum yuav tsis tau txais cov ntawv theej ntawm tag nrho cov lus los ntawm tus thawj coj qub. Nws yog tag nrho ua tau hais tias cov featured follower tsis muaj cov ntaub ntawv tshiab tshaj plaws. Kafka xyuas kom meej tias tsis muaj qhov sib txawv ntawm cov khoom siv. Yog li, kom tsis txhob muaj qhov sib txawv, txhua tus neeg ua raws yuav tsum tau txiav nws lub cav rau HW tus nqi ntawm tus thawj coj tshiab thaum lub sijhawm nws xaiv tsa. Qhov no yog lwm qhov laj thawj vim li cas thiaj li teeb tsa acks = tag nrho tseem ceeb heev rau kev sib xws.
  • Cov lus raug sau ib ntus rau disk. Yog hais tias tag nrho cov pawg no tsis ua hauj lwm tib lub sij hawm, ces replicas nrog txawv offsets yuav muab cia rau hauv lub disks. Nws yog qhov ua tau tias thaum cov neeg ua haujlwm rov qab los hauv online, tus thawj coj tshiab uas raug xaiv yuav nyob tom qab nws cov thwjtim vim nws tau txais kev cawmdim rau disk ua ntej lwm tus.

Reunion nrog pawg

Thaum rov koom nrog pawg, cov khoom siv rov ua dua ib yam li thaum tus thawj coj ua tsis tiav: lawv tshawb xyuas tus thawj coj tus qauv thiab txiav lawv lub log rau nws HW (thaum lub sijhawm xaiv tsa). Hauv kev sib piv, RabbitMQ sib npaug sib npaug sib koom ua ke raws li tshiab kiag li. Hauv ob qho xwm txheej, tus broker pov tseg ib lub xeev uas twb muaj lawm. Yog tias siv tsis siv neeg synchronization, ces tus tswv yuav tsum rov ua dua tag nrho cov ntsiab lus tam sim no rau daim iav tshiab hauv "cia tag nrho lub ntiaj teb tos" txoj kev. Tus tswv tsis lees txais cov haujlwm nyeem lossis sau ntawv thaum lub sijhawm ua haujlwm no. Txoj kev no tsim teeb meem hauv cov kab loj.

Kafka yog lub log sib faib thiab feem ntau nws khaws cov lus ntau dua li RabbitMQ kab, qhov twg cov ntaub ntawv raug tshem tawm ntawm kab tom qab nws tau nyeem. Active queues yuav tsum nyob twj ywm me me. Tab sis Kafka yog ib lub cav nrog nws tus kheej txoj cai tuav tseg, uas tuaj yeem teem sijhawm ib hnub lossis lub lis piam. Txoj kev thaiv kab thaiv thiab tag nrho synchronization mus kom ze yog qhov tsis tsim nyog rau lub log sib faib. Hloov chaw, Kafka cov thwjtim tsuas yog txiav lawv lub log rau tus thawj coj HW (thaum lub sijhawm nws xaiv tsa) yog tias lawv daim ntawv luam ua ntej ntawm tus thawj coj. Hauv qhov muaj feem ntau, thaum tus neeg taug qab yog tom qab, nws tsuas yog pib ua kev thov kev thov pib nrog nws tam sim no LEO.

Cov neeg tshiab lossis rov tuaj koom nrog pib sab nraum ISR thiab tsis koom nrog kev cog lus. Lawv tsuas ua hauj lwm nrog pab pawg, tau txais cov lus sai li sai tau kom txog thaum lawv ntes nrog tus thawj coj thiab nkag mus rau ISR. Tsis muaj qhov xauv nkag thiab tsis tas yuav pov tseg tag nrho koj cov ntaub ntawv.

Poob kev sib txuas

Kafka muaj cov khoom siv ntau dua li RabbitMQ, yog li nws muaj ntau txoj kev coj tus cwj pwm thaum pawg sib txuas. Tab sis Kafka yog Ameslikas tsim rau pawg, yog li cov kev daws teeb meem tau xav zoo heev.

Hauv qab no yog ntau yam kev sib txuas tsis ua haujlwm scenarios:

  • Scenario 1: Tus follower tsis pom tus thawj coj, tab sis tseem pom Zookeeper.
  • Scenario 2: Tus thawj coj tsis pom muaj cov thwjtim, tab sis tseem pom Zookeeper.
  • Scenario 3: Tus neeg taug qab pom tus thawj coj, tab sis tsis pom Zookeeper.
  • Scenario 4: Tus thawj coj pom cov thwjtim, tab sis tsis pom Zookeeper.
  • Scenario 5: Cov neeg taug qab yog cais tawm ntawm ob qho tib si Kafka nodes thiab Zookeeper.
  • Scenario 6: Tus thawj coj yog cais tawm ntawm ob qho tib si Kafka nodes thiab Zookeeper.
  • Scenario 7: Kafka maub los node tsis tuaj yeem pom lwm Kafka node.
  • Scenario 8: Kafka maub los tsis pom Zookeeper.

Txhua qhov xwm txheej muaj nws tus cwj pwm.

Scenario 1: Follower tsis pom tus thawj coj, tab sis tseem pom Zookeeper

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 22. Scenario 1: ISR ntawm peb replicas

Kev sib txuas tsis ua haujlwm cais tus broker 3 los ntawm tus broker 1 thiab 2, tab sis tsis yog los ntawm Zookeeper. Broker 3 tsis tuaj yeem xa cov ntawv thov ntxiv lawm. Tom qab lub sijhawm dhau mus replica.lag.time.max.ms nws raug tshem tawm ntawm ISR thiab tsis koom nrog cov lus cog lus. Thaum kev sib txuas tau rov qab los, nws yuav rov qab tau txais kev thov thiab koom nrog ISR thaum nws ntes nrog tus thawj coj. Zookeeper tseem yuav tau txais pings thiab xav tias tus broker tseem ciaj sia thiab zoo.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 23. Scenario 1: Tus broker raug tshem tawm ntawm ISR yog tias tsis tau txais kev thov los ntawm nws hauv lub sijhawm replica.lag.time.max.ms

Tsis muaj kev sib cais-hlwb lossis node ncua kev kawm zoo li hauv RabbitMQ. Hloov chaw, redundancy raug txo.

Scenario 2: Tus Thawj Coj tsis pom muaj cov thwjtim, tab sis tseem pom Zookeeper

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 24. Scenario 2. Thawj coj thiab ob tug thwjtim

Kev tawg hauv kev sib txuas hauv network cais tus thawj coj los ntawm cov thwjtim, tab sis tus broker tseem pom Zookeeper. Ib yam li thawj qhov xwm txheej, ISR poob qis, tab sis lub sijhawm no tsuas yog rau tus thawj coj raws li txhua tus neeg taug qab tsis xa cov lus thov. Ntxiv dua thiab, tsis muaj kev faib cov logic. Hloov chaw, muaj qhov poob rov qab rau cov lus tshiab kom txog thaum kev sib txuas tau rov qab los. Zookeeper tseem tau txais pings thiab ntseeg tias tus broker tseem muaj sia nyob thiab zoo.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 25. Scenario 2. ISR tau txo qis rau tus thawj coj nkaus xwb

Scenario 3. Follower pom tus thawj coj, tab sis tsis pom Zookeeper

Tus neeg taug qab yog cais los ntawm Zookeeper, tab sis tsis yog los ntawm tus broker nrog tus thawj coj. Raws li qhov tshwm sim, tus neeg ua raws txuas ntxiv mus thov kev thov thiab ua tus tswv cuab ntawm ISR. Zookeeper tsis tau txais pings thiab sau npe tus broker tsoo, tab sis txij li nws tsuas yog tus neeg taug qab, tsis muaj qhov tshwm sim tom qab rov qab los.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 26. Scenario 3: Tus neeg taug qab tseem xa cov lus thov mus rau tus thawj coj

Scenario 4. Thawj Tswj Hwm pom cov thwjtim, tab sis tsis pom Zookeeper

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 27. Scenario 4. Thawj coj thiab ob tug thwjtim

Tus thawj coj raug cais los ntawm Zookeeper, tab sis tsis yog los ntawm cov neeg ua haujlwm nrog cov thwjtim.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 28. Scenario 4: Tus thawj coj cais tawm ntawm Zookeeper

Tom qab qee lub sijhawm, Zookeeper yuav tso npe rau tus broker tsis ua haujlwm thiab ceeb toom rau tus tswj xyuas txog nws. Nws yuav xaiv ib tug thawj coj tshiab ntawm nws cov thwjtim. Txawm li cas los xij, tus thawj coj tseem yuav xav tias nws yog tus thawj coj thiab tseem yuav lees txais kev nkag los ntawm aws = 1. Cov neeg ua raws tsis xa nws mus thov, yog li nws yuav xav tias lawv tuag thiab sim txo ISR rau nws tus kheej. Tab sis txij li nws tsis muaj kev sib txuas nrog Zookeeper, nws yuav tsis tuaj yeem ua qhov no, thiab thaum lub sijhawm ntawd yuav tsis kam lees txais kev nkag mus ntxiv.

Lus acks = tag nrho yuav tsis tau txais kev lees paub vim tias ISR thawj zaug tig rau txhua qhov kev hloov pauv, thiab cov lus tsis ncav cuag lawv. Thaum thawj tus thawj coj sim tshem lawv tawm ntawm ISR, nws yuav ua tsis tau li ntawd thiab yuav tsum tsis lees txais cov lus txhua.

Cov neeg siv khoom sai sai pom qhov hloov pauv ntawm tus thawj coj thiab pib xa cov ntaub ntawv mus rau lub server tshiab. Thaum lub network rov qab los, thawj tus thawj coj pom tias nws tsis yog tus thawj coj lawm thiab txiav nws lub log rau HW tus nqi uas tus thawj coj tshiab tau muaj thaum lub sijhawm tsis ua haujlwm kom tsis txhob muaj qhov sib txawv. Tom qab ntawd nws yuav pib xa cov ntawv thov mus rau tus thawj coj tshiab. Tag nrho cov ntaub ntawv los ntawm thawj tus thawj coj uas tsis tau rov ua dua rau tus thawj coj tshiab tau ploj. Ntawd yog, cov lus uas tsis tau lees paub los ntawm thawj tus thawj coj hauv ob peb vib nas this thaum ob tus thawj coj ua haujlwm yuav ploj mus.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 29. Scenario 4. Tus thawj coj ntawm tus broker 1 yuav ua raws li tom qab lub network rov qab los

Scenario 5: Cov neeg taug qab yog cais tawm ntawm ob qho tib si Kafka nodes thiab Zookeeper

Cov neeg taug qab yog cais tawm ntawm ob qho tib si Kafka nodes thiab Zookeeper. Nws tsuas yog tshem tawm nws tus kheej ntawm ISR kom txog thaum lub network rov qab los, thiab tom qab ntawd ntes nrog lwm tus.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 30. Scenario 5: Cov neeg taug qab cais tawm raug tshem tawm ntawm ISR

Scenario 6: Tus thawj coj yog cais tawm ntawm ob qho tib si Kafka nodes thiab Zookeeper

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 31. Scenario 6. Thawj coj thiab ob tug thwjtim

Tus thawj coj raug cais tawm ntawm nws cov thwjtim, tus tswj hwm thiab Zookeeper. Rau ib lub sij hawm luv luv nws tseem yuav txais kev nkag los ntawm aws = 1.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 32. Scenario 6: cais tus thawj coj los ntawm lwm cov Kafka thiab Zookeeper nodes

Tsis tau txais kev thov tom qab tas sijhawm replica.lag.time.max.ms, nws yuav sim txo ISR rau nws tus kheej, tab sis yuav ua tsis tau vim tias tsis muaj kev sib txuas lus nrog Zookeeper, ces nws yuav tsum tsis kam lees sau.

Lub caij no, Zookeeper yuav khij tus broker cais tias tuag thiab tus tswj yuav xaiv tus thawj coj tshiab.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 33. Scenario 6. Ob tug thawj coj

Thawj tus thawj coj tuaj yeem lees txais cov ntawv nkag rau ob peb feeb, tab sis tom qab ntawd tso tseg tsis lees txais cov lus. Cov neeg siv khoom tau hloov kho txhua 60 vib nas this nrog cov metadata tshiab. Lawv yuav raug ceeb toom txog tus thawj coj hloov pauv thiab yuav pib xa cov ntawv nkag mus rau tus thawj coj tshiab.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 34. Scenario 6: Cov neeg tsim khoom hloov mus rau tus thawj coj tshiab

Txhua qhov kev lees paub nkag los ntawm thawj tus thawj coj txij li qhov kev sib txuas yuav ploj mus. Thaum lub network rov qab los, thawj tus thawj coj yuav pom los ntawm Zookeeper tias nws tsis yog tus thawj coj lawm. Tom qab ntawd nws yuav txiav nws daim ntawv teev npe mus rau HW ntawm tus thawj coj tshiab thaum lub sijhawm xaiv tsa thiab pib xa cov lus thov ua raws li.

RabbitMQ vs Kafka: Ua Tsis Txaus Siab thiab Muaj Ntau
Rice. 35. Scenario 6: Thawj thawj coj los ua ib tug raws tom qab kev sib txuas hauv network tau rov qab los

Hauv qhov xwm txheej no, kev sib cais sib cais yuav tshwm sim rau lub sijhawm luv, tab sis tsuas yog yog tias aws = 1 ΠΈ min.insync.replicas kuj 1. Kev sib cais ntawm kev txiav txim siab yuav xaus tom qab lub network rov qab los, thaum tus thawj coj paub tias nws tsis yog tus thawj coj lawm, lossis thaum txhua tus neeg siv paub tias tus thawj coj tau hloov pauv thiab pib sau ntawv rau tus thawj coj tshiab - qhov twg tshwm sim thawj zaug. Txawm li cas los xij, qee cov lus yuav ploj, tab sis tsuas yog nrog aws = 1.

Muaj lwm qhov sib txawv ntawm qhov xwm txheej no qhov twg, ua ntej lub network sib cais, cov neeg ua raws tau poob qab thiab tus thawj coj compressed ISR rau nws tus kheej xwb. Tom qab ntawd nws yuav raug rho tawm vim poob ntawm kev sib txuas. Tus thawj coj tshiab raug xaiv, tab sis tus thawj coj tseem tseem lees txais kev nkag, txawm tias acks = tag nrho, vim tsis muaj leej twg hauv ISR tsuas yog nws. Cov ntaub ntawv no yuav ploj thaum lub network rov qab los. Tib txoj kev uas yuav zam qhov kev xaiv no yog min.insync.replicas = 2.

Scenario 7: Kafka Controller Node Tsis Pom Lwm Kafka Node

Feem ntau, thaum qhov kev sib txuas nrog Kafka node ploj lawm, tus maub los yuav tsis tuaj yeem xa cov ntaub ntawv hloov pauv tus thawj coj rau nws. Qhov phem tshaj plaws, qhov no yuav ua rau muaj kev sib cais ntawm lub sijhawm luv luv, xws li hauv scenario 6. Feem ntau, tus broker yuav tsis dhau los ua tus neeg sib tw ua thawj coj yog tias yav tom ntej ua tsis tiav.

Scenario 8: Kafka maub los tsis pom Zookeeper

Zookeeper yuav tsis tau txais ping los ntawm tus tswj poob thiab yuav xaiv Kafka node tshiab ua tus tswj. Tus thawj tswj hwm tuaj yeem nthuav tawm nws tus kheej li ntawd, tab sis nws tsis tau txais kev ceeb toom los ntawm Zookeeper, yog li nws yuav tsis muaj cov haujlwm ua. Thaum lub network rov qab los, nws yuav paub tias nws tsis yog tus tswj hwm, tab sis tau dhau los ua Kafka node tsis tu ncua.

Cov lus xaus los ntawm cov xwm txheej

Peb pom tias qhov poob ntawm kev sib txuas ntawm cov neeg siv tsis ua rau cov lus poob, tab sis tsuas yog ib ntus txo qis kom txog thaum lub network rov qab los. Qhov no, tau kawg, tuaj yeem ua rau cov ntaub ntawv poob yog tias ib lossis ntau lub nodes ploj.

Yog tias tus thawj coj sib cais los ntawm Zookeeper vim tsis muaj kev sib txuas, qhov no tuaj yeem ua rau cov lus ploj ntawm aws = 1. Tsis muaj kev sib txuas lus nrog Zookeeper ua rau muaj kev sib cais luv luv nrog ob tus thawj coj. Qhov teeb meem no yog daws los ntawm qhov parameter acks = tag nrho.

Parameter min.insync.replicas rau hauv ob lossis ntau qhov replicas muab kev lees paub ntxiv tias cov xwm txheej luv luv no yuav tsis ua rau cov lus ploj xws li hauv Scenario 6.

Summary of Lost Messages

Cia peb teev txhua txoj hauv kev koj tuaj yeem poob cov ntaub ntawv hauv Kafka:

  • Txhua tus thawj coj ua tsis tau yog tias cov lus raug lees paub siv aws = 1
  • Ib qho kev hloov pauv tsis huv ntawm kev coj noj coj ua, uas yog, rau cov neeg taug qab sab nraud ISR, txawm tias acks = tag nrho
  • Kev cais tus thawj coj los ntawm Zookeeper yog tias cov lus tau lees paub siv aws = 1
  • Ua tiav kev sib cais ntawm tus thawj coj uas twb tau ua rau pawg ISR poob rau nws tus kheej. Tag nrho cov lus yuav ploj, txawm acks = tag nrho. Qhov no tsuas muaj tseeb yog tias min.insync.replicas=1.
  • Simultaneous tsis ua hauj lwm ntawm tag nrho cov muab faib nodes. Vim tias cov lus tau lees paub los ntawm kev nco, qee qhov tseem tsis tau sau rau disk. Tom qab rebooting cov servers, qee cov lus yuav ploj lawm.

Kev hloov pauv kev coj noj coj ua tsis zoo tuaj yeem zam tau los ntawm kev txwv tsis pub lawv lossis ua kom muaj tsawg kawg ob qhov rov ua dua. Qhov kev teeb tsa ruaj khov tshaj plaws yog kev sib xyaw ua ke acks = tag nrho ΠΈ min.insync.replicas tshaj 1.

Kev sib piv ncaj qha ntawm kev ntseeg tau ntawm RabbitMQ thiab Kafka

Txhawm rau kom muaj kev ntseeg siab thiab muaj siab, ob lub platforms siv lub hauv paus thiab theem nrab replication system. Txawm li cas los xij, RabbitMQ muaj lub pob taws Achilles. Thaum rov txuas dua tom qab tsis ua haujlwm, cov nodes pov tseg lawv cov ntaub ntawv thiab synchronization raug thaiv. Qhov no ob chav whammy hu rau lo lus nug txog qhov ntev ntawm cov kab loj hauv RabbitMQ. Koj yuav tsum lees txais qhov txo qis dua lossis ncua sij hawm thaiv ntev. Txo redundancy ua rau muaj kev pheej hmoo ntawm cov ntaub ntawv loj heev. Tab sis yog hais tias cov queues me me, ces rau lub hom phiaj ntawm redundancy, lub sij hawm luv luv ntawm qhov tsis muaj (ob peb vib nas this) tuaj yeem cuam tshuam nrog kev siv cov kev sib txuas ntxiv.

Kafka tsis muaj qhov teeb meem no. Nws muab cov ntaub ntawv pov tseg tsuas yog los ntawm qhov sib txawv ntawm tus thawj coj thiab tus ua raws. Tag nrho cov ntaub ntawv qhia tau raug cawm. Tsis tas li ntawd, replication tsis thaiv qhov system. Tus thawj coj tseem lees txais cov ntawv tshaj tawm thaum cov neeg taug qab tshiab ntes tau, yog li rau devops, koom lossis rov koom nrog pawg ua haujlwm tsis tseem ceeb. Tau kawg, tseem muaj teeb meem xws li network bandwidth thaum rov ua dua. Yog tias koj ntxiv ntau tus neeg ua raws tib lub sijhawm, koj tuaj yeem ntsib qhov txwv bandwidth.

RabbitMQ yog qhov zoo tshaj rau Kafka hauv kev ntseeg siab thaum ntau lub servers hauv pawg tsis ua haujlwm tib lub sijhawm. Raws li peb tau hais lawm, RabbitMQ xa kev lees paub rau tus tshaj tawm tsuas yog tom qab cov lus sau rau disk los ntawm tus tswv thiab txhua daim iav. Tab sis qhov no ntxiv latency ntxiv rau ob qho laj thawj:

  • fsync txhua ob peb puas milliseconds
  • Qhov tsis ua tiav ntawm daim iav tuaj yeem pom tsuas yog tom qab lub neej ntawm cov pob ntawv uas kuaj xyuas qhov muaj nyob ntawm txhua qhov ntawm (net zuam) tau tas sijhawm. Yog tias daim iav qeeb los yog ntog, qhov no ntxiv kev ncua.

Kafka tus thawj koom ruam yog tias yog tias cov lus khaws cia hla ntau lub nodes, nws tuaj yeem lees paub cov lus sai li sai tau thaum lawv ntaus cim xeeb. Vim li no, muaj kev pheej hmoo ntawm kev poob lus ntawm txhua hom (txawm acks = tag nrho, min.insync.replicas=2) nyob rau hauv cov ntaub ntawv ntawm ib txhij tsis ua hauj lwm.

Zuag qhia tag nrho, Kafka nthuav tawm cov software ua tau zoo dua thiab yog tsim los ntawm hauv av rau pawg. Tus naj npawb ntawm cov neeg tuaj yeem nce mus rau 11 yog tias tsim nyog rau kev ntseeg tau. Replication factor 5 thiab tsawg kawg ntawm cov replicas hauv synchronization min.insync.replicas=3 yuav ua cov lus poob ib qho kev tshwm sim tsawg heev. Yog tias koj qhov kev tsim kho tuaj yeem pab txhawb qhov kev sib piv ntawm qhov sib piv thiab theem ntawm kev rov ua dua, ces koj tuaj yeem xaiv qhov kev xaiv no.

RabbitMQ pawg yog qhov zoo rau cov kab me me. Tab sis txawm tias cov kab me me tuaj yeem loj hlob sai thaum muaj tsheb khiav hnyav. Thaum cov kab loj tuaj, koj yuav tsum xaiv qhov nyuaj ntawm qhov muaj thiab kev ntseeg tau. RabbitMQ pawg yog qhov zoo tshaj plaws rau cov xwm txheej tsis zoo uas cov txiaj ntsig ntawm RabbitMQ qhov yooj yim dua qhov tsis zoo ntawm nws pawg.

Ib qho tshuaj tiv thaiv rau RabbitMQ qhov tsis zoo rau cov kab loj loj yog txhawm rau ua rau ntau cov kab me me. Yog tias koj tsis xav kom ua tiav kev xaj ntawm tag nrho cov kab, tab sis tsuas yog cov lus cuam tshuam (piv txwv li, cov lus los ntawm cov neeg siv khoom tshwj xeeb), lossis tsis xaj ib yam dab tsi, ces qhov kev xaiv no tau txais: saib kuv qhov project Rebalancer faib cov kab (qhov project tseem nyob rau theem pib).

Thaum kawg, tsis txhob hnov ​​​​qab txog ntau tus kab mob hauv pawg thiab cov txheej txheem rov ua dua ntawm RabbitMQ thiab Kafka. Sij hawm dhau mus, cov tshuab tau dhau los ua neeg paub tab thiab ruaj khov, tab sis tsis muaj lus yuav puas yog 100% kev nyab xeeb ntawm kev poob! Tsis tas li ntawd, cov xwm txheej loj tshwm sim hauv cov chaw khaws ntaub ntawv!

Yog tias kuv plam ib yam dab tsi, ua yuam kev, lossis koj tsis pom zoo nrog ib qho ntawm cov ntsiab lus, thov koj xav sau ntawv los yog hu rau kuv.

Kuv feem ntau nug: "Yuav xaiv dab tsi, Kafka lossis RabbitMQ?", "Lub platform twg zoo dua?". Qhov tseeb yog tias nws yeej nyob ntawm koj qhov xwm txheej, kev paub tam sim no, thiab lwm yam. Kuv tsis kam muab kuv lub tswv yim vim tias nws yuav dhau los ua ntau dhau los pom zoo ib lub platform rau txhua qhov kev siv thiab muaj peev xwm txwv. Kuv tau sau cov kab lus no kom koj tuaj yeem tsim koj tus kheej lub tswv yim.

Kuv xav hais tias ob lub tshuab yog cov thawj coj hauv cheeb tsam no. Tej zaum kuv yuav muaj kev tsis ncaj ncees me ntsis vim tias los ntawm kuv qhov kev paub dhau los nrog cov haujlwm kuv nyiam ua kom muaj nuj nqis xws li kev lees paub cov lus xaj thiab kev ntseeg siab.

Kuv pom lwm cov thev naus laus zis uas tsis muaj qhov kev ntseeg siab no thiab lav kev txiav txim siab, tom qab ntawd kuv saib RabbitMQ thiab Kafka thiab paub txog qhov tsis txaus ntseeg ntawm ob lub tshuab no.

Tau qhov twg los: www.hab.com

Ntxiv ib saib