RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe

В ʻatikala hope loa ua nānā mākou i ka RabbitMQ clustering no ka hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe. I kēia manawa, e ʻeli kākou i loko o Apache Kafka.

Eia ka ʻāpana o ka hana hou ʻana, ʻo ia ka ʻāpana. Loaʻa i kēlā me kēia kumuhana hoʻokahi ʻāpana a ʻoi aku paha. He alakaʻi ko kēlā me kēia māhele me ka poʻe hahai ʻole a i ʻole. I ka hana ʻana i kumuhana, kuhikuhi ʻoe i ka helu o nā ʻāpana a me ka coefficient replication. ʻO 3 ka waiwai maʻamau, ʻo ia hoʻi ʻekolu kope: hoʻokahi alakaʻi a ʻelua mau mea hahai.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 1. Hoʻokaʻawale ʻia nā ʻāpana ʻehā ma waena o ʻekolu brokers

ʻO nā noi heluhelu a kākau a pau e hele i ke alakaʻi. Hoʻouna pinepine ka poʻe hahai i nā noi i ke alakaʻi e loaʻa i nā memo hou loa. ʻAʻole huli nā mea kūʻai aku i ka poʻe hahai; aia nā mea hope no ka redundancy a me ka hoʻomanawanui hewa.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe

ʻAʻole hoʻokaʻawale

Ke hāʻule ka mea hoʻolimalima, hāʻule pinepine nā alakaʻi o kekahi mau ʻāpana. I kēlā me kēia o lākou, lilo ka mea hahai mai kekahi node i alakaʻi. ʻO ka ʻoiaʻiʻo, ʻaʻole kēia ka hihia, no ka mea, pili pū ka mea hoʻonohonoho hoʻonohonoho: inā aia nā mea hahai i hoʻonohonoho ʻia, a inā ʻaʻole, a laila ʻae ʻia ke hoʻololi ʻana i kahi kope unsynchronized. Akā, mai hoʻopaʻakikī i nā mea i kēia manawa.

Ua haʻalele ʻo Broker 3 i ka pūnaewele, a ua koho ʻia kahi alakaʻi hou no ka pauku 2 ma ka broker 2.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 2. Ua make ʻo Broker 3 a ua koho ʻia kāna mea hahai ma ka broker 2 i alakaʻi hou no ka māhele 2.

A laila, haʻalele ka broker 1 a nalo hoʻi ka pauku 1 i kona alakaʻi, nona ka kuleana i ka broker 2.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 3. Hoʻokahi mea hoʻolimalima i koe. Aia nā alakaʻi a pau ma ka mea hoʻolimalima hoʻokahi me ka ʻole redundancy

Ke hoʻi mai nei ʻo broker 1 i ka pūnaewele, hoʻohui ʻo ia i ʻehā mau mea hahai, e hāʻawi ana i kahi redundancy i kēlā me kēia pā. Akā ua mau nā alakaʻi āpau ma ka broker 2.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 4. Noho nā alakaʻi ma ka broker 2

Ke piʻi mai ka broker 3, hoʻi mākou i ʻekolu replicas no kēlā me kēia pā. Akā aia nā alakaʻi āpau ma ka broker 2.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 5. Hoʻonoho kaulike ʻole o nā alakaʻi ma hope o ka hoʻihoʻi ʻana o nā brokers 1 a me 3

Loaʻa iā Kafka kahi mea hana no ka hoʻoponopono hou ʻana o ke alakaʻi ma mua o RabbitMQ. Ma laila, pono ʻoe e hoʻohana i kahi plugin a ʻaoʻao ʻekolu paha i hoʻololi i nā kulekele no ka neʻe ʻana i ka node master ma ka hoʻemi ʻana i ka redundancy i ka wā o ka neʻe ʻana. Eia kekahi, no nā pila nui, pono mākou e ʻae i ka loaʻa ʻole i ka wā hoʻonohonoho.

Loaʻa iā Kafka ka manaʻo o "nā kope i makemake ʻia" no ke kuleana alakaʻi. Ke hana ʻia nā māhele kumuhana, hoʻāʻo ʻo Kafka e puʻunaue like i nā alakaʻi ma nā node a hōʻailona i kēlā mau alakaʻi mua i makemake ʻia. I ka wā lōʻihi, ma muli o ka hoʻihoʻi hou ʻana o ka server, nā hemahema, a me nā haʻihaʻi pili, hiki i nā alakaʻi ke hoʻopau i nā nodes ʻē aʻe, e like me ka hihia koʻikoʻi i hōʻike ʻia ma luna.

No ka hoʻoponopono ʻana i kēia, hāʻawi ʻo Kafka i ʻelua mau koho:

  • Koho auto.leader.rebalance.enable=ʻoiaʻiʻo ʻae i ka node kaohi e hoʻihoʻi hou i nā alakaʻi i nā replicas i makemake ʻia a laila e hoʻihoʻi i ka hāʻawi like ʻana.
  • Hiki i ka luna hoʻomalu ke holo i ka palapala kafka-preferred-replica-election.sh no ka hana hou lima.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 6. Nā kope ma hope o ka hoʻoponopono hou ʻana

He ʻano maʻalahi kēia o ka hemahema, akā ʻoi aku ka paʻakikī o ka ʻoiaʻiʻo, ʻoiai ʻaʻohe mea paʻakikī loa ma aneʻi. Hele mai nā mea a pau i nā replicas i hoʻonohonoho ʻia (In-Sync Replicas, ISR).

ʻO nā kope i hoʻonohonoho ʻia (ISR)

ʻO ka ISR kahi hoʻonohonoho o nā replicas o kahi ʻāpana i manaʻo ʻia ʻo "synchronized" (in-sync). He alakaʻi, akā ʻaʻole paha he poʻe hahai. Manaʻo ʻia ka mea hahai inā ua hana ʻo ia i nā kope pololei o nā memo āpau a ke alakaʻi ma mua o ka pau ʻana o ka manawa. replica.lag.time.max.ms.

Wehe ʻia kahi mea hahai mai ka hoʻonohonoho ISR inā:

  • ʻaʻole i noi e koho no ka wā replica.lag.time.max.ms (manaʻo ʻia ua make)
  • ʻAʻole hiki ke hoʻonui i ka wā o ka wā replica.lag.time.max.ms (manaʻo lohi)

Hana nā mea hahai i nā noi laʻana i ka wā replica.fetch.wait.max.ms, ka mea paʻamau i 500ms.

No ka wehewehe pono ʻana i ke kumu o ka ISR, pono mākou e nānā i nā hōʻoia mai ka mea hana a me kekahi mau hiʻohiʻona hemahema. Hiki i nā mea hana ke koho i ka wā e hoʻouna ai ka mea hoʻolimalima i ka hōʻoia:

  • acks=0, ʻaʻole i hoʻouna ʻia ka hōʻoia
  • acks=1, hoʻouna ʻia ka hōʻoia ma hope o ka kākau ʻana o ke alakaʻi i kahi leka i kāna log kūloko
  • acks=all, hoʻouna ʻia ka hōʻoia ma hope o ka kākau ʻana o nā replicas āpau i ka ISR i ka leka i nā lāʻau kūloko

