Ka hoʻomaopopo ʻana i nā mea hoʻolaha memo. Ke aʻo ʻana i ka mīkini o ka memo me ActiveMQ a me Kafka. Mokuna 3. Kafka

Ka hoʻomau ʻana o ka unuhi ʻana o kahi puke liʻiliʻi:
Ka hoomaopopo ana i na Message Brokers
mea kākau: Jakub Korab, mea hoʻopuka: O'Reilly Media, Inc., lā i paʻi ʻia: Iune 2017, ISBN: 9781492049296.

ʻāpana unuhi mua: ʻO ka hoʻomaopopo ʻana i nā mea hoʻolaha memo. Ke aʻo ʻana i ka mīkini o ka memo me ActiveMQ a me Kafka. Mokuna 1 Hoolauna

MOKUNA 3

Kafka

Ua hoʻomohala ʻia ʻo Kafka e LinkedIn no ka hoʻopau ʻana i kekahi o nā palena o nā mea hoʻolaha leka kahiko a pale aku i ka hoʻonohonoho ʻana i nā mea hoʻolaha leka uila no nā pilina like ʻole, i wehewehe ʻia ma kēia puke ma lalo o "Scaling up and out" ma ka ʻaoʻao 28 Hoʻohana i nā hihia Ua hilinaʻi nui ʻo LinkedIn i ka ʻai ʻana o ka ʻikepili he nui loa, e like me ka kaomi ʻana i ka ʻaoʻao a me ka loaʻa ʻana o nā lāʻau, ʻoiai e ʻae ana i kēlā ʻikepili e hoʻohana ʻia e nā ʻōnaehana lehulehu me ka ʻole o ka hopena o ka huahana a nā mea kūʻai aku. ʻO ka ʻoiaʻiʻo, ʻo ke kumu e noho ai ʻo Kafka no ka loaʻa ʻana o ke ʻano o ka hoʻolālā leka ʻana i wehewehe ʻia e ka Universal Data Pipeline.

Ma muli o kēia pahuhopu hope loa, ua kū maoli nā koi ʻē aʻe. Pono ʻo Kafka:

  • E wikiwiki loa
  • Hāʻawi i ka bandwidth i ka wā e hana ai me nā memo
  • Kākoʻo i ka Publisher-Subscriber a me Point-to-Point models
  • Mai lohi me ka hoʻohui ʻana i nā mea kūʻai. No ka laʻana, hoʻohaʻahaʻa ka hana o ka pila a me ke kumuhana i ActiveMQ i ka ulu ʻana o ka nui o nā mea kūʻai aku ma kahi e hele ai.
  • E hiki ke hoʻonui ʻia ma ka ʻaoʻao; inā hiki i kekahi mea hoʻolale e hoʻomau i nā memo ke hana pēlā ma ka wikiwiki o ka disk, a laila kūpono ke hele ma mua o kahi mea hoʻolaha hoʻokahi e hoʻonui i ka hana.
  • E kaupalena i ke komo ʻana i ka mālama ʻana a me ka lawe hou ʻana i nā memo

No ka hoʻokō ʻana i kēia mau mea a pau, ua hoʻohana ʻo Kafka i kahi hoʻolālā e wehewehe hou i nā kuleana a me nā kuleana o nā mea kūʻai aku a me nā mea hoʻolaha leka. ʻO ke kumu hoʻohālike JMS he mea kūʻai kūʻai nui, kahi e kuleana ai ka mea hoʻolaha i ka hāʻawi ʻana i nā leka a me nā mea kūʻai aku e hopohopo wale no ka hoʻouna ʻana a me ka loaʻa ʻana o nā leka. ʻO Kafka, ma ka ʻaoʻao ʻē aʻe, he mea kūʻai aku ka mea kūʻai aku, me ka lawe ʻana o ka mea kūʻai i nā hiʻohiʻona he nui o kahi broker kuʻuna, e like me ka hāʻawi pololei ʻana i nā leka kūpono i nā mea kūʻai aku, ma ke kūʻai ʻana i kahi broker wikiwiki loa a hiki ke hoʻonui ʻia. No ka poʻe i hana pū me nā ʻōnaehana memo kuʻuna, pono e hana pū me Kafka kahi hoʻololi kumu.
Ua alakaʻi kēia alakaʻi ʻenekinia i ka hana ʻana i kahi ʻōnaehana memo e hiki ke hoʻonui i ka throughput e nā kauoha he nui i hoʻohālikelike ʻia me kahi broker maʻamau. E like me kā mākou e ʻike ai, hele mai kēia ala me nā trade-offs, ʻo ia hoʻi, ʻaʻole kūpono ʻo Kafka no kekahi mau ʻano o ka hana a me nā polokalamu i hoʻonohonoho ʻia.

Ke Ana Hoʻohālike Hui Pū ʻIa

No ka hoʻokō ʻana i nā koi i hōʻike ʻia ma luna, ua hoʻohui ʻo Kafka i ka hoʻolaha-kau inoa a me ka memo point-to-point ma lalo o kahi ʻano huakaʻi - kumuhana. Pilikia kēia i ka poʻe i hana pū me nā ʻōnaehana memo, kahi o ka huaʻōlelo "kumuhana" e pili ana i kahi ʻano hoʻolaha i hiki ʻole ke heluhelu ʻia (mai ke kumuhana). Pono e noʻonoʻo ʻia nā kumuhana Kafka he ʻano huakaʻi hybrid, e like me ka wehewehe ʻana ma ka hoʻomaka ʻana o kēia puke.

No ke koena o kēia mokuna, inā ʻaʻole mākou e haʻi ʻokoʻa, e pili ana ka huaʻōlelo "kumuhana" i kahi kumuhana Kafka.

No ka hoʻomaopopo piha ʻana i ke ʻano o nā kumuhana a me nā mea e hōʻoiaʻiʻo ai lākou, pono mākou e nānā mua i ke ʻano o ka hoʻokō ʻia ʻana ma Kafka.
Loaʻa i kēlā me kēia kumuhana ma Kafka kona log ponoʻī.
Ke kākau nei nā mea hana e hoʻouna ana i nā leka iā Kafka i kēia log, a heluhelu nā mea kūʻai mai ka lāʻau me ka hoʻohana ʻana i nā kuhikuhi e neʻe mau i mua. I kēlā me kēia manawa, holoi ʻo Kafka i nā ʻāpana kahiko loa o ka log, inā ua heluhelu ʻia nā memo ma ia mau ʻāpana a ʻaʻole paha. ʻO kahi ʻāpana nui o ka hoʻolālā ʻana o Kafka, ʻaʻole mālama ka mea kūʻai aku inā heluhelu ʻia nā leka a ʻaʻole paha - ʻo ia ke kuleana o ka mea kūʻai.