Ma ka hua'ōlelo Kafka, inā ua mālama ka ISR i kahi leka, ua "hoʻokō". ʻO Acks=ʻo nā mea āpau ke koho palekana loa, akā hoʻohui pū i ka lohi hou. E nānā i ʻelua mau hiʻohiʻona o ka hāʻule ʻana a me ke ʻano o nā koho 'acks' ʻokoʻa me ka manaʻo ISR.

Acks=1 a me ISR

Ma kēia hiʻohiʻona, e ʻike mākou inā ʻaʻole kali ke alakaʻi i kēlā me kēia memo mai nā mea hahai a pau e mālama ʻia, a laila hiki ke nalowale ʻikepili inā hāʻule ke alakaʻi. Hiki ke hoʻohana ʻia a hoʻopau ʻia ka hoʻokele ʻana i kahi mea hahai ʻole ma ka hoʻonohonoho ʻana haumia.leader.election.enable.

Ma kēia laʻana, loaʻa i ka mea hana ka waiwai acks=1. Hoʻokaʻawale ʻia ka ʻāpana ma waena o nā brokers ʻekolu. Aia ʻo Broker 3 ma hope, ua hui pū ʻia me ke alakaʻi ʻewalu kekona i hala aku nei a aia ʻo 7456 mau leka ma hope. Hoʻokahi wale nō kekona ma hope o Broker 1. Hoʻouna kā mākou mea hana i kahi leka a loaʻa koke i kahi ack, me ka ʻole o ka poʻe lohi a make paha i kali ʻole ʻia e ke alakaʻi.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 7. ISR me ʻekolu kope

Hāʻule ka Broker 2 a loaʻa i ka mea hana kahi hewa pili. Ma hope o ke alakaʻi ʻana i ka broker 1, nalowale mākou i nā memo 123. ʻO ka mea hahai ma ka broker 1 he ʻāpana o ka ISR, akā ʻaʻole i hui pū ʻia me ke alakaʻi i ka wā i hāʻule ai.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 8. Nalo nā memo ke hāʻule

Ma ka hoʻonohonoho bootstrap.servers He nui nā brokers i helu ʻia e ka mea hana a hiki iā ia ke nīnau i kekahi mea hoʻolaha ʻo ia ke alakaʻi ʻāpana hou. Hoʻokumu ia i kahi pilina i ka broker 1 a hoʻomau i ka hoʻouna ʻana i nā leka.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 9. Hoʻomaka ka hoʻouna ʻana i nā leka ma hope o ka hoʻomaha pōkole

ʻO Broker 3 ʻoi aku ma hope. Hana ia i nā noi kiʻi akā ʻaʻole hiki iā ia ke hana pū. ʻO kēia paha ma muli o ka lohi o ka pilina ma waena o nā brokers, kahi mālama mālama, a me nā mea ʻē aʻe. Ua wehe ʻia mai ka ISR. I kēia manawa aia ka ISR i hoʻokahi kope - ke alakaʻi! Ke hoʻomau nei ka mea hana i nā leka a loaʻa nā hōʻoia.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 10. Ua wehe ʻia ka mea hahai ma ka broker 3 mai ka ISR

Ua iho ʻo Broker 1 a hele ke kuleana alakaʻi i ka broker 3 me ka nalowale o nā memo 15286! Loaʻa ka mea hana i kahi leka pili pili. Hiki ke hoʻololi i kahi alakaʻi ma waho o ka ISR ma muli o ka hoʻonohonoho unclean.leader.election.enable=ʻoiaʻiʻo. Inā hoʻokomo ʻia i loko wahahee, a laila ʻaʻole hiki ke hoʻololi a hōʻole ʻia nā noi heluhelu a kākau. I kēia hihia, kali mākou no ka mea hoʻolimalima 1 e hoʻi mai me kāna ʻikepili paʻa i ka replica, e lawe hou i ke alakaʻi.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 11. Hāʻule ka Broker 1. Ke hiki ʻole mai, nalowale ka nui o nā memo

Hoʻokumu ka mea hana i kahi pilina me ka mea hoʻolimalima hope loa a ʻike ʻo ia ke alakaʻi o ka ʻāpana. Hoʻomaka ʻo ia e hoʻouna i nā leka i ka broker 3.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 12. Ma hope o ka hoʻomaha pōkole, hoʻouna hou ʻia nā memo i ka pauku 0

Ua ʻike mākou, ma waho aʻe o nā pōkole pōkole e hoʻokumu i nā pilina hou a ʻimi i kahi alakaʻi hou, hoʻouna mau ka mea hana i nā leka. Mālama kēia hoʻonohonoho i ka loaʻa ʻana ma ka uku o ke kūlike (palekana ʻikepili). Ua nalowale ʻo Kafka i nā kaukani mau memo akā ua hoʻomau i ka ʻae ʻana i nā kākau hou.

Acks=a pau a me ISR

E hana hou kākou i kēia ʻano, akā me acks=a pau. Loaʻa i ka Broker 3 ka awelika latency o ʻehā kekona. Hoʻouna ka mea hana i kahi leka me acks=a pau, a i kēia manawa ʻaʻole loaʻa ka pane wikiwiki. Ke kali nei ke alakaʻi i ka memo e mālama ʻia e nā replicas a pau i ka ISR.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 13. ISR me ekolu kope. Ua lohi kekahi, i ka hopena o ka hoʻopaʻa ʻana

Ma hope o ʻehā kekona o ka lohi hou, hoʻouna ʻo broker 2 i kahi ack. Hoʻopau piha ʻia nā kope a pau.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 14. Mālama nā replicas a pau i nā memo a hoʻouna i ka ack

Ke hāʻule nei ʻo Broker 3 i hope a ua hoʻoneʻe ʻia mai ka ISR. Hoʻemi nui ʻia ka Latency no ka mea ʻaʻohe replicas lohi i koe i ka ISR. Ke kali nei ʻo Broker 2 iā broker 1 wale nō, a he 500 ms ka awelika.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 15. Hoʻokuʻu ʻia ke kope o ka broker 3 mai ka ISR

A laila hāʻule ka broker 2 a hele ke alakaʻi i ka broker 1 me ka nalowale ʻole o nā memo.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 16. Hāʻule ka Broker 2

Loaʻa ka mea hana i kahi alakaʻi hou a hoʻomaka e hoʻouna i nā leka iā ia. Hoʻemi hou ʻia ka latency no ka mea aia ka ISR i hoʻokahi kope! No laila ke koho acks=a pau ʻaʻole hoʻohui i ka redundancy.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 17. Hoʻopiʻi ma ka broker 1 ke alakaʻi me ka nalowale ʻole o nā memo

A laila hāʻule ka broker 1 a hele ke alakaʻi i ka broker 3 me ka nalowale o nā memo 14238!

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 18. Make ʻo Broker 1 a me ka hoʻololi alakaʻi ʻana me ka hoʻonohonoho maʻemaʻe e hopena i ka nalowale ʻikepili nui

ʻAʻole hiki iā mākou ke hoʻokomo i ke koho haumia.leader.election.enable i ke ano oiaio. Ma ka paʻamau, ua like ia me wahahee. Nā hoʻonohonoho acks=a pau с unclean.leader.election.enable=ʻoiaʻiʻo hāʻawi i ka hiki ke loaʻa me kekahi palekana ʻikepili i hoʻohui ʻia. Akā e like me kāu e ʻike ai, hiki iā mākou ke nalowale i nā memo.

Akā pehea inā makemake mākou e hoʻonui i ka palekana ʻikepili? Hiki iā ʻoe ke kau unclean.leader.election.enable = wahahee, akā ʻaʻole pono kēia e pale iā mākou mai ka nalowale ʻana o ka ʻikepili. Inā hāʻule ikaika ke alakaʻi a lawe pū i ka ʻikepili, a laila nalowale nā ​​​​memo, a nalowale ka loaʻa ʻana a hiki i ka hoʻoponopono ʻana i ke kūlana.

ʻOi aku ka maikaʻi o ka hoʻopaʻa ʻana i nā memo a pau, a i ʻole e hoʻolei i ka hoʻopaʻa ʻana. A laila, ma ka liʻiliʻi loa mai ka manaʻo o ka mea kūʻai aku, hiki ke nalowale i ka ʻikepili i ka manawa o ʻelua a ʻoi aku paha nā hemahema.

Acks=all, min.insync.replicas a me ISR

Me ka hoʻonohonoho kumuhana min.insync.replicas Ke hoʻonui nei mākou i ka pae o ka palekana ʻikepili. E hele hou kākou ma ka ʻaoʻao hope o ka hanana mua, akā i kēia manawa me min.insync.replicas=2.

No laila he alakaʻi kope ko ka broker 2 a ua wehe ʻia ka mea hahai ma ka broker 3 mai ka ISR.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 19. ISR mai ʻelua kope

Hāʻule ka Broker 2 a hele ke alakaʻi i ka broker 1 me ka nalowale ʻole o nā memo. Akā i kēia manawa he hoʻokahi kope wale nō ka ISR. ʻAʻole kūpono kēia i ka helu liʻiliʻi e loaʻa ai nā moʻolelo, a no laila e pane ka mea hoʻolimalima i ka hoʻāʻo kākau me kahi hewa NoEnoughReplicas.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 20. ʻO ka helu o nā ISR he hoʻokahi haʻahaʻa ma mua o ka mea i kuhikuhi ʻia ma min.insync.replicas

Hāʻawi kēia hoʻonohonoho hoʻonohonoho i ka loaʻa no ka kūlike. Ma mua o ka ʻae ʻana i kahi leka, hōʻoia mākou e kākau ʻia i ʻelua mau kope. Hāʻawi kēia i ka hilinaʻi nui i ka mea hana. Maʻaneʻi, hiki ke nalowale memo inā hāʻule nā ​​kope ʻelua i ka manawa hoʻokahi a hiki i ka hoʻihoʻi ʻia ʻana o ka leka i kahi mea hahai, ʻaʻole paha. Akā inā he super paranoid ʻoe, hiki iā ʻoe ke hoʻonohonoho i ka helu replication i 5, a min.insync.replicas e 3. Eia ekolu brokers e haule i ka manawa hookahi e lilo ka mooolelo! ʻOiaʻiʻo, uku ʻoe no kēia hilinaʻi i ka latency hou.

I ka wā e pono ai ke komo no ka palekana ʻikepili

E like me hihia me RabbitMQ, i kekahi manawa pono ke komo no ka palekana ikepili. Eia kāu mea e noʻonoʻo ai:

  • Hiki i ka mea hoʻopuka ke hoʻihoʻi i kahi hewa a hoʻāʻo hou i ka lawelawe ma luna a i ʻole ka mea hoʻohana ma hope?
  • Hiki i ka mea hoʻopuka ke mālama i ka memo ma ka ʻāina a i ʻole ma kahi waihona e hoʻāʻo hou ma hope?

Inā ʻaʻole ka pane, ʻo ka hoʻonui ʻana i ka loaʻa e hoʻomaikaʻi i ka palekana ʻikepili. E emi ana ka ʻikepili inā koho ʻoe i ka loaʻa ma mua o ka hoʻopaʻa ʻole ʻana. No laila, hele mai nā mea a pau i ka loaʻa ʻana o kahi kaulike, a ʻo ka hoʻoholo ʻana e pili ana i ke kūlana kikoʻī.

ʻO ke ʻano o ka ISR

Hāʻawi ka ISR suite iā ʻoe e koho i ke kaulike kūpono ma waena o ka palekana ʻikepili a me ka latency. No ka laʻana, e hōʻoia i ka loaʻa ʻana inā hāʻule ka hapa nui o nā replicas, e hōʻemi ana i ka hopena o nā replicas make a lohi paha e pili ana i ka latency.

Ke koho nei mākou i ka manaʻo iā mākou iho replica.lag.time.max.ms e like me kou makemake. ʻO ka mea nui, ʻo kēia ʻāpana ke ʻano o ka lōʻihi o kā mākou makemake e ʻae i ka wā acks=a pau. He ʻumi kekona ka waiwai paʻamau. Inā lōʻihi kēia iā ʻoe, hiki iā ʻoe ke hōʻemi. A laila e hoʻonui ʻia ka pinepine o nā loli i ka ISR, no ka mea e hoʻoneʻe ʻia nā mea hahai a hoʻohui pinepine ʻia.

ʻO RabbitMQ wale nō kahi hoʻonohonoho o nā aniani e pono e hana hou ʻia. Hoʻopuka nā aniani lohi i ka latency hou, a hiki i nā aniani make ke kali a hiki i nā ʻeke e nānā i ka loaʻa o kēlā me kēia node (net tick) e pane. He ala hoihoi ʻo ISR e pale aku i kēia mau pilikia latency. Akā pilikia mākou i ka nalowale ʻana mai ka mea hiki i ka ISR ke emi i ke alakaʻi. No ka pale ʻana i kēia pilikia, e hoʻohana i ka hoʻonohonoho min.insync.replicas.

Hōʻoiaʻiʻo pili pili

I nā hoʻonohonoho bootstrap.servers hiki i ka mea hana a me ka mea kūʻai ke kuhikuhi i nā brokers he nui no ka hoʻopili ʻana i nā mea kūʻai aku. ʻO ka manaʻo, aia i ka wā e iho ai hoʻokahi node, aia kekahi mau mea ʻokoʻa i koe e hiki ai i ka mea kūʻai ke wehe i kahi pilina. ʻAʻole kēia he mau alakaʻi ʻāpana, akā he papa puna no ka hoʻouka mua ʻana. Hiki i ka mea kūʻai ke nīnau iā lākou i ka node e hoʻokipa ai i ke alakaʻi ʻāpana heluhelu/kākau.

Ma RabbitMQ, hiki i nā mea kūʻai ke hoʻopili i kekahi node, a hoʻouna ʻia ke ala kūloko i ka noi i kahi e pono ai ke hele. ʻO ia ke ʻano hiki iā ʻoe ke hoʻokomo i kahi mea kaulike ukana i mua o RabbitMQ. Pono ʻo Kafka i nā mea kūʻai aku e hoʻopili i ka node e hoʻokipa ai i ke alakaʻi ʻāpana pili. I kēlā ʻano kūlana, ʻaʻole hiki iā ʻoe ke hoʻokomo i kahi mea kaulike hoʻouka. Papa inoa bootstrap.servers He mea koʻikoʻi e hiki i nā mea kūʻai ke komo a loaʻa i nā node kūpono ma hope o ka hāʻule ʻole.

Kafka Consensus Architecture