ʻAʻole ʻike ʻia nā huaʻōlelo "log" a me "pointer". Palapala Kafka. Hoʻohana ʻia kēia mau huaʻōlelo kaulana e kōkua i ka hoʻomaopopo ʻana.

He ʻokoʻa loa kēia ʻano hoʻohālike mai ActiveMQ, kahi i mālama ʻia ai nā memo mai nā queues a pau i loko o ka log hoʻokahi, a hōʻailona ka mea hoʻopili i nā memo i holoi ʻia ma hope o ka heluhelu ʻana.
E ʻeli hohonu kākou i kēia manawa a e nānā i ke kumuhana log me nā kikoʻī hou aku.
ʻO ka log Kafka he mau ʻāpana (Kiʻi 3-1). Hoʻopaʻa ʻo Kafka i ke kauoha koʻikoʻi i kēlā me kēia ʻāpana. ʻO ia hoʻi, e heluhelu ʻia nā memo i kākau ʻia i ka ʻāpana i kekahi kauoha ma ke ʻano like. Hoʻokomo ʻia kēlā me kēia māhele ma ke ʻano he faila log rolling i loaʻa he mahele hapa (subset) o nā memo a pau i hoʻouna ʻia i ke kumuhana e nā mea hana. Aia i loko o ke kumuhana i haku ʻia, ma ka paʻamau, hoʻokahi ʻāpana. ʻO ka manaʻo o nā ʻāpana ka manaʻo koʻikoʻi o Kafka no ka scaling horizontal.

Ka hoʻomaopopo ʻana i nā mea hoʻolaha memo. Ke aʻo ʻana i ka mīkini o ka memo me ActiveMQ a me Kafka. Mokuna 3. Kafka
Helu 3-1. Nā ʻāpana Kafka

Ke hoʻouna aku ka mea hana i kahi leka i kahi kumuhana Kafka, hoʻoholo ʻo ia i ka ʻāpana e hoʻouna ai i ka leka. E nānā hou aku mākou i kēia ma hope.

Heluhelu i nā memo

ʻO ka mea kūʻai aku makemake e heluhelu i nā memo e mālama i kahi kuhikuhi i kapa ʻia hui mea kūʻai, e kuhikuhi ana i offset nā memo ma ka pā. ʻO ka offset kahi kūlana hoʻonui e hoʻomaka ana ma 0 i ka hoʻomaka ʻana o kahi pā. ʻO kēia hui mea kūʻai, i kuhikuhi ʻia ma ka API ma o ka group_id i wehewehe ʻia e ka mea hoʻohana, pili me hoʻokahi mea kūʻai kūpono a ʻōnaehana paha.

Heluhelu ka hapa nui o nā ʻōnaehana memo i ka ʻikepili mai kahi e hele ai me ka hoʻohana ʻana i nā manawa he nui a me nā loina e hoʻoponopono i nā memo i ka like. No laila, nui nā mea kūʻai aku e kaʻana like ana i ka hui mea kūʻai like.

Hiki ke hōʻike ʻia ka pilikia o ka heluhelu ʻana penei:

  • Nui nā ʻāpana o ke kumuhana
  • Hiki i nā hui lehulehu ke hoʻohana i ke kumuhana i ka manawa like
  • Hiki i kahi hui o nā mea kūʻai ke loaʻa i nā manawa like ʻole

He pilikia nui-a-nui keia. No ka hoʻomaopopo ʻana i ke ʻano o ka lawelawe ʻana o Kafka i nā pilina ma waena o nā hui mea kūʻai aku, nā mea kūʻai aku, a me nā ʻāpana, e nānā i ke ʻano o nā hiʻohiʻona heluhelu paʻakikī.

ʻO nā mea kūʻai a me nā hui kūʻai

E lawe kākou i kumu hoʻomaka me hoʻokahi ʻāpana (Kiʻi 3-2).

Ka hoʻomaopopo ʻana i nā mea hoʻolaha memo. Ke aʻo ʻana i ka mīkini o ka memo me ActiveMQ a me Kafka. Mokuna 3. Kafka
Helu 3-2. Heluhelu ka mea kūʻai mai ka ʻāpana

Ke hoʻohui ʻia kahi mea kūʻai aku me kāna group_id ponoʻī i kēia kumuhana, hāʻawi ʻia ia i kahi ʻāpana heluhelu a me kahi offset i kēlā ʻāpana. Hoʻonohonoho ʻia ke kūlana o kēia offset i ka mea kūʻai aku ma ke ʻano he kuhikuhi i ke kūlana hou loa (memo hou) a i ʻole kūlana mua loa (memo kahiko). Noi ka mea kūʻai aku i nā memo mai ke kumuhana, kahi e heluhelu ʻia ai lākou mai ka log.
Hoʻihoʻi mau ʻia ke kūlana offset iā Kafka a mālama ʻia ma ke ʻano he mau memo ma kahi kumuhana kūloko _consumer_offsets. ʻAʻole i holoi ʻia nā memo heluhelu, ʻaʻole like me ka mea kūʻai aku maʻamau, a hiki i ka mea kūʻai ke hoʻihoʻi i ka offset e hana hou i nā memo i ʻike ʻia.

Ke hoʻohui ʻia kahi mea kūʻai loiloi me ka hoʻohana ʻana i kahi group_id ʻē aʻe, hoʻokele ʻo ia i kahi kuhikuhi lua i kūʻokoʻa i ka mua (Kiʻi 3-3). No laila, hana ʻia kahi kumuhana Kafka e like me ka queue ma kahi o ka mea kūʻai aku a e like me ke kumuhana hoʻolaha maʻamau (pub-sub) i kākau inoa ʻia e nā mea kūʻai aku he nui, me ka pōmaikaʻi hou e mālama ʻia nā memo āpau a hiki ke hana ʻia i nā manawa he nui.

Ka hoʻomaopopo ʻana i nā mea hoʻolaha memo. Ke aʻo ʻana i ka mīkini o ka memo me ActiveMQ a me Kafka. Mokuna 3. Kafka
Helu 3-3. Heluhelu mai ʻelua mau mea kūʻai ma nā hui mea kūʻai like ʻole mai ka ʻāpana like

ʻO nā mea kūʻai ma kahi hui mea kūʻai

I ka heluhelu ʻana o kekahi mea kūʻai i ka ʻikepili mai kahi ʻāpana, loaʻa iā ia ka mana piha o ka pointer a hana i nā memo e like me ka wehewehe ʻana ma ka pauku mua.
Inā pili kekahi mau mea kūʻai aku me ka group_id hoʻokahi i kahi kumuhana me hoʻokahi ʻāpana, a laila e hāʻawi ʻia ka mana i pili hope i ka pointer a mai ia manawa e loaʻa iā ia nā memo āpau (Kiʻi 3-4).