A hiki i kēia manawa, ʻaʻole mākou i noʻonoʻo pehea e aʻo ai ka cluster e pili ana i ka hāʻule ʻana o ka mea hoʻolimalima a pehea e koho ʻia ai kahi alakaʻi hou. No ka hoʻomaopopo ʻana i ke ʻano o ka hana ʻana o Kafka me nā ʻāpana pūnaewele, pono ʻoe e hoʻomaopopo mua i ka hoʻolālā consensus.

Hoʻonohonoho ʻia kēlā me kēia pūʻulu Kafka me kahi pūʻulu Zookeeper, kahi lawelawe ʻae like i hāʻawi ʻia e hiki ai i ka ʻōnaehana ke hōʻea i ka ʻae ʻana ma kekahi mokuʻāina i hāʻawi ʻia, e hoʻokumu ana i ka kūlike ma mua o ka loaʻa. Pono ka ʻae o ka hapa nui o nā node Zookeeper e ʻae i nā hana heluhelu a kākau.

Mālama ʻo Zookeeper i ke kūlana o ka hui:

  • Ka papa inoa o nā kumuhana, nā ʻāpana, ka hoʻonohonoho ʻana, nā replicas alakaʻi o kēia manawa, nā replicas i makemake ʻia.
  • Nā lālā hui. Hoʻopili kēlā me kēia mea hoʻolaha i ka hui Zookeeper. Inā ʻaʻole loaʻa iā ia kahi ping i loko o kahi manawa i ʻōlelo ʻia, a laila hoʻopaʻa ʻo Zookeeper i ka mea kūʻai aku ʻaʻole i loaʻa.
  • Ke koho ʻana i nā nodes nui a me nā mea ʻokoʻa no ka mea hoʻoponopono.

ʻO ka node kaohi kekahi o nā brokers Kafka nona ke kuleana no ke koho ʻana i nā alakaʻi kope. Hoʻouna ʻo Zookeeper i nā leka hoʻomaopopo i ka mea hoʻoponopono e pili ana i ka lālā cluster a me nā loli kumuhana, a pono ka mea hoʻoponopono e hana i kēia mau hoʻololi.

No ka laʻana, e lawe kākou i kahi kumuhana hou me nā ʻāpana he ʻumi a me kahi helu replication o 3. Pono ka mea hoʻoponopono e koho i alakaʻi no kēlā me kēia pā, e hoʻāʻo ana e hoʻohele maikaʻi i nā alakaʻi i waena o nā brokers.

No kēlā me kēia māhele mana:

  • hōʻano hou i ka ʻike ma Zookeeper e pili ana iā ISR a me ke alakaʻi;
  • Hoʻouna i kahi LeaderAndISSRCommand i kēlā me kēia mea hoʻolaha e hoʻokipa i kahi kope o kēia māhele, e hoʻomaopopo ana i nā mea kūʻai aku e pili ana i ka ISR a me ke alakaʻi.

Ke hāʻule ka mea hoʻolimalima me kahi alakaʻi, hoʻouna ʻo Zookeeper i kahi leka i ka mea hoʻoponopono, a koho ʻo ia i alakaʻi hou. Eia hou, hoʻopuka mua ka mea hoʻoponopono iā Zookeeper a laila hoʻouna i kahi kauoha i kēlā me kēia mea hoʻolaha e hōʻike ana iā lākou i ka loli alakaʻi.

ʻO kēlā me kēia alakaʻi ke kuleana no ka hoʻopaʻa ʻana i nā ISR. Nā hoʻonohonoho replica.lag.time.max.ms hoʻoholo i ka mea e komo i laila. Ke hoʻololi ka ISR, hoʻouna ke alakaʻi i ka ʻike hou iā Zookeeper.

Hoʻomaopopo mau ʻia ʻo Zookeeper e pili ana i nā hoʻololi ʻana i hiki ke hoʻololi ʻia ka hoʻokele i kahi alakaʻi hou.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 21. Kafka Consensus

Hoʻopili hou ʻia

ʻO ka hoʻomaopopo ʻana i nā kikoʻī o ka hoʻopili hou ʻana e kōkua iā ʻoe e hoʻomaopopo maikaʻi i nā hiʻohiʻona hiki ke nalowale ʻikepili.

Nā nīnau laʻana, Log End Offset (LEO) a me Highwater Mark (HW)

Ua noʻonoʻo mākou e hoʻouna nā mea hahai i nā noi kiʻi i ke alakaʻi. ʻO 500ms ka wā paʻamau. He ʻokoʻa kēia mai RabbitMQ i kēlā i ka RabbitMQ ʻaʻole i hoʻomaka ʻia e ke aniani queue akā e ka haku. Hoʻohuli ka haku i nā loli i nā aniani.

Mālama ke alakaʻi a me nā mea hahai a pau i ka Log End Offset (LEO) a me ka lepili Highwater (HW). Hoʻopaʻa ka māka LEO i ka offset o ka memo hope i loko o ke kope kūloko, a paʻa ka HW i ka offset o ka hana hope. E hoʻomanaʻo no ke kūlana hoʻokō, pono e hoʻomau ʻia ka memo ma nā replicas ISR āpau. ʻO ia hoʻi, ʻoi iki ka LEO ma mua o HW.

Ke loaʻa ka leka i ke alakaʻi, mālama ʻo ia ma ka ʻāina. Hana ka mea hahai i kahi noi kiʻi ma ka hoʻouna ʻana i kāna LEO. Hoʻouna ke alakaʻi i kahi pūʻulu o nā memo e hoʻomaka ana mai kēia LEO a hoʻouna pū i ka HW o kēia manawa. Ke loaʻa i ke alakaʻi ka ʻike ua mālama nā replicas a pau i ka memo ma ka offset i hāʻawi ʻia, hoʻoneʻe ia i ka māka HW. Hiki i ke alakaʻi ke hoʻoneʻe i ka HW, a no laila e ʻike nā mea hahai a pau i ka waiwai o kēia manawa i nā pane i kā lākou noi. ʻO ia ke ʻano o ka poʻe hahai ma hope o ke alakaʻi ma ka ʻōlelo a me ka ʻike HW. Loaʻa i nā mea kūʻai nā leka a hiki i ka HW o kēia manawa.

E hoʻomaopopo ʻo "hoʻomau" ʻo ia ka mea i kākau ʻia i ka hoʻomanaʻo, ʻaʻole i ka disk. No ka hana, hoʻonohonoho ʻo Kafka i ka disk i kahi manawa kikoʻī. Loaʻa iā RabbitMQ kekahi manawa, akā e hoʻouna i kahi hōʻoia i ka mea hoʻopuka wale nō ma hope o ka haku a me nā aniani āpau i kākau i ka leka i ka disk. ʻO nā mea hoʻomohala Kafka, no nā kumu hana, ua hoʻoholo e hoʻouna i kahi ack i ka wā i kākau ʻia ai ka leka i ka hoʻomanaʻo. Manaʻo ʻo Kafka e hoʻopau ka redundancy i ka pilikia o ka mālama pōkole ʻana i nā memo i hoʻomaopopo ʻia ma ka hoʻomanaʻo wale nō.

alakaʻi hāʻule

Ke hāʻule kahi alakaʻi, hoʻolaha ʻo Zookeeper i ka mea hoʻoponopono, a koho ʻo ia i kahi kope alakaʻi hou. Hoʻonohonoho ke alakaʻi hou i kahi hōʻailona HW hou e like me kāna LEO. A laila loaʻa ka ʻike e pili ana i ke alakaʻi hou. Ma muli o ka mana o Kafka, e koho ka mea hahai i kekahi o nā hiʻohiʻona ʻelua:

  1. E ʻoki ia i ka log kūloko i kahi HW i ʻike ʻia a hoʻouna i kahi noi i ke alakaʻi hou no nā memo ma hope o kēia māka.
  2. E hoʻouna i kahi noi i ke alakaʻi e ʻike i ka HW i ka manawa i koho ʻia ai ʻo ia i alakaʻi, a laila e ʻoki i ka log i kēia offset. A laila e hoʻomaka ia e hana i nā noi kiʻi manawaleʻa e hoʻomaka ana ma kēia offset.

Pono paha ka mea hahai e ʻoki i ka log no nā kumu penei:

  • Ke hāʻule ke alakaʻi, lanakila ka mea hahai mua ma ka ISR set i hoʻopaʻa inoa me Zookeeper i ke koho balota a lilo i alakaʻi. ʻAʻole paha i loaʻa i nā mea hahai ma ISR nā kope o nā leka a pau mai ke alakaʻi mua. ʻAʻole hiki i ka mea hahai i hōʻike ʻia ke kope hou loa. Hoʻomaopopo ʻo Kafka ʻaʻohe ʻokoʻa ma waena o nā kope. No laila, no ka pale ʻana i nā ʻokoʻa, pono kēlā me kēia mea hahai e ʻoki i kāna log i ka waiwai HW o ke alakaʻi hou i ka manawa o kāna koho. ʻO kēia kekahi kumu e hoʻonohonoho ai acks=a pau mea nui no ka paʻa.
  • Kākau ʻia nā memo i ka disk. Inā hāʻule nā ​​puʻupuʻu puʻupuʻu a pau i ka manawa like, a laila e mālama ʻia nā kope me nā offset ʻokoʻa ma nā disks. Hiki paha i ka wā e hoʻi mai ai nā brokers ma ka pūnaewele, aia ke alakaʻi hou i koho ʻia ma hope o kāna poʻe hahai no ka mea ua mālama ʻia ʻo ia i ka disk ma mua o nā mea ʻē aʻe.

Hui hou me ka hui

I ka hui hou ʻana i ka pūʻulu, hana nā replicas e like me ka wā e hāʻule ai ke alakaʻi: nānā lākou i ke kope o ke alakaʻi a ʻoki i kā lākou log i kona HW (i ka manawa koho). I ka hoʻohālikelike, mālama like ʻo RabbitMQ i nā node i hui hou ʻia me he mea hou loa. I nā hihia ʻelua, hoʻolei ka mea hoʻolimalima i kekahi mokuʻāina e kū nei. Inā hoʻohana ʻia ka hoʻonohonoho ʻokoʻa, a laila pono ka haku e hana hou i nā ʻike āpau o kēia manawa i ke aniani hou ma ke ʻano "e kali ka honua holoʻokoʻa". ʻAʻole ʻae ka haku i nā hana heluhelu a kākau paha ma kēia hana. Hoʻokumu kēia ala i nā pilikia ma nā laina nui.

ʻO Kafka kahi lāʻau i hoʻokaʻawale ʻia a ma ke ʻano maʻamau e mālama ʻo ia i nā leka ʻoi aku ka nui ma mua o kahi queue RabbitMQ, kahi e wehe ʻia ai ka ʻikepili mai ka pila ma hope o ka heluhelu ʻana. Pono e noho liʻiliʻi nā laina laina. Akā ʻo Kafka kahi log me kāna kulekele mālama ponoʻī, hiki ke hoʻonohonoho i kahi manawa o nā lā a i ʻole nā ​​​​wikiwiki. ʻAʻole ʻae ʻia ka hoʻopaʻa ʻana i ka queue a me ka hoʻonohonoho hoʻonohonoho piha ʻana no kahi log puʻupuʻu. Akā, ʻoki wale ka poʻe Kafka i kā lākou lāʻau i ka HW o ke alakaʻi (i ka manawa o kāna koho ʻana) inā ʻo kā lākou kope ma mua o ke alakaʻi. ʻO ka mea ʻoi aku ka maikaʻi, ke hele ka mea hahai, hoʻomaka ʻo ia e hana i nā noi kiʻi e hoʻomaka me kāna LEO o kēia manawa.

Hoʻomaka ka poʻe hou a hui hou paha ma waho o ka ISR a ʻaʻole komo i nā hana. Hana wale lākou me ka hui, e loaʻa koke ana nā memo a hiki i ka hopu ʻana i ke alakaʻi a komo i ka ISR. ʻAʻohe laka a ʻaʻohe pono e hoʻolei i kāu ʻikepili āpau.

Nalo o ka pilina

He ʻoi aku ka nui o nā ʻāpana o Kafka ma mua o RabbitMQ, no laila he ʻoi aku ka paʻakikī o nā ʻano i ka wā e hemo ai ka hui. Akā, ua hoʻolālā mua ʻia ʻo Kafka no nā pūpū, no laila ua noʻonoʻo maikaʻi ʻia nā hopena.

Ma lalo iho nei kekahi mau hiʻohiʻona hemahema o ka pilina:

  • Hōʻike 1: ʻAʻole ʻike ka mea hahai i ke alakaʻi, akā ʻike nō naʻe i ka Zookeeper.
  • Hōʻike 2: ʻAʻole ʻike ke alakaʻi i nā mea hahai, akā ʻike mau ʻo Zookeeper.
  • Scenario 3: ʻIke ka mea hahai i ke alakaʻi, akā ʻaʻole ʻike i ka Zookeeper.
  • Scenario 4: ʻIke ke alakaʻi i ka poʻe hahai, akā ʻaʻole ʻike i ka Zookeeper.
  • Hōʻike 5: Ua kaʻawale loa ka mea hahai mai nā node Kafka ʻē aʻe a me Zookeeper.
  • Hōʻike 6: Ua hoʻokaʻawale loa ke alakaʻi mai nā node Kafka ʻē aʻe a me Zookeeper.
  • Hōʻike 7: ʻAʻole hiki ke ʻike i ka node Kafka controller ʻē aʻe.
  • Hōʻike 8: ʻAʻole ʻike ʻo Kafka controller iā Zookeeper.

Loaʻa i kēlā me kēia hiʻohiʻona kona ʻano ponoʻī.

Nānā 1: ʻAʻole ʻike ʻo Follower i ke alakaʻi, akā ʻike nō naʻe ʻo Zookeeper

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 22. Hōʻike 1: ISR o ʻekolu kope

Hoʻokaʻawale ka mea hoʻohui i ka mea hoʻohana 3 mai nā brokers 1 a me 2, akā ʻaʻole mai Zookeeper. ʻAʻole hiki iā Broker 3 ke hoʻouna hou i nā noi kiʻi. Ma hope o ka hala ʻana o ka manawa replica.lag.time.max.ms ua hoʻoneʻe ʻia mai ka ISR a ʻaʻole i komo i ka memo commits. Ke hoʻihoʻi hou ʻia ka pilina, e hoʻomaka hou ia i nā noi kiʻi a hui pū me ka ISR ke loaʻa iā ia ke alakaʻi. E hoʻomau ka Zookeeper i ka loaʻa ʻana o nā pings a manaʻo ʻo ia e ola ana ka mea hoʻolimalima.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 23. Hōʻike 1: Wehe ʻia ka mea hoʻolimalima mai ka ISR inā ʻaʻole loaʻa kahi noi kiʻi mai ia mea i loko o ka replica.lag.time.max.ms interval