Ka hoʻomaopopo ʻana i nā mea hoʻolaha memo. Ke aʻo ʻana i ka mīkini o ka memo me ActiveMQ a me Kafka. Mokuna 3. Kafka
Helu 3-4. Heluhelu ʻelua mau mea kūʻai ma ka hui mea kūʻai like mai ka pāhele like

ʻO kēia ʻano hana, kahi i ʻoi aku ka nui o nā mea kūʻai aku ma mua o ka helu o nā ʻāpana, hiki ke noʻonoʻo ʻia he ʻano mea kūʻai kūʻokoʻa. Hiki ke hoʻohana ʻia kēia inā makemake ʻoe i ka "active-passive" (a i ʻole "hot-warm") i ka hui ʻana o kāu mau mea kūʻai aku, ʻoiai ʻo ka holo ʻana i nā mea kūʻai aku he nui i ka like ("active-active" a i ʻole "hot-hot") ʻoi aku ka maʻamau ma mua o nā mea kūʻai.

ʻO kēia ʻano hoʻolaha memo i hōʻike ʻia ma luna nei hiki ke kahaha ke hoʻohālikelike ʻia i ka hana ʻana o kahi queue JMS maʻamau. Ma kēia kŘkohu, e māhele like ʻia nā memo i hoʻouna ʻia i ka pila ma waena o nā mea kūʻai ʻelua.

ʻO ka pinepine, ke hana mākou i nā manawa he nui o nā mea kūʻai aku, hana mākou i kēia no ka hoʻoponopono ʻana i nā memo i ka like, a i ʻole e hoʻonui i ka wikiwiki o ka heluhelu ʻana, a i ʻole e hoʻonui i ka paʻa o ke kaʻina heluhelu. No ka mea hoʻokahi wale nō mea kūʻai e hiki ke heluhelu i ka ʻikepili mai kahi ʻāpana i ka manawa, pehea e loaʻa ai kēia ma Kafka?

ʻO kahi ala e hana ai i kēia, ʻo ia ka hoʻohana ʻana i hoʻokahi mea kūʻai aku e heluhelu i nā memo a pau a hāʻawi iā lākou i ka wai puna. ʻOiai ʻo kēia ala e hoʻonui ai i ka hana throughput, hoʻonui ia i ka paʻakikī o ka loiloi mea kūʻai aku a ʻaʻohe mea e hoʻonui i ka paʻa o ka ʻōnaehana heluhelu. Inā hāʻule kekahi kope o ka mea kūʻai ma muli o ka pau ʻole o ka mana a i ʻole ka hanana like, a laila pau ka unuhi.

ʻO ke ala canonical e hoʻoponopono ai i kēia pilikia ma Kafka e hoʻohana i ka bОmau paku.

Māhele ʻāpana

ʻO nā ʻāpana ke kumu nui no ka hoʻohālikelike ʻana i ka heluhelu ʻana a me ka hoʻonui ʻana i kahi kumuhana ma mua o ka bandwidth o kahi mea kūʻai aku hoʻokahi. No ka hoʻomaopopo maikaʻi ʻana i kēia, e noʻonoʻo kākou i kahi kūlana i loaʻa kahi kumuhana me nā ʻāpana ʻelua a kau inoa kekahi mea kūʻai i kēia kumuhana (Kiʻi 3-5).

Ka hoʻomaopopo ʻana i nā mea hoʻolaha memo. Ke aʻo ʻana i ka mīkini o ka memo me ActiveMQ a me Kafka. Mokuna 3. Kafka
Helu 3-5. Heluhelu kekahi mea kūʻai mai nā ʻāpana he nui

Ma kēia hiʻohiʻona, hāʻawi ʻia ka mea kūʻai aku i ka mana ma luna o nā kuhikuhi e pili ana i kāna group_id ma nā ʻāpana ʻelua a hoʻomaka i ka heluhelu ʻana i nā leka mai nā ʻāpana ʻelua.
Ke hoʻohui ʻia kahi mea kūʻai aku no ka group_id like i kēia kumuhana, hoʻokaʻawale hou ʻo Kafka i kekahi o nā ʻāpana mai ka mea kūʻai mua a i ka mea kūʻai ʻelua. Ma hope o kēlā, e heluhelu ana kēlā me kēia mea kūʻai mai kahi ʻāpana o ke kumuhana (Kiʻi 3-6).

No ka hōʻoia ʻana e hana like ʻia nā memo ma 20 mau kaula, pono ʻoe ma kahi o 20 mau ʻāpana. Inā he liʻiliʻi nā ʻāpana, e waiho ʻia ʻoe me nā mea kūʻai aku ʻaʻohe mea e hana ai, e like me ka mea i wehewehe mua ʻia ma ke kūkākūkā o nā mea kūʻai kūʻokoʻa.

Ka hoʻomaopopo ʻana i nā mea hoʻolaha memo. Ke aʻo ʻana i ka mīkini o ka memo me ActiveMQ a me Kafka. Mokuna 3. Kafka
Helu 3-6. Heluhelu ʻelua mau mea kūʻai ma ka hui mea kūʻai like mai nā ʻāpana like ʻole

Hoʻemi nui kēia ʻano hana i ka paʻakikī o ka mea kūʻai aku ʻo Kafka i hoʻohālikelike ʻia i ka hāʻawi ʻana i ka leka e pono ai e mālama i ka JMS queue. ʻAʻole pono ʻoe e hopohopo e pili ana i kēia mau mea:

  • ʻO wai ka mea kūʻai e loaʻa i ka memo aʻe, e pili ana i ka hoʻokaʻawale ʻana i ka round-robin, ka mana o kēia manawa o nā buffer prefetch, a i ʻole nā ​​memo mua (e like me nā hui memo JMS).
  • ʻO wai nā memo i hoʻouna ʻia i nā mea kūʻai aku a inā paha e hoʻouna hou ʻia lākou i ka wā i hāʻule ʻole.

ʻO nā mea a pau a Kafka broker e hana ai, ʻo ia ka hoʻouna ʻana i nā leka i ka mea kūʻai aku ke noi aku ka mea hope iā lākou.

Eia naʻe, ʻaʻole e pau nā koi no ka hoʻohālikelike ʻana i ka heluhelu ʻana a me ka hoʻouna ʻana i nā memo i hāʻule ʻole - ʻo ke kuleana o lākou e hele wale mai ka mea hoʻolimalima i ka mea kūʻai aku. 'O ia ho'i, pono lākou e no'ono'o i kāu code.

Hoʻouna ʻana i nā leka

ʻO ke kuleana o ka mea nāna i hana i kēlā memo ke hoʻoholo i ka ʻāpana e hoʻouna ai i kahi leka. No ka hoʻomaopopo ʻana i ke ʻano hana i hana ʻia ai kēia, pono mākou e noʻonoʻo mua i ka mea a mākou e hoʻouna maoli nei.