ʻAʻohe puʻupuʻu puʻupuʻu a i ʻole node hoʻomaha e like me RabbitMQ. Akā, hoʻemi ʻia ka redundancy.

Hōʻike 2: ʻAʻole ʻike ke alakaʻi i nā mea hahai, akā ʻike mau ʻo Zookeeper

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 24. Hōʻike 2. Ke alakaʻi a me ʻelua mau ukali

ʻO ka haki ʻana o ka pilina pūnaewele e hoʻokaʻawale i ke alakaʻi mai ka poʻe hahai, akā hiki i ka mea hoʻolimalima ke ʻike iā Zookeeper. E like me ka hiʻohiʻona mua, emi ka ISR, akā i kēia manawa i ke alakaʻi wale nō i ka pau ʻana o ka poʻe hahai i ka hoʻouna ʻana i nā noi kiʻi. Eia hou, ʻaʻohe māhele logical. Akā, aia ka nalowale o ka redundancy no nā memo hou a hiki i ka hoʻihoʻi ʻia ʻana o ka pilina. Ke hoʻomau nei ʻo Zookeeper i ka loaʻa ʻana o nā pings a ke manaʻoʻiʻo nei ke ola nei ka mea hoʻolimalima.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 25. Hōʻike 2. Ua emi ka ISR i ke alakaʻi wale nō

Scenario 3. ʻIke ʻo Follower i ke alakaʻi, akā ʻaʻole ʻike i ka Zookeeper

Hoʻokaʻawale ʻia ka mea hahai mai Zookeeper, akā ʻaʻole mai ka mea hoʻolimalima me ke alakaʻi. ʻO ka hopena, hoʻomau ka mea hahai i nā noi kiʻi a lilo i lālā o ka ISR. ʻAʻole loaʻa hou ʻo Zookeeper i nā pings a hoʻopaʻa inoa i kahi ulia broker, akā no ka mea he mea hahai wale ia, ʻaʻohe hopena ma hope o ka hoʻihoʻi ʻana.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 26. Nānā 3: Hoʻouna ka mea hahai i nā noi kiʻi i ke alakaʻi

Scenario 4. ʻIke ke alakaʻi i ka poʻe hahai, akā ʻaʻole ʻike iā Zookeeper

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 27. Hōʻike 4. Ke alakaʻi a me ʻelua mau ukali

Ua hoʻokaʻawale ʻia ke alakaʻi mai Zookeeper, ʻaʻole naʻe mai nā brokers me nā mea hahai.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 28. Hōʻike 4: Ua hoʻokaʻawale ʻia ke alakaʻi mai Zookeeper

Ma hope o kekahi manawa, e hoʻopaʻa inoa ʻo Zookeeper i ka hemahema o ka mea kūʻai aku a haʻi aku i ka mea hoʻoponopono e pili ana iā ia. E koho ʻo ia i alakaʻi hou i waena o kāna poʻe hahai. Eia naʻe, e hoʻomau ka manaʻo o ke alakaʻi kumu ʻo ia ke alakaʻi a e hoʻomau i ka ʻae ʻana i nā komo mai acks=1. ʻAʻole hoʻouna hou aku nā mea hahai iā ia i nā noi kiʻi, no laila e manaʻo ʻo ia ua make lākou a hoʻāʻo e hōʻemi i ka ISR iā ia iho. Akā, no ka mea, ʻaʻohe ona pili iā Zookeeper, ʻaʻole hiki iā ia ke hana i kēia, a i kēlā manawa e hōʻole ʻole ʻo ia e ʻae i nā mea hou aku.

memo acks=a pau ʻaʻole e loaʻa i ka hōʻoia, no ka mea, ʻo ka ISR ka mea mua e pili ana i nā replicas a pau, a ʻaʻole hiki i nā leka iā lākou. Ke hoʻāʻo ka alakaʻi kumu e wehe iā lākou mai ka ISR, ʻaʻole hiki iā ia ke hana a pau ka ʻae ʻana i nā memo.

ʻIke koke nā mea kūʻai aku i ka loli o ke alakaʻi a hoʻomaka i ka hoʻouna ʻana i nā moʻolelo i ke kikowaena hou. Ke hoʻihoʻi hou ʻia ka pūnaewele, ʻike ke alakaʻi kumu ʻaʻole ia he alakaʻi a ʻoki i kāna log i ka waiwai HW i loaʻa i ke alakaʻi hou i ka manawa o ka hiki ʻole ke pale i ka hoʻokaʻawale log. E hoʻomaka ana e hoʻouna i nā noi kiʻi i ke alakaʻi hou. Ua nalowale nā ​​moʻolelo a pau mai ke alakaʻi kumu ʻaʻole i hana hou ʻia i ke alakaʻi hou. ʻO ia hoʻi, e nalowale nā ​​ʻōlelo i ʻike ʻole ʻia e ke alakaʻi mua i kēlā mau kekona i ka wā e hana ana nā alakaʻi ʻelua.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 29. Hōʻike 4. ʻO ke alakaʻi ma ka broker 1 lilo i mea hahai ma hope o ka hoʻihoʻi ʻana o ka pūnaewele.

Hōʻike 5: Ua kaʻawale loa ka mea hahai mai nā node Kafka ʻē aʻe a me Zookeeper

Hoʻokaʻawale loa ʻia ka mea hahai mai nā node Kafka ʻē aʻe a me Zookeeper. Hoʻokuʻu wale ʻo ia iā ia iho mai ka ISR a hiki i ka hoʻihoʻi ʻana o ka pūnaewele, a laila hopu pū me nā mea ʻē aʻe.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 30. Hōʻike 5: Wehe ʻia ka mea hahai i ka ISR

Hōʻike 6: Ua hoʻokaʻawale loa ke alakaʻi mai nā node Kafka ʻē aʻe a me Zookeeper

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 31. Hōʻike 6. Ke alakaʻi a me ʻelua mau ukali

Ua kaʻawale loa ke alakaʻi mai kāna poʻe hahai, ka mea hoʻomalu a me Zookeeper. No ka manawa pōkole e hoʻomau ʻia ka ʻae ʻana i nā mea komo mai acks=1.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 32. Hōʻike 6: Hoʻokaʻawale i ke alakaʻi mai nā ʻāpana Kafka a me Zookeeper ʻē aʻe.

ʻAʻole i loaʻa nā noi ma hope o ka pau ʻana replica.lag.time.max.ms, e ho'āʻo ʻo ia e hōʻemi i ka ISR iā ia iho, akā ʻaʻole hiki ke hana pēlā no ka mea ʻaʻohe kamaʻilio me Zookeeper, a laila e pau ka ʻae ʻana i nā kākau.

I kēia manawa, e hōʻailona ʻo Zookeeper i ka mea kūʻai kaʻawale i make a koho ka mea hoʻoponopono i alakaʻi hou.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 33. Hōʻike 6. ʻElua mau alakaʻi

Hiki i ke alakaʻi kumu ke ʻae i nā hoʻokomo no kekahi mau kekona, a laila hoʻōki i ka ʻae ʻana i nā memo. Hoʻonui ʻia nā mea kūʻai aku i kēlā me kēia 60 kekona me ka metadata hou loa. E hoʻomaopopo ʻia lākou no ka hoʻololi ʻana o ke alakaʻi a hoʻomaka lākou e hoʻouna i nā palapala i ke alakaʻi hou.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 34. Nānā 6: Hoʻololi nā mea hana i kahi alakaʻi hou

ʻO nā mea i hoʻopaʻa ʻia a pau i hana ʻia e ke alakaʻi kumu mai ka nalowale ʻana o ka pilina. Ke hoʻihoʻi hou ʻia ka pūnaewele, ʻike ka alakaʻi kumu ma o Zookeeper ʻaʻole ʻo ia ke alakaʻi. A laila e ʻoki ʻo ia i kāna log i ka HW o ke alakaʻi hou i ka manawa koho a hoʻomaka i ka hoʻouna ʻana i nā noi ma ke ʻano he hahai.

RabbitMQ vs Kafka: Hoʻomanawanui hewa a me ka loaʻa kiʻekiʻe
Laiki. 35. Nānā 6: Ua lilo ke alakaʻi kumu i mea hahai ma hope o ka hoʻihoʻi ʻia ʻana o ka pilina pūnaewele

Ma kēia kūlana, hiki ke hoʻokaʻawale kūpono no kahi manawa pōkole, akā inā wale nō acks=1 и min.insync.replicas 'o 1. Ho'opau 'oko'a ka ho'oka'awale 'ana ma hope o ka ho'iho'i 'ia 'ana o ka pūnaewele, i ka 'ike 'ana o ke alaka'i kumu 'a'ole 'o ia ke alaka'i, a i 'ole i ka 'ike 'ana o nā mea kū'ai a pau ua ho'ololi ke alaka'i a ho'omaka e kākau i ke alaka'i hou - 'o ia ka mea e hana mua. I kekahi hihia, e nalowale kekahi mau memo, akā me ka acks=1.

Aia kekahi ʻano ʻē aʻe o kēia hiʻohiʻona kahi, ma mua o ka hoʻokaʻawale ʻana o ka pūnaewele, hāʻule ka poʻe hahai ma hope a ua hoʻopili ke alakaʻi i ka ISR iā ia iho. A laila lilo ia i kaʻawale ma muli o ka nalowale o ka pilina. Ua koho ʻia kahi alakaʻi hou, akā hoʻomau ka alakaʻi kumu i ka ʻae ʻana i nā mea komo, ʻoiai acks=a pau, no ka mea, ʻaʻohe mea ʻē aʻe ma ISR koe wale nō. E nalowale ana kēia mau moʻolelo ke hoʻihoʻi hou ʻia ka pūnaewele. ʻO ke ala wale nō e pale aku ai i kēia koho min.insync.replicas = 2.

Hōʻike 7: ʻAʻole hiki ke ʻike ʻo Kafka Controller Node i kahi Node Kafka ʻē aʻe

Ma keʻano laulā, i ka wā e nalowale ai ka pilina me kahi puʻupuʻu Kafka, ʻaʻole hiki i ka mea hoʻoponopono ke hoʻouna i kekahi ʻike hoʻololi alakaʻi iā ia. I ka hihia maikaʻi loa, e alakaʻi kēia i kahi hoʻokaʻawale loiloi no ka manawa pōkole, e like me ka hanana 6. ʻOi aku ka pinepine ma mua o ka ʻole, ʻaʻole e lilo ka mea hoʻolimalima i moho no ke alakaʻi inā hāʻule ka hope.

Hōʻike 8: ʻAʻole ʻike ʻo Kafka controller iā Zookeeper

ʻAʻole e loaʻa iā Zookeeper kahi ping mai ka mea hoʻokele hāʻule a koho i kahi node Kafka hou e like me ka mea hoʻokele. Hiki i ka mea hoʻoponopono kumu ke hoʻomau i ka hōʻike ʻana iā ia iho e like me ia, akā ʻaʻole ia e loaʻa nā leka mai Zookeeper, no laila ʻaʻohe ona hana e hana ai. Ke hoʻihoʻi hou ʻia ka pūnaewele, e ʻike ʻo ia ʻaʻole ia he mea hoʻomalu, akā ua lilo ia i node Kafka maʻamau.

Nā hopena mai nā hiʻohiʻona

ʻIke mākou ʻaʻole ka hopena o ka nalowale o ka pili ʻana o ka mea hahai i ka nalowale o ka memo, akā e hoʻemi wale i ka redundancy no ka manawa a hiki i ka hoʻihoʻi ʻana o ka pūnaewele. ʻO kēia, ʻoiaʻiʻo, hiki ke alakaʻi i ka nalowale ʻikepili inā nalowale hoʻokahi a ʻoi aku paha nā nodes.

Inā hoʻokaʻawale ʻia ke alakaʻi mai Zookeeper ma muli o ka nalowale o ka pilina, hiki i kēia ke hopena i ka nalowale ʻana o nā memo mai acks=1. ʻO ka nele o ke kamaʻilio ʻana me Zookeeper ke kumu o ka hoʻokaʻawale kūpono me nā alakaʻi ʻelua. Hoʻoholo ʻia kēia pilikia e ka parameter acks=a pau.

ʻO ka pākuhi min.insync.replicas i loko o ʻelua a ʻoi aʻe paha nā kope e hāʻawi i ka hōʻoia hou ʻana ʻaʻole e hopena kēlā mau hiʻohiʻona pōkole i nā memo i nalowale e like me ka Scenario 6.

Hōʻuluʻulu manaʻo o nā memo i nalowale

E papa inoa i nā ala āpau e hiki ai iā ʻoe ke nalowale i ka ʻikepili ma Kafka:

  • ʻAʻole hiki ke alakaʻi inā hoʻopaʻa ʻia nā leka me ka hoʻohana ʻana acks=1
  • ʻO kēlā me kēia hoʻololi maʻemaʻe o ke alakaʻi, ʻo ia hoʻi, i ka mea hahai ma waho o ka ISR, ʻoiai me acks=a pau
  • Ke hoʻokaʻawale nei i ke alakaʻi mai Zookeeper inā ua hōʻoia ʻia nā leka me ka hoʻohana ʻana acks=1
  • Hoʻokaʻawale piha i ke alakaʻi i hōʻemi i ka pūʻulu ISR iā ia iho. E nalowale ana nā memo a pau acks=a pau. He oiaio wale no keia ina min.insync.replicas=1.
  • Nā hāʻule like ʻole o nā node ʻāpana āpau. No ka mea, ʻike ʻia nā memo mai ka hoʻomanaʻo ʻana, ʻaʻole i kākau ʻia kekahi i ka disk. Ma hope o ka hoʻomaka hou ʻana i nā kikowaena, nalo paha kekahi mau memo.

Hiki ke pale ʻia nā hoʻololi alakaʻi maʻemaʻe ma o ka pāpā ʻana iā lākou a i ʻole ka hōʻoia ʻana i ʻelua mau hoʻihoʻi. ʻO ka hoʻonohonoho lōʻihi loa he hui acks=a pau и min.insync.replicas ma luna o 1.

Hoʻohālikelike pololei i ka hilinaʻi o RabbitMQ a me Kafka