ʻOiai ma JMS ke hoʻohana nei mākou i kahi hoʻolālā memo me nā metadata (nā poʻo a me nā waiwai) a me kahi kino i loaʻa ka uku (payload), ma Kafka ka memo. lua "waiwai kī". Hoʻouna ʻia ka uku memo ma ke ʻano he waiwai. ʻO ke kī, ma kekahi ʻaoʻao, hoʻohana nui ʻia no ka hoʻokaʻawale ʻana a pono e loaʻa kī kikoʻī loina pāʻoihanae kau i nā memo pili i ka pā like.

Ma ka Mokuna 2, ua kūkākūkā mākou i ke ʻano pili pili pūnaewele kahi e pono ai e hoʻoponopono ʻia nā hanana pili e ka mea kūʻai hoʻokahi:

  1. Hoʻonohonoho ʻia ka moʻokāki mea hoʻohana.
  2. Hoʻokomo ʻia ke kālā i ka moʻokāki.
  3. Hana ʻia kahi bet e wehe i ke kālā mai ka waihona.

Inā he memo kēlā me kēia hanana i hoʻouna ʻia i kahi kumuhana, a laila ʻo ke kī kūlohelohe ka ID moʻokāki.
Ke hoʻouna ʻia kahi leka me ka Kafka Producer API, ua hāʻawi ʻia ia i kahi hana ʻāpana i hāʻawi ʻia i ka memo a me ke kūlana o kēia manawa o ka pūʻulu Kafka, e hoʻihoʻi i ka ID o ka ʻāpana e hoʻouna ʻia ai ka leka. Hoʻokomo ʻia kēia hiʻohiʻona ma Java ma o ka interface Partitioner.

Penei ke ano o keia interface:

interface Partitioner {
    int partition(String topic,
        Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster);
}

Hoʻohana ka hoʻokō Partitioner i ka algorithm hashing maʻamau maʻamau ma luna o ke kī e hoʻoholo ai i ka ʻāpana, a i ʻole round-robin inā ʻaʻohe kī i kuhikuhi ʻia. Hana maikaʻi kēia waiwai paʻamau i ka nui o nā hihia. Eia naʻe, i ka wā e hiki mai ana, makemake ʻoe e kākau i kāu iho.

Ke kākau ʻana i kāu hoʻolālā hoʻokaʻawale

E nānā i kahi laʻana kahi āu e makemake ai e hoʻouna i ka metadata me ka uku memo. ʻO ka uku uku i kā mākou hiʻohiʻona he ʻōlelo aʻoaʻo e hana i kahi waihona i ka moʻokāki pāʻani. ʻO kahi ʻōlelo aʻo kahi mea a mākou e makemake ai e hōʻoia ʻia ʻaʻole e hoʻololi ʻia ma ka hoʻouna ʻana a makemake mākou e hōʻoia ʻo kahi ʻōnaehana hilinaʻi wale nō e hiki ke hoʻomaka i kēlā aʻo. I kēia hihia, ʻae nā ʻōnaehana hoʻouna a loaʻa i ka hoʻohana ʻana i kahi pūlima e hōʻoia i ka leka.
Ma ka JMS maʻamau, wehewehe mākou i kahi waiwai "kaulima memo" a hoʻohui i ka memo. Eia naʻe, ʻaʻole hāʻawi ʻo Kafka iā mākou i kahi hana no ka hoʻohele ʻana i nā metadata, kahi kī wale nō a me kahi waiwai.

No ka mea ʻo ka waiwai he uku hoʻoili panakō nona ka pono a mākou e makemake ai e mālama, ʻaʻohe o mākou koho akā e wehewehe i ka hoʻolālā ʻikepili e hoʻohana ai i ke kī. Ke manaʻo nei mākou makemake mākou i kahi ID moʻokāki no ka hoʻokaʻawale ʻana, no ka mea pono e hoʻoponopono ʻia nā memo āpau e pili ana i kahi moʻokāki, e hele mai mākou me kēia ʻano JSON:

{
  "signature": "541661622185851c248b41bf0cea7ad0",
  "accountId": "10007865234"
}

No ka mea e ʻokoʻa ka waiwai o ka pūlima ma muli o ka uku, ʻaʻole e hilinaʻi ka hoʻolālā hashing paʻamau o ka interface Partitioner i nā memo pili. No laila, pono mākou e kākau i kā mākou hoʻolālā ponoʻī e hoʻopau i kēia kī a hoʻokaʻawale i ka waiwai accountId.

Loaʻa iā Kafka nā checksums e ʻike i ka palaho o nā memo i loko o ka hale kūʻai a loaʻa iā ia nā hiʻohiʻona palekana. ʻOiai, ʻike ʻia nā koi kikoʻī o ka ʻoihana, e like me ka mea i luna.

Pono ka hoʻolālā hoʻokaʻawale ʻana o ka mea hoʻohana i ka pau ʻana o nā memo pili i ka pā hoʻokahi. ʻOiai he mea maʻalahi kēia, hiki ke paʻakikī ke koi ma muli o ke koʻikoʻi o ke kauoha ʻana i nā memo pili a pehea i hoʻopaʻa ʻia ai ka helu o nā ʻāpana i kahi kumuhana.

Hiki ke loli ka helu o nā ʻāpana i ke kumuhana i ka manawa, no ka mea hiki ke hoʻohui ʻia inā ʻoi aku ke kaʻa ma mua o nā manaʻo mua. No laila, hiki ke hoʻopili ʻia nā kī memo me ka ʻāpana i hoʻouna mua ʻia ai lākou, e hōʻike ana i kahi ʻāpana mokuʻāina e kaʻana like ma waena o nā mea hana.

ʻO kekahi kumu e noʻonoʻo ai ʻo ka hāʻawi like ʻana o nā memo ma nā ʻāpana. ʻO ka maʻamau, ʻaʻole puʻunaue like ʻia nā kī ma waena o nā memo, a ʻaʻole hōʻoiaʻiʻo nā hana hash i ka hāʻawi pono ʻana o nā memo no kahi pūʻulu kī liʻiliʻi.
He mea nui e hoʻomaopopo inā ʻoe e koho e hoʻokaʻawale i nā memo, pono paha e hoʻohana hou ʻia ka mea hoʻokaʻawale.

E noʻonoʻo i ke koi e hana hou i ka ʻikepili ma waena o nā pūʻulu Kafka ma nā wahi ʻāina like ʻole. No kēia kumu, hele mai ʻo Kafka me kahi mea hana laina kauoha i kapa ʻia ʻo MirrorMaker, i hoʻohana ʻia e heluhelu i nā memo mai kahi puʻupuʻu a hoʻololi iā lākou i kekahi.

Pono ʻo MirrorMaker e hoʻomaopopo i nā kī o ke kumuhana i hoʻopili ʻia i mea e mālama ai i ka hoʻonohonoho pili ma waena o nā memo i ka wā e hana hou ai ma waena o nā pūʻulu, ʻoiai ʻaʻole like ka nui o nā ʻāpana no ia kumuhana i nā pūʻulu ʻelua.

He kakaikahi ka hoʻolālā hoʻokaʻawale maʻamau, no ka mea, hana maikaʻi ka hashing paʻamau a i ʻole round robin i ka hapa nui o nā hiʻohiʻona. Eia nō naʻe, inā makemake ʻoe i nā hōʻoia kauoha ikaika a pono ʻoe e unuhi i ka metadata mai nā uku uku, a laila ʻo ka hoʻokaʻawale ʻana kahi mea āu e nānā pono ai.

Loaʻa ka scalability a me nā pono hana o Kafka mai ka hoʻololi ʻana i kekahi o nā kuleana o ka mea kūʻai aku kahiko i ka mea kūʻai aku. Ma kēia hihia, hoʻoholo ʻia e hoʻolaha i nā leka pili i waena o nā mea kūʻai aku e hana like ana.

Pono nō hoʻi nā mea kūʻai JMS e hana i ia mau koi. ʻO ka mea hoihoi, ʻo ke ʻano o ka hoʻouna ʻana i nā leka pili i ka mea kūʻai like, i hoʻokō ʻia ma o JMS Message Groups (kahi hoʻololi i ka hoʻolālā sticky load balancing (SLB)), pono pū ka mea hoʻouna e hōʻailona i nā memo e pili ana. Ma ka hihia o JMS, na ka mea hoʻolimalima ke kuleana no ka hoʻouna ʻana i kēia pūʻulu o nā leka pili i hoʻokahi mea kūʻai mai o nā mea he nui, a me ka hoʻololi ʻana i ka kuleana o ka hui inā hāʻule ka mea kūʻai.

Nā ʻaelike hana

ʻAʻole ʻo ka hoʻokaʻawale ʻana ka mea e noʻonoʻo ai i ka wā e hoʻouna ai i nā leka. E nānā kākou i nā ʻano hoʻouna () o ka papa hana ma ka Java API:

Future < RecordMetadata > send(ProducerRecord < K, V > record);
Future < RecordMetadata > send(ProducerRecord < K, V > record, Callback callback);

Pono e hoʻomaopopo koke i ka hoʻi ʻana o nā ala ʻelua i ka Future, e hōʻike ana ʻaʻole i hana koke ʻia ka hana hoʻouna. ʻO ka hopena, ua kākau ʻia kahi leka (ProducerRecord) i ka mea hoʻouna hoʻouna no kēlā me kēia ʻāpana hana a hoʻouna ʻia i ka mea hoʻolimalima ma ke ʻano he pae hope i ka waihona mea kūʻai aku ʻo Kafka. ʻOiai e wikiwiki ana kēia i nā mea, ʻo ia ka mea hiki i kahi noi ʻike ʻole ke nalowale i nā memo inā pau kāna kaʻina hana.

E like me nā manawa a pau, aia kahi ala e ʻoi aku ka hilinaʻi o ka hana hoʻouna ma ke kumukūʻai o ka hana. Hiki ke hoʻonohonoho ʻia ka nui o kēia buffer i ka 0, a e koi ʻia ka pae noi hoʻouna e kali a hiki i ka pau ʻana o ka hoʻoili ʻana i ka leka i ka mea hoʻolimalima, penei:

RecordMetadata metadata = producer.send(record).get();

Nā mea hou aku e pili ana i ka heluhelu ʻana i nā memo

He paʻakikī hou aʻe ka heluhelu ʻana i nā memo e pono e noʻonoʻo ʻia. ʻAʻole like me ka JMS API, hiki ke holo i kahi mea hoʻolohe memo i ka pane ʻana i kahi leka, ka Consumer Kafka koho wale. E nānā pono kākou i ke ʻano koho ()hoʻohana ʻia no kēia kumu:

ConsumerRecords < K, V > poll(long timeout);

ʻO ka waiwai hoʻihoʻi o ke ʻano he hale pahu i loaʻa nā mea he nui moʻolelo mea kūʻai mai kekahi mau ʻāpana paha. moʻolelo mea kūʻai ʻO ia iho kahi mea paʻa no kahi hui waiwai kī me nā metadata pili, e like me ka ʻāpana i loaʻa mai ai.

E like me ka mea i kūkākūkā ʻia ma ka Mokuna 2, pono mākou e hoʻomanaʻo i ka hopena o nā memo ma hope o ka holomua ʻana a i ʻole ka hoʻokō ʻole ʻia ʻana, no ka laʻana, inā ʻaʻole hiki i ka mea kūʻai ke hoʻoponopono i ka memo a i ʻole ke kāpae ʻia. Ma JMS, ua mālama ʻia kēia ma ke ʻano hoʻokipa. E holoi paha ka mea hoʻolimalima i ka memo i hoʻokō pono ʻia, a i ʻole e hāʻawi hou i ka leka maka a i ʻole ka hoʻopunipuni (e manaʻo ʻia ua hoʻohana ʻia nā hana).
ʻOkoʻa loa ka hana a Kafka. ʻAʻole holoi ʻia nā memo i loko o ka mea kūʻai aku ma hope o ka hoʻoponopono ʻana, a ʻo ka mea e hana ʻole ʻia ke kuleana o ke code proofreading ponoʻī.

E like me kā mākou i ʻōlelo ai, pili ka hui mea kūʻai aku me ka offset i ka log. ʻO ke kūlana log e pili ana i kēia offset e pili ana i ka memo aʻe e hoʻopuka ʻia no ka pane ʻana koho (). ʻO ka helu o ka manawa e piʻi ai kēia offset e hoʻoholo no ka heluhelu ʻana.

Ke hoʻi nei i ke ʻano heluhelu i kūkākūkā ʻia ma mua, ʻekolu mau ʻanuʻu ka hoʻoili ʻana i nā leka:

  1. E kiʻi i kahi memo no ka heluhelu ʻana.
  2. E hana i ka memo.
  3. E hōʻoia i ka memo.

Hele mai ka mea kūʻai Kafka me kahi koho hoʻonohonoho enable.auto.commit. He hoʻonohonoho paʻamau kēia i hoʻohana pinepine ʻia, e like me ka mea maʻamau me nā hoʻonohonoho i loaʻa ka huaʻōlelo "auto".

Ma mua o Kafka 0.10, e hoʻouna ka mea kūʻai aku i kēia koho i ka offset o ka memo hope i heluhelu ʻia ma ke kelepona aʻe. koho () ma hope o ka hana ʻana. ʻO ia ke ʻano o nā memo i kiʻi ʻia e hiki ke hana hou ʻia inā ua hana mua ka mea kūʻai aku iā lākou akā ua luku ʻole ʻia ma mua o ke kelepona ʻana. koho (). No ka mea ʻaʻole mālama ka mea hoʻolimalima i kekahi mokuʻāina e pili ana i ka nui o nā manawa i heluhelu ʻia ai kahi memo, ʻo ka mea kūʻai hou e kiʻi i kēlā memo ʻaʻole ia e ʻike i kekahi mea ʻino. He pseudo-transactional kēia ʻano. Hoʻopaʻa wale ʻia ka offset inā ua hoʻokō pono ʻia ka leka, akā inā haʻalele ka mea kūʻai aku, e hoʻouna hou ka mea hoʻolimalima i ka leka like i kekahi mea kūʻai aku. Ua kūlike kēia ʻano me ka hōʻoiaʻiʻo o ka lawe ʻana i ka memo "hoʻokahi manawa".

Ma Kafka 0.10, ua hoʻololi ʻia ke code o ka mea kūʻai aku i mea e hoʻāla ʻia ai ka commit i kēlā me kēia manawa e ka waihona mea kūʻai aku, e like me ka hoʻonohonoho ʻana. auto.commit.interval.ms. Aia kēia ʻano ma waena o nā ʻano JMS AUTO_ACKNOWLEDGE a me DUPS_OK_ACKNOWLEDGE. I ka hoʻohana ʻana i ka autocommit, hiki ke hoʻokō ʻia nā memo me ka nānā ʻole ʻia inā ua hana maoli ʻia lākou - hiki ke hana kēia i ka hihia o ka mea kūʻai lohi. Inā haʻalele ka mea kūʻai aku, e kiʻi ʻia nā memo e ka mea kūʻai aku aʻe, e hoʻomaka ana ma ke kūlana kūpaʻa, hiki ke hopena i kahi memo i hala. I kēia hihia, ʻaʻole i nalowale nā ​​​​memo iā Kafka, ʻaʻole i hoʻoponopono ke code heluhelu iā lākou.

He ʻōlelo hoʻohiki like kēia ʻano e like me ka mana 0.9: hiki ke hana ʻia nā memo, akā inā hāʻule, ʻaʻole hiki ke hoʻokō ʻia ka offset, hiki ke hoʻopālua ʻia ka lawe ʻana. ʻO ka nui o nā memo āu e kiʻi ai i ka wā e hoʻokō ai koho (), ʻoi aku ka nui o kēia pilikia.

E like me ka mea i kūkākūkā ʻia ma ka "Heluhelu ʻana i nā memo mai kahi Queue" ma ka ʻaoʻao 21, ʻaʻohe mea e like me ka hoʻouna ʻana i hoʻokahi memo ma kahi ʻōnaehana memo ke nānā ʻia nā ʻano hana hemahema.

Ma Kafka, ʻelua mau ala e hana ai (hana) i kahi offset (offset): ʻakomi a me ka lima. Ma nā hihia ʻelua, hiki ke hana ʻia nā memo i nā manawa he nui inā ua hoʻokō ʻia ka memo akā ua hāʻule ma mua o ka hana ʻana. Hiki iā ʻoe ke koho ʻaʻole e hoʻoponopono i ka memo inā loaʻa ka hana ma hope a ua hoʻopau ʻia kāu code ma mua o ka hiki ke hana ʻia (ma Kafka 0.9 a ma mua paha).

Hiki iā ʻoe ke hoʻomalu i ke kaʻina hana hana offset manual ma ka API mea kūʻai aku ʻo Kafka ma ka hoʻonohonoho ʻana i ka ʻāpana enable.auto.commit i ka hoʻopunipuni a me ke kāhea ʻana i kekahi o kēia mau ʻano:

void commitSync();
void commitAsync();

Inā makemake ʻoe e hana i ka memo "ma ka liʻiliʻi loa", pono ʻoe e hana i ka offset me ka lima commitSync()ma ka hoʻokō ʻana i kēia kauoha ma hope koke o ka hana ʻana i nā memo.

ʻAʻole ʻae kēia mau ʻano i ka ʻae ʻia ʻana o nā memo ma mua o ka hana ʻia ʻana, akā ʻaʻole lākou e hana i kahi mea e hoʻopau ai i nā lohi o ka hana ʻana i ka wā e hāʻawi ana i ke ʻano o ka transactional. ʻAʻohe hana ma Kafka. ʻAʻole hiki i ka mea kūʻai ke hana i kēia:

  • Hoʻihoʻi ʻakomi i kahi memo hoʻopunipuni. Pono nā mea kūʻai aku e mālama i nā ʻokoʻa e kū mai ana i nā uku pilikia a me nā hoʻopau hope, no ka mea ʻaʻole hiki iā lākou ke hilinaʻi i ka mea hoʻolimalima e hoʻouna hou i nā leka.
  • E hoʻouna i nā memo i nā kumuhana he nui i hoʻokahi hana atomika. E like me kā mākou e ʻike koke ai, hiki i ka mana ma luna o nā kumuhana like ʻole a me nā ʻāpana ke noho ma nā mīkini like ʻole i ka pūʻulu Kafka ʻaʻole i hoʻonohonoho i nā kālepa ke hoʻouna ʻia. I ka manawa o kēia kākau ʻana, ua hana ʻia kekahi hana e hiki ai kēia me ka KIP-98.
  • Hoʻohui i ka heluhelu ʻana i kekahi memo mai kekahi kumuhana me ka hoʻouna ʻana i kekahi memo i kekahi kumuhana ʻē aʻe. Eia hou, pili ka hoʻolālā o Kafka i nā mīkini kūʻokoʻa e holo ana ma ke ʻano he kaʻa hoʻokahi a ʻaʻohe hoʻāʻo e hūnā i kēia. No ka laʻana, ʻaʻohe ʻāpana API e ʻae iā ʻoe e loulou mea kūʻai и Ka mea hana ma ke kuai ana. Ma JMS, hāʻawi ʻia kēia e ka mea ADi hanaia mai ai MessageProducers и MessageConsumers.

Inā ʻaʻole hiki iā mākou ke hilinaʻi i nā kālepa, pehea e hiki ai iā mākou ke hāʻawi i nā semantics kokoke i nā mea i hāʻawi ʻia e nā ʻōnaehana leka kahiko?

Inā hiki ke hoʻonui ʻia ka offset o ka mea kūʻai aku ma mua o ka hoʻokō ʻia ʻana o ka leka, e like me ka wā o ka hāʻule ʻana o ka mea kūʻai aku, a laila ʻaʻohe ala o ka mea kūʻai aku e ʻike inā ua hala kāna hui mea kūʻai aku i ka memo i ka wā i hāʻawi ʻia ai i kahi pā. No laila hoʻokahi hoʻolālā e hoʻihoʻi i ka offset i ke kūlana mua. Hāʻawi ka API mea kūʻai Kafka i nā ʻano hana no kēia:

void seek(TopicPartition partition, long offset);
void seekToBeginning(Collection < TopicPartition > partitions);

Palapala ʻimi () hiki ke hoʻohana me ke ala
offsetsForTimes(Map timestapsToSearch) e hoʻihoʻi i kahi mokuʻāina ma kekahi wahi kikoʻī i hala.

ʻO ka hoʻohana ʻana i kēia ala, ʻo ia ka mea e heluhelu ʻia a hana hou ʻia kekahi mau memo i hana mua ʻia. No ka pale ʻana i kēia, hiki iā mākou ke hoʻohana i ka heluhelu idempotent, e like me ka mea i wehewehe ʻia ma ka Mokuna 4, e mālama i nā memo i nānā mua ʻia a hoʻopau i nā kope.

ʻO kahi ʻē aʻe, hiki ke mālama maʻalahi i kāu code mea kūʻai aku, ʻoiai ke ʻae ʻia ka nalowale o ka memo a i ʻole ke kope ʻana. Ke noʻonoʻo mākou i nā hihia hoʻohana i hoʻohana mau ʻia ai ʻo Kafka, e like me ka mālama ʻana i nā hanana log, metrics, click tracking, etc., hoʻomaopopo mākou ʻaʻole paha he hopena koʻikoʻi ka nalowale o nā memo pākahi i nā noi a puni. Ma ia mau hihia, ʻae ʻia nā waiwai paʻamau. Ma kekahi ʻaoʻao, inā pono kāu noi e hoʻouna i nā uku, pono ʻoe e mālama pono i kēlā me kēia memo. Hele mai nā mea a pau i ka pōʻaiapili.

Hōʻike nā ʻike pilikino i ka piʻi ʻana o ka ikaika o nā memo, e emi ana ka waiwai o kēlā me kēia memo. He waiwai nā memo nui ke nānā ʻia ma kahi ʻano hui.

Loaʻa kiʻekiʻe

ʻOkoʻa loa ka hoʻokokoke ʻana o Kafka i ka loaʻa kiʻekiʻe mai ke ala o ActiveMQ. Hoʻolālā ʻia ʻo Kafka e pili ana i nā puʻupuʻu scale-out kahi e loaʻa ai a hāʻawi i nā memo i ka manawa like.

Loaʻa i kahi pūʻulu Kafka he mau manawa broker e holo ana ma nā kikowaena like ʻole. Hoʻolālā ʻia ʻo Kafka e holo ma luna o nā lako kūʻokoʻa maʻamau, kahi i loaʻa i kēlā me kēia node kona waihona ponoʻī. ʻAʻole ʻoluʻolu ʻia ka hoʻohana ʻana i kahi waihona hoʻopili pūnaewele (SAN) no ka mea hiki ke hoʻokūkū nā node helu lehulehu no ka manawa.Ыe nā wā mālama a hana i nā paio.

ʻO Kafka mau ʻōnaehana. Nui nā mea hoʻohana Kafka nui ʻaʻole i pani i kā lākou mau puʻupuʻu a hoʻonui mau ka polokalamu me kahi hoʻomaka hou. Loaʻa kēia ma ka hōʻoiaʻiʻo ʻana i ka hoʻohālikelike me ka mana o mua no nā memo a me nā pilina ma waena o nā brokers.

Hoʻopili ʻia nā mea kūʻai aku i kahi pūʻulu kikowaena Kahu Zoo, ka mea i hana ma ke ʻano he papa inoa ʻikepili hoʻonohonoho a hoʻohana ʻia e hoʻonohonoho i nā kuleana o kēlā me kēia broker. ʻO ZooKeeper ponoʻī kahi ʻōnaehana hoʻolaha e hāʻawi i ka loaʻa kiʻekiʻe ma o ka hoʻopili ʻana o ka ʻike ma ka hoʻokumu ʻana kōrama.

Ma ka hihia kumu, hana ʻia kahi kumuhana i loko o kahi pūʻulu Kafka me kēia mau waiwai:

  • Ka helu o nā ʻāpana. E like me ka mea i kūkākūkā mua ʻia, ʻo ka waiwai pololei i hoʻohana ʻia ma ʻaneʻi e pili ana i ka pae makemake o ka heluhelu like ʻana.
  • ʻO ke kumu hoʻopiʻi (factor) e hoʻoholo i ka nui o nā manawa broker i loko o ka pūʻulu e loaʻa i nā lāʻau no kēia ʻāpana.

Ke hoʻohana nei i nā ZooKeepers no ka hoʻonohonoho ʻana, hoʻāʻo ʻo Kafka e puʻunaue pono i nā ʻāpana hou i waena o nā mea kūʻai aku i ka hui. Hana ʻia kēia e kahi hana hoʻokahi e hana ma ke ʻano he Controller.

I ka manawa holo no kēlā me kēia māhele kumuhana Luna Hoʻokele hāʻawi i nā kuleana i kahi mea hoʻolimalima alakaʻi (alakaʻi, haku, hōʻike) a poe hahai (nā ukali, nā kauā, nā subordinates). ʻO ka broker, ke alakaʻi nei i kēia māhele, ke kuleana no ka loaʻa ʻana o nā leka a pau i hoʻouna ʻia e nā mea hana a hāʻawi i nā leka i nā mea kūʻai. Ke hoʻouna ʻia nā memo i kahi māhele kumuhana, hoʻopili ʻia lākou i nā node broker āpau e hana ana ma ke ʻano he poʻe hahai no kēlā ʻāpana. Ua kapa ʻia kēlā me kēia node i loaʻa nā lāʻau no kahi ʻāpana kope. Hiki i ka broker ke hana ma ke ʻano he alakaʻi no kekahi mau māhele a ma ke ʻano he mea hahai no nā mea ʻē aʻe.

Ua kapa ʻia kahi mea hahai i nā memo a pau i mālama ʻia e ke alakaʻi hoʻopili like ʻia (he kope i loko o ka moku'āina i hoʻonohonoho ʻia, i hoʻopaʻa like ʻia). Inā hele i lalo ka mea hoʻolimalima ma ke ʻano he alakaʻi no ka ʻāpana, hiki i kēlā me kēia mea kūʻai aku i kēia lā a i hoʻonohonoho pū ʻia paha no kēlā ʻāpana e hiki ke lawe i ke kuleana alakaʻi. He hoʻolālā paʻa loa.

ʻO kahi ʻāpana o ka hoʻonohonoho hoʻonohonoho mea hana ka ʻāpana acks, ʻo ia ka mea e hoʻoholo ai i ka nui o nā kope e pono e hōʻoia (hōʻoia) i ka loaʻa ʻana o kahi leka ma mua o ka hoʻouna ʻana o ka pae noi: 0, 1, a i ʻole nā ​​mea āpau. Inā hoʻonoho i a pau, a laila i ka loaʻa ʻana o kahi leka, e hoʻouna ke alakaʻi i kahi hōʻoia i ka mea hana i ka wā e loaʻa ai nā hōʻoia (hoʻomaikaʻi) o ka moʻolelo mai kekahi mau cues (me ia iho) i wehewehe ʻia e ka hoʻonohonoho kumuhana. min.insync.replicas (paʻamau 1). Inā ʻaʻole hiki ke hoʻopili maikaʻi ʻia ka leka, a laila e hoʻolei ka mea hana i kahi ʻokoʻa noi (NoEnoughReplicas ai ole ia, NotEnoughReplicasAfterAppend).

Hoʻokumu kahi hoʻonohonoho maʻamau i kahi kumuhana me kahi mea hoʻopiʻi o 3 (1 alakaʻi, 2 mau mea hahai i kēlā me kēia māhele) a me ka ʻāpana. min.insync.replicas ua hoʻonohonoho ʻia i ka 2. Ma kēia hihia, e ʻae ka cluster i kekahi o nā brokers e hoʻokele i ka māhele kumuhana e iho i lalo me ka ʻole o ka pili ʻana i nā noi mea kūʻai aku.

Hoʻihoʻi kēia iā mākou i ke kālepa maʻamau ma waena o ka hana a me ka hilinaʻi. Hoʻopuka hou ʻia ma ka uku o ka manawa kali hou no ka hōʻoia ʻana (hoʻomaikaʻi) mai ka poʻe hahai. ʻOiai, no ka holo like ʻana, ʻo ka hana hou ʻana i ʻekolu mau nodes ka like me ka hana ʻelua (me ka nānā ʻole i ka hoʻonui ʻana i ka hoʻohana ʻana i ka bandwidth pūnaewele).

Ma ka hoʻohana ʻana i kēia ʻano hoʻopiʻi, pale ʻo Kafka me ke akamai i ka pono e kākau kino i kēlā me kēia memo i ka disk me ka hana. sync(). E kākau ʻia kēlā me kēia memo i hoʻouna ʻia e ka mea hana i ka log partition, akā e like me ka mea i kūkākūkā ʻia ma ka Mokuna 2, ua hana mua ʻia ke kākau ʻana i kahi faila ma ka buffer o ka ʻōnaehana hana. Inā hoʻihoʻi hou ʻia kēia memo i kahi ʻano Kafka ʻē aʻe a aia i loko o kona hoʻomanaʻo, ʻo ka nalowale o ke alakaʻi ʻaʻole ia he manaʻo ua nalowale ka memo ponoʻī - hiki ke lawe ʻia e kahi kope i hoʻonohonoho ʻia.
Hōʻole e hana i ka hana sync() 'o ia ho'i, hiki iā Kafka ke loa'a nā memo e like me ka hiki ke kākau iā lākou i ka ho'omana'o. ʻO ka mea ʻē aʻe, ʻo ka lōʻihi e hiki ai iā ʻoe ke pale i ka hoʻoheheʻe ʻana i ka hoʻomanaʻo i ka disk, ʻoi aku ka maikaʻi. No kēia kumu, ʻaʻole maʻamau ka hāʻawi ʻia ʻana o nā brokers Kafka i ka 64 GB a i ʻole o ka hoʻomanaʻo. ʻO kēia ka hoʻohana ʻana i ka hoʻomanaʻo ʻana e hiki ke holo maʻalahi kahi ʻano Kafka hoʻokahi i nā wikiwiki he mau kaukani mau manawa ʻoi aku ka wikiwiki ma mua o ka mea kūʻai leka uila.

Hiki ke hoʻonohonoho ʻia ʻo Kafka e hoʻohana i ka hana sync() i nā pūʻolo leka. No ka mea, ʻo nā mea a pau ma Kafka e pili ana i ka pōʻai, hana maikaʻi loa ia no nā hihia hoʻohana he nui a he mea pono no nā mea hoʻohana e koi ana i nā hōʻoia ikaika. ʻO ka hapa nui o ka hana maʻemaʻe o Kafka mai nā leka i hoʻouna ʻia i ka mea kūʻai aku ma ke ʻano he ʻeke a heluhelu ʻia kēia mau memo mai ka mea kūʻai aku ma nā poloka sequential me ka hoʻohana ʻana. kope kope nā hana (nā hana i hana ʻole ʻia ka hana o ke kope ʻana i ka ʻikepili mai kahi wahi hoʻomanaʻo a i kekahi). ʻO ka mea hope he hana nui a loaʻa waiwai a hiki ke hiki wale ma o ka hoʻohana ʻana i kahi hoʻolālā ʻikepili log underlying e wehewehe ana i ka hoʻolālā partition.

ʻOi aku ka maikaʻi o ka hana i loko o kahi puʻupuʻu Kafka ma mua o ka mea hoʻolimalima Kafka hoʻokahi, no ka mea hiki i nā māhele kumuhana ke hoʻonui i nā mīkini ʻokoʻa.

Nā hopena

Ma kēia mokuna, ua nānā mākou i ke ʻano o ka hoʻolālā ʻana o Kafka i ka pilina ma waena o nā mea kūʻai aku a me nā mea kūʻai aku e hāʻawi i kahi pipeline memo ikaika loa, me ka throughput ʻoi aku ka nui ma mua o ka mea kūʻai leka uila maʻamau. Ua kūkākūkā mākou i ka hana āna e hoʻohana ai no ka hoʻokō ʻana i kēia a nānā pōkole i ka hoʻolālā ʻana o nā noi e hāʻawi nei i kēia hana. Ma ka mokuna aʻe, e nānā mākou i nā pilikia maʻamau e pono ai nā noi e pili ana i ka memo e hoʻoponopono a kūkākūkā i nā hoʻolālā no ka hana ʻana me lākou. E hoʻopau mākou i ka mokuna ma ka wehewehe ʻana pehea e kamaʻilio ai e pili ana i nā ʻenehana memo ma ka laulā i hiki iā ʻoe ke loiloi i ko lākou kūpono no kāu mau hihia hoʻohana.

ʻāpana unuhi mua: Ka hoʻomaopopo ʻana i nā mea hoʻolaha memo. Ke aʻo ʻana i ka mīkini o ka memo me ActiveMQ a me Kafka. Mokuna 1

Hana ʻia ka unuhi: tele.gg/middle_java

E hoʻomau 'ia…

Hiki i nā mea hoʻohana i hoʻopaʻa inoa ʻia ke komo i ka noiʻi. Eʻe, e 'oluʻolu.

Hoʻohana ʻia ʻo Kafka i kāu hui?

  • ia

  • No

  • Ua hoʻohana mua ʻia, ʻaʻole i kēia manawa

  • Hoʻolālā mākou e hoʻohana

38 mea hoʻohana i koho. Ua hōʻole nā ​​mea hoʻohana 8.

Source: www.habr.com

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