No ka hōʻoia ʻana i ka hilinaʻi a me ka loaʻa kiʻekiʻe, hoʻokō nā paepae ʻelua i kahi ʻōnaehana hoʻopiʻi mua a me ka lua. Eia naʻe, loaʻa iā RabbitMQ kahi kuʻekuʻe Achilles. I ka hoʻohui hou ʻana ma hope o ka hāʻule ʻole, hoʻolei nā nodes i kā lākou ʻikepili a paʻa ka synchronization. Ke nīnau nei kēia whammy pālua i ka lōʻihi o nā pila nui ma RabbitMQ. Pono ʻoe e ʻae i ka hoʻohaʻahaʻa ʻana a i ʻole nā ​​​​manawa pale lōʻihi. ʻO ka hōʻemi ʻana i ka redundancy e hoʻonui i ka pilikia o ka nalo ʻikepili nui. Akā inā he liʻiliʻi nā queues, a laila no ka redundancy, hiki ke hana ʻia nā manawa pōkole o ka loaʻa ʻole (he mau kekona) me ka hoʻohana ʻana i nā hoʻāʻo pili hou.

ʻAʻohe pilikia o Kafka. Hoʻolei ia i ka ʻikepili wale nō mai kahi o ka ʻokoʻa ma waena o ke alakaʻi a me ka mea hahai. Mālama ʻia nā ʻikepili like ʻole. Eia kekahi, ʻaʻole e ālai ka replication i ka ʻōnaehana. Ke hoʻomau nei ke alakaʻi i ka ʻae ʻana i nā pou i ka wā e hopu ai ka mea hahai hou, no laila, no nā devops, lilo ka hui ʻana a i ʻole hui hou ʻana i ka hui he hana liʻiliʻi. ʻOiaʻiʻo, aia nō nā pilikia e like me ka bandwidth network i ka wā o ka hoʻopiʻi. Inā hoʻohui ʻoe i nā mea hahai he nui i ka manawa like, hiki iā ʻoe ke hālāwai me kahi palena bandwidth.

ʻOi aku ka maikaʻi o RabbitMQ ma mua o Kafka i ka hilinaʻi inā hāʻule nā ​​​​kauā he nui i kahi hui i ka manawa like. E like me kā mākou i ʻōlelo ai, hoʻouna ʻo RabbitMQ i kahi hōʻoia i ka mea hoʻopuka wale nō ma hope o ka kākau ʻana o ka leka i ka disk e ka haku a me nā aniani āpau. Akā hoʻohui kēia i ka latency hou no nā kumu ʻelua:

  • fsync i kēlā me kēia mau haneli milliseconds
  • Hiki ke ʻike ʻia ka hemahema o ke aniani ma hope o ke ola ʻana o nā ʻeke e nānā i ka loaʻa ʻana o kēlā me kēia node (net tick) i pau. Inā lohi a hāʻule paha ke aniani, hoʻonui kēia i ka lohi.

ʻO ka koho a Kafka inā mālama ʻia kahi memo ma nā node he nui, hiki iā ia ke hoʻomaopopo i nā memo i ka wā e paʻa ai ka hoʻomanaʻo. Ma muli o kēia, aia ka pilikia o ka nalowale ʻana o nā memo o kēlā me kēia ʻano (ʻoiai acks=a pau, min.insync.replicas=2) i ka hihia o ka manawa like.

Ma ke ʻano holoʻokoʻa, hōʻike ʻo Kafka i ka ʻoi aku ka maikaʻi o ka polokalamu lako polokalamu a ua hoʻolālā ʻia mai ka honua i luna no nā pūʻulu. Hiki ke hoʻonui ʻia ka helu o nā mea hahai i 11 inā pono no ka hilinaʻi. ʻO ka helu hoʻopiʻi 5 a me ka helu liʻiliʻi o nā kope i ka hoʻonohonoho ʻana min.insync.replicas=3 e hoʻolilo i ka nalo memo i hanana loa. Inā hiki i kāu ʻoihana ke kākoʻo i kēia ratio replication a me ka pae o ka redundancy, a laila hiki iā ʻoe ke koho i kēia koho.

Maikaʻi ka hui ʻana o RabbitMQ no nā pila liʻiliʻi. Akā hiki ke ulu koke nā pila liʻiliʻi inā nui nā kaʻa. Ke ulu nui nā pila, pono ʻoe e hana i nā koho paʻakikī ma waena o ka loaʻa a me ka hilinaʻi. ʻOi aku ka maikaʻi o ka hui ʻana o RabbitMQ no nā kūlana maʻamau ʻole kahi i ʻoi aku ka maikaʻi o ka maʻalahi o RabbitMQ ma mua o nā hemahema o kāna hui ʻana.

ʻO kekahi mea e pale ai i ka nāwaliwali o RabbitMQ i nā pila nui, ʻo ia ka hoʻokaʻawale iā lākou i nā pila liʻiliʻi. Inā ʻaʻole ʻoe e koi i ka hoʻonohonoho piha ʻana i ka laina holoʻokoʻa, akā ʻo nā memo kūpono wale nō (e laʻana, nā memo mai kahi mea kūʻai aku), a i ʻole e kauoha i kekahi mea, a laila ʻae ʻia kēia koho: e nānā i kaʻu papahana Hoʻoponopono hou e hoʻokaʻawale i ka pila (ʻo ka papahana i ka wā mua).

ʻO ka mea hope loa, mai poina e pili ana i ka nui o nā pōpoki i ka hui pū ʻana a me nā ʻano hana hou o RabbitMQ a me Kafka. I ka wā lōʻihi, ua lilo nā ʻōnaehana i ʻoi aku ka makua a me ka paʻa, akā ʻaʻohe leka e 100% palekana mai ka nalowale! Eia kekahi, hiki mai nā pōʻino nui ma nā kikowaena data!

Inā ua poina au i kekahi mea, hana hewa, a i ʻole ʻae ʻoe i kekahi o nā manaʻo, e ʻoluʻolu e kākau i kahi manaʻo a i ʻole e kelepona mai iaʻu.

Ua nīnau pinepine ʻia iaʻu: "He aha ka mea e koho ai, Kafka a i ʻole RabbitMQ?", "ʻO wai ke kahua ʻoi aku ka maikaʻi?". ʻO ka ʻoiaʻiʻo, pili maoli ia i kou kūlana, ka ʻike o kēia manawa, a me nā mea ʻē aʻe. Ke kānalua nei au e hāʻawi i koʻu manaʻo no ka mea he ʻoi aku ka oversimplification e paipai i kahi kahua no nā hihia hoʻohana āpau a me nā palena hiki. Ua kākau wau i kēia pūʻulu ʻatikala i hiki iā ʻoe ke hana i kou manaʻo ponoʻī.

Makemake wau e ʻōlelo he alakaʻi nā ʻōnaehana ʻelua ma kēia wahi. Hiki paha iaʻu ke manaʻo nui no ka mea mai koʻu ʻike ʻana i nā papahana ke manaʻo nei wau e waiwai i nā mea e like me ka hoʻopaʻa ʻia ʻana o ka memo a me ka hilinaʻi.

ʻIke au i nā ʻenehana ʻē aʻe i nele i kēia hilinaʻi a me ka hoʻopaʻa ʻia ʻana, a laila nānā wau iā RabbitMQ a me Kafka a ʻike i ka waiwai kupaianaha o kēia mau ʻōnaehana ʻelua.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka