Te mohio ki nga kaihokohoko karere. Te ako i nga tikanga o te tuku karere me ActiveMQ me Kafka. Upoko 3. Kafka

Te haere tonu o te whakamaoritanga o tetahi pukapuka iti:
Te mohio ki nga Kaihokohoko Karere
kaituhi: Jakub Korab, kaiwhakaputa: O'Reilly Media, Inc., te ra i whakaputaina: Pipiri 2017, ISBN: 9781492049296.

Tuhinga o mua kua whakamaoritia: Te mohio ki nga kaihokohoko karere. Te ako i nga tikanga o te tuku karere me ActiveMQ me Kafka. Upoko 1 Kupu Whakataki

UPOKO 3

Kafka

I whakawhanakehia a Kafka i LinkedIn ki te huri i etahi o nga herenga o nga kaihokohoko karere tuku iho me te karo i te whakatu i nga kaihokohoko karere maha mo nga tauwhitinga rereke rereke, e whakaahuatia ana i roto i tenei pukapuka i raro i te "Whakanuia me waho" kei te wharangi 28 Whakamahi take Kua whakawhirinaki nui a LinkedIn ki te whakaurunga kotahi-ara o te nui rawa o nga raraunga, penei i nga pawhiri wharangi me nga raarangi uru, me te tuku tonu i aua raraunga kia whakamahia e nga punaha maha me te kore e pa ki te hua o nga kaihanga me etahi atu kaihoko. Inaa, ko te take i noho ai a Kafka ko te tiki i te ahua o te hoahoanga karere e whakaahuatia ana e te Universal Data Pipeline.

I runga i tenei whainga mutunga, ka ara ake etahi atu whakaritenga. Me:

  • Kia tino tere
  • Whakaratohia kia nui ake te bandwidth ina mahi ana me nga karere
  • Tautokohia nga tauira Kaiwhakaputa-Kaiohauru me te Tohu-ki-Point
  • Kaua e whakaroa ki te taapiri i nga kaihoko. Hei tauira, ka heke te mahinga o te rarangi me te kaupapa i ActiveMQ i te piki haere o te maha o nga kaihoko ki te haerenga.
  • Kia tauineine whakapae; Mena ka taea e tetahi kaihokohoko e mau tonu ana nga karere te mahi i runga i te tere o te kōpae, katahi ka tika te haere ki tua atu i te tauira kaihokohoko kotahi ki te whakanui ake i te mahi.
  • Whakaitihia te uru ki te rokiroki me te tiki ano i nga karere

Hei whakatutuki i enei mea katoa, i tango a Kafka i tetahi hoahoanga i tautuhi ano i nga mahi me nga kawenga a nga kaihoko me nga kaihokohoko karere. Ko te tauira JMS he tino kaupapa mo te kaihokohoko, kei reira te kaihokohoko te kawenga mo te tohatoha i nga karere me nga kaihoko anake te awangawanga mo te tuku me te whiwhi karere. Ko Kafka, i tetahi atu taha, ko te taha ki te kiritaki, me te kaihoko e mau ana i nga ahuatanga maha o te kaihokohoko tuku iho, penei i te tohatoha tika o nga karere e tika ana ki nga kaihoko, hei utu mo te kaihokohoko tino tere me te tauineine. Mo nga tangata kua mahi me nga punaha korero tuku iho, ko te mahi tahi me Kafka me whakarereke te whakaaro.
Na tenei ahunga miihini i hanga he hanganga korero ka taea te whakanui ake i te whakaputanga ma te maha o nga ota nui ka whakaritea ki tetahi kaihokohoko tikanga. Ka kite tatou, ka puta mai tenei huarahi me nga hokohoko, ko te tikanga kaore a Kafka e pai mo etahi momo mahi me nga rorohiko kua whakauruhia.

Tauira Ūnga Whakakotahi

Hei whakatutuki i nga whakaritenga e whakaahuatia ana i runga ake nei, kua whakakotahihia e Kafka te whakaputa-ohauru me te korero tohu-a-ira i raro i tetahi momo haerenga − kaupapa. He raruraru tenei ki nga tangata kua mahi me nga punaha korero, ko te kupu "kaupapa" e tohu ana ki tetahi tikanga haapurorotanga e kore e mau te panui (mai i te kaupapa). Ko nga kaupapa Kafka me whakaaro he momo haerenga ranu, pera i ta te kupu whakataki o tenei pukapuka.

Mo te toenga o tenei upoko, ki te kore tatou e tino korero kee, ka korero te kupu "kaupapa" ki tetahi kaupapa Kafka.

Kia tino mohio ki te ahuatanga o nga kaupapa me nga mea e whakamanahia ana e ratou, me titiro tuatahi me pehea te whakatinanatanga ki Kafka.
Kei ia kaupapa i Kafka tana ake rangitaki.
Ko nga kaihanga e tuku karere ana ki a Kafka ka tuhi ki tenei raarangi, ka panui nga kaihoko mai i te raarangi ma te whakamahi i nga tohu e ahu whakamua tonu ana. I ia wa, ka mukua e Kafka nga waahanga tawhito o te raarangi, ahakoa kua panuihia nga karere o aua wahanga, kaore ranei. Ko tetahi waahanga nui o te hoahoa a Kafka ko te mea kaore te kaihokohoko e aro mena ka panuihia nga karere, kaore ranei - koinei te kawenga a te kaihoko.

Ko nga kupu "takiuru" me te "tohu" karekau e puta ki roto Tuhinga Kafka. Ka whakamahia enei kupu rongonui i konei hei awhina i te maarama.

He tino rereke tenei tauira mai i te ActiveMQ, kei te rongoa nga karere mai i nga rarangi katoa ki roto i te raarangi kotahi, ka tohuhia e te kaihokohoko nga karere kua mukua i muri i te panuitanga.
Inaianei ka keri hohonu ake ka titiro atu ki te raarangi kaupapa.
He maha nga wahanga o te rangitaki Kafka (Whakaatu 3-1). Ka whakamanahia e Kafka nga ota kaha ki ia wahanga. Ko te tikanga ko nga karere kua tuhia ki te wehewehenga i roto i tetahi raupapa ka panuihia i roto i te raupapa kotahi. Ka whakatinanahia ia wehewehenga hei konae rangitaki hurihuri kei roto he huinga iti (subset) o nga karere katoa i tukuna ki te kaupapa e ona kaihanga. Kei roto i te kaupapa i hangaia, na te taunoa, kotahi wehewehenga. Ko te whakaaro o nga wehewehenga ko te whakaaro matua o Kafka mo te whakatauira whakapae.

Te mohio ki nga kaihokohoko karere. Te ako i nga tikanga o te tuku karere me ActiveMQ me Kafka. Upoko 3. Kafka
Whakaahua 3-1. Wehenga Kafka

Ka tukuna e te kaihanga he karere ki tetahi kaupapa Kafka, ka whakatauhia ko tehea wehenga hei tuku i te karere. Ka titiro tatou ki tenei i roto i te taipitopito atu i muri.

Pānui karere

Ko te kiritaki e hiahia ana ki te panui i nga karere ka whakahaere i tetahi tohu tohu e kiia ana roopu kaihoko, e tohu ana ki whakatiki karere i roto i te wehenga. Ko te Wehewehenga he tuunga pikinga ka timata i te 0 i te timatanga o te wehenga. Ko tenei roopu kaihoko, e tohuhia ana i roto i te API ma te group_id kua tautuhia e te kaiwhakamahi, e pa ana ki kotahi te kaihoko arorau, punaha ranei.

Ko te nuinga o nga punaha korero ka panui i nga raraunga mai i te haerenga ma te whakamahi i nga tauira maha me nga miro hei tukatuka i nga karere i te whakarara. No reira, he maha nga wa o nga kaihoko e tiritiri ana i te roopu kaihoko kotahi.

Ko te raruraru o te panui ka taea te whakaatu penei:

  • He maha nga wehewehenga o te kaupapa
  • Ka taea e nga roopu maha o nga kaihoko te whakamahi i tetahi kaupapa i te wa kotahi
  • Ka taea e te roopu o nga kaihoko te maha nga waahanga rereke

He raruraru maha-ki-maha-kore tenei. Kia mohio ai koe me pehea te whakahaere a Kafka i nga hononga i waenga i nga roopu kaihoko, nga tauira kaihoko, me nga wehewehenga, me titiro tatou ki te raupapa o nga ahuatanga panui uaua ake.

Nga kaihoko me nga roopu kaihoko

Me tango hei timatanga mo tetahi kaupapa me te wehewehenga kotahi (Whakaatu 3-2).

Te mohio ki nga kaihokohoko karere. Te ako i nga tikanga o te tuku karere me ActiveMQ me Kafka. Upoko 3. Kafka
Whakaahua 3-2. Ka panui te kaihoko mai i te wehenga

Ki te hono tetahi tauira kaihoko ki tana ake group_id ki tenei kaupapa, ka tautapahia he wehewehenga panui me te whakatiki i taua wahanga. Kua whirihorahia te tuunga o tenei waahi ki roto i te kiritaki hei tohutohu ki te tuunga hou (karere hou) me te waahi tuatahi (karere tawhito). Ka tono nga kaihoko (pooti) i nga karere mai i te kaupapa, ka panuihia mai i te raarangi.
Ka hoki mai ano te tuunga offset ki Kafka ka penapena hei karere ki tetahi kaupapa o roto _kaihoko_offsets. Ko nga panui panui kaore ano kia mukua, kaore i rite ki te kaihokohoko noa, a ka taea e te kaihoko te whakahoki i te taapiri ki te tukatuka ano i nga karere kua tirohia.

Ina hono tetahi kaihoko arorau tuarua ma te whakamahi i tetahi group_id rereke, ka whakahaerehia e ia tetahi tohu tohu tuarua e motuhake ana i te tuatahi (Whakaatu 3-3). No reira, ko te kaupapa Kafka ka rite ki te rarangi kei reira tetahi kaihoko me te ahua o te kaupapa whakaputa-ohauru (pub-sub) noa e ohauru ana nga kaihoko maha, me te painga taapiri ka penapena nga karere katoa ka taea te tukatuka i nga wa maha.

Te mohio ki nga kaihokohoko karere. Te ako i nga tikanga o te tuku karere me ActiveMQ me Kafka. Upoko 3. Kafka
Whakaahua 3-3. E rua nga kaihoko i roto i nga roopu kaihoko rereke ka panui mai i te wehenga kotahi

Kaihoko i roto i te roopu kaihoko

Ina panui ana tetahi tauira kaihoko i nga raraunga mai i te wehewehenga, kei a ia te mana whakahaere o te atatohu me te tukatuka i nga karere pera i te korero i te waahanga o mua.
Mena he maha nga ahuatanga o nga kaihoko i hono ki te roopu_id kotahi ki tetahi kaupapa me te wehewehenga kotahi, katahi ka whakawhiwhia te tauira i hono whakamutunga ki te mana i runga i te atatohu a mai i tera wa ka whiwhi karere katoa (Whakaatu 3-4).

Te mohio ki nga kaihokohoko karere. Te ako i nga tikanga o te tuku karere me ActiveMQ me Kafka. Upoko 3. Kafka
Whakaahua 3-4. E rua nga kaihoko o te roopu kaihoko kotahi i panui mai i te wehenga kotahi

Ko tenei momo tukatuka, ka nui ake te maha o nga tauira kaihoko i te maha o nga wehewehenga, ka taea te whakaaro he momo kaihoko motuhake. Ka whai hua tenei ki te hiahia koe ki te whakaropu "active-passive" (he "wera-wera" ranei) o nga tauira kaihoko, ahakoa ko te whakahaere i nga kaihoko maha i roto i te whakarara ("active-active" or "hot-hot") he tino angamaheni ake i te Kaihoko.

Ko tenei whanonga tohatoha karere kua whakaahuahia i runga ake nei ka tino miharo ki te whakataurite ki te ahua o te tutira JMS noa. I roto i tenei tauira, ka tohatohahia nga karere ka tukuna ki te rarangi i waenganui i nga kaihoko e rua.

I te nuinga o nga wa, ka hangahia e matou nga tauira maha o nga kaihoko, ka mahia e matou tenei ki te tukatuka i nga karere ki te whakarara, ki te whakanui ake ranei i te tere o te panui, ki te whakapiki ake ranei i te pumau o te mahi panui. I te mea kotahi anake nga tauira ka taea te panui raraunga mai i te wehewehenga i te wa kotahi, me pehea e tutuki ai tenei i Kafka?

Ko tetahi huarahi ki te mahi i tenei ko te whakamahi i te tauira kaihoko kotahi ki te panui i nga karere katoa ka tuku ki te puna miro. Ahakoa ko tenei huarahi ka piki ake te mahinga tukatuka, ka piki ake te uaua o te arorau kaihoko me te kore e mahi ki te whakapiki ake i te pakari o te punaha panui. Mena ka heke tetahi kape o te kaihoko na te korenga o te hiko, na te ahua rite ranei, ka mutu te tangohanga.

Ko te huarahi kanoniana hei whakaoti i tenei raru i Kafka ko te whakamahi bОatu wehewehenga.

Wehewehenga

Ko nga wehewehenga te tikanga matua mo te whakarara i te panui me te whakarahi i tetahi kaupapa ki tua atu i te bandwidth o te tauira kaihokohoko kotahi. Kia pai ake te maarama ki tenei, me whakaaro tatou ki tetahi ahuatanga kei reira tetahi kaupapa e rua nga waahanga ka uru tetahi kaihoko ki tenei kaupapa (Whakaatu 3-5).

Te mohio ki nga kaihokohoko karere. Te ako i nga tikanga o te tuku karere me ActiveMQ me Kafka. Upoko 3. Kafka
Whakaahua 3-5. Ka panui tetahi kaihoko mai i nga waahanga maha

I tenei ahuatanga, ka whakawhiwhia ki te kaihoko te mana whakahaere ki runga i nga tohutoro e pa ana ki tana group_id i roto i nga waahanga e rua ka tiimata ki te panui i nga panui mai i nga waahanga e rua.
Ina taapirihia he kaihoko atu mo te roopu_id kotahi ki tenei kaupapa, ka tohatohahia e Kafka tetahi o nga wehewehenga mai i te tuatahi ki te kaihoko tuarua. Whai muri i tera, ka panui ia tauira o te kaihoko mai i tetahi wahanga o te kaupapa (Whakaatu 3-6).

Kia 20 nga miro e tuka ana i nga karere, me 20 nga wehewehenga. Mena he iti ake nga waahanga, ka waiho koe me nga kaihoko kaore he mea hei mahi, pera i te korero i mua i te korero mo nga kaihoko motuhake.

Te mohio ki nga kaihokohoko karere. Te ako i nga tikanga o te tuku karere me ActiveMQ me Kafka. Upoko 3. Kafka
Whakaahua 3-6. E rua nga kaihoko o te roopu kaihoko kotahi ka panui mai i nga waahanga rereke

Ko tenei kaupapa ka tino whakaiti i te uaua o te kaihokohoko Kafka ka whakaritea ki te tohatoha karere e hiahiatia ana hei pupuri i te rarangi JMS. I konei kaore koe e manukanuka ki nga waahanga e whai ake nei:

  • Ko tehea kaihoko ka whiwhi i te karere e whai ake nei, i runga i te toha-a-roobin, te kaha o naianei o nga kaitarai tiki-mua, nga karere o mua ranei (penei mo nga roopu karere JMS).
  • Ko ehea nga karere ka tukuna ki nga kaihoko me te tuku ano mena ka taka.

Ko nga mahi katoa a te kaihokohoko Kafka ko te tuku i nga panui ki te kaihoko ina tono ana te hunga whakamutunga.

Heoi, ko nga whakaritenga mo te whakarara i te panui me te tuku ano i nga karere rahua e kore e ngaro - ko te kawenga mo ratou ka tukuna noa mai i te kaihokohoko ki te kaihoko. Ko te tikanga me whai whakaaro ki roto i to waehere.

Te tuku karere

Ko te kawenga o te kaihanga o taua karere ki te whakatau ko tehea wehenga ka tukuna he karere. Kia mohio ai tatou ki te tikanga e mahia ai tenei, me ata whakaaro tatou he aha nga mea e tukuna ana e tatou.

I roto i te JMS ka whakamahia e matou he hanganga karere me nga metadata (nga pane me nga taonga) me tetahi tinana kei roto te utu (utumahi), kei Kafka te karere. takirua "uara-matua". Ka tukuna te utunga karere hei uara. Ko te kī, i tetahi atu taha, ka whakamahia te nuinga mo te wehewehe me te whakauru kī tauwhāiti arorau pakihiki te whakatakoto i nga karere e pa ana ki te wehenga kotahi.

I roto i te Upoko 2, i korerohia e matou te ahuatanga o te petipeti ipurangi e tika ana kia whakahaerea nga kaupapa e pa ana ma te kaihoko kotahi:

  1. Kua whirihorahia te kaute kaiwhakamahi.
  2. Ka tohua te moni ki te kaute.
  3. Ka mahia he peti hei tango moni mai i te kaute.

Mēnā he karere ka tukuna ki tētahi kaupapa, ko te kī tūturu ko te ID pūkete.
Ina tukuna he karere ma te whakamahi i te Kafka Producer API, ka tukuna ki tetahi mahi wehewehe, na te korero me te ahua o te kahui Kafka o naianei, ka whakahoki mai i te ID o te wehewehenga kia tukuna ai te karere. Ka whakatinanahia tenei ahuatanga ki Java na roto i te atanga Wehewehenga.

He penei te ahua o tenei atanga:

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

Ko te whakatinanatanga Wehewehenga ka whakamahi i te algorithm hashing kaupapa-whanui taunoa i runga i te ki ki te whakatau i te wehewehenga, i te porowhita-robin ranei mena karekau he ki i tohua. He pai te mahi o tenei uara taunoa i te nuinga o te waa. Heoi, hei nga ra kei mua ka hiahia koe ki te tuhi i a koe ake.

Te tuhi i to ake rautaki wehewehe

Me titiro ki tetahi tauira e hiahia ana koe ki te tuku metadata me te utunga karere. Ko te utunga i roto i ta maatau tauira he tohutohu ki te whakatakoto putea ki te putea keemu. Ko te tohutohu he mea e hiahia ana matou kia kore e whakarereketia i runga i te tuku me te hiahia kia mohio ko te punaha whakarunga whakawhirinaki anake ka taea te timata i taua tohutohu. I tenei keehi, ka whakaae nga punaha tuku me te whiwhi ki te whakamahi i te hainatanga hei whakamotuhēhē i te karere.
I roto i te JMS noa, ka tautuhi noa tatou i tetahi taonga "waitohu karere" ka taapiri atu ki te karere. Heoi, karekau a Kafka e homai he tikanga mo te tuku metadata, he matua me te uara anake.

I te mea ko te uara he utu putea whakawhiti putea e hiahia ana matou ki te pupuri i te pono, kaore he whiringa engari ko te tautuhi i te hanganga raraunga hei whakamahi i roto i te matua. Ki te whakaaro kei te hiahia maatau he ID kaute mo te wehewehe, na te mea me whakahaere nga karere katoa e pa ana ki tetahi kaute, ka puta mai ko te hanganga JSON e whai ake nei:

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

Na te mea ka rereke te uara o te hainatanga i runga i te utu utu, ko te rautaki hashing taunoa o te atanga Wehewehenga e kore e tika kia whakarōpū i nga karere e pa ana. No reira, me tuhi ta tatou ake rautaki ka wetewete i tenei matua ka wehewehe i te uara accountId.

Kei roto i a Kafka nga utu arowhai ki te kite i te pirau o nga karere i roto i te toa me te katoa o nga waahanga haumarutanga. Ahakoa, i etahi wa ka puta nga whakaritenga motuhake mo te ahumahi, penei i runga ake nei.

Ko te rautaki wehewehe a te kaiwhakamahi me whakarite ko nga karere katoa e pa ana ka mutu ki te wehewehenga kotahi. Ahakoa he ahua ngawari tenei, ka uaua te whakaritenga na te hiranga o te ota i nga karere e pa ana me te pehea o te whakatau i te maha o nga wehewehenga o tetahi kaupapa.

Ko te maha o nga wehewehenga o tetahi kaupapa ka huri i te waa, ka taea te taapiri mena ka eke nga waka ki tua atu i nga tumanakohanga tuatahi. No reira, ka taea te hono atu nga taviri karere ki te wehewehenga i tukuna tuatahitia mai, e kii ana i tetahi wahanga o te kawanatanga hei tiri i waenga i nga tauira kaihanga.

Ko tetahi atu take hei whakaaro ko te tohatoha o nga karere puta noa i nga waahanga. Ko te tikanga, karekau nga taviri e toha riterite ki nga karere, kaore hoki nga mahi hash e whakapumau i te tohatoha tika o nga karere mo tetahi huinga taviri iti.
He mea nui kia mohio koe ahakoa ka whiriwhiri koe ki te wehe i nga karere, me whakamahi ano te kaiwhakawehe.

Whakaarohia te whakaritenga ki te whakahoki raraunga i waenga i nga tautau Kafka ki nga waahi matawhenua rereke. Mo tenei kaupapa, ka tae mai a Kafka me tetahi taputapu raina whakahau e kiia nei ko MirrorMaker, e whakamahia ana ki te panui i nga karere mai i tetahi tautau ka whakawhiti ki tetahi atu.

Me mohio a MirrorMaker ki nga taviri o te kaupapa tukurua kia mau tonu te raupapatanga i waenga i nga karere i te wa e tukurua ana i waenga i nga tautau, i te mea kaore pea i te rite te maha o nga wehewehenga mo taua kaupapa i roto i nga tautau e rua.

He onge noa nga rautaki wehewehe ritenga, na te mea he pai te mahi a te hashing taunoa, round robin ranei i te nuinga o nga ahuatanga. Heoi, ki te hiahia koe kia kaha ki te ota taurangi, me tango ranei koe i nga metadata mai i nga utu utu, ko te wehewehe tetahi mea me ata titiro koe.

Ko nga painga o te tauine me te mahi a Kafka ka ahu mai i te whakawhiti i etahi o nga kawenga a te kaihokohoko tuku iho ki te kaihoko. I tenei keehi, ka whakatauhia ki te tohatoha i nga karere e pa ana ki waenga i nga kaihoko maha e mahi whakarara ana.

Me mahi ano nga kaihokohoko JMS ki enei whakaritenga. Ko te mea whakamiharo, ko te tikanga mo te tuku karere e pa ana ki te kaihoko kotahi, i whakatinanahia ma te JMS Message Groups (he rerekee i runga i te rautaki whakatairite kawenga piri (SLB)), me tohu ano e te kaituku nga karere e pa ana. Mo te JMS, ko te kaihokohoko te kawenga mo te tuku i tenei roopu o nga karere e pa ana ki tetahi kaihoko mai i te maha, me te whakawhiti i te mana o te roopu mena ka hinga te kaihoko.

Nga Whakaaetanga Kaihanga

Ehara i te mea ko te wehewehe anake te mea hei whakaaro ina tuku karere. Me titiro ki nga tikanga tuku() o te akomanga Kaihanga i roto i te Java API:

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

Me mahara tonu ko nga tikanga e rua ka hoki mai a Future, e tohu ana kaore i te mahia te mahi tuku. Ko te hua ka tuhia he karere (ProducerRecord) ki te tuku tuku mo ia wehenga kaha ka tukuna ki te kaihokohoko hei miro papamuri i te whare pukapuka kiritaki Kafka. Ahakoa he tino tere te mahi, ko te tikanga ka ngaro nga karere ki te tono kore mohio mena ka mutu tana mahi.

Ka rite ki nga wa katoa, he huarahi kia pono ake te mahi tuku i te utu o te mahi. Ka taea te whakarite i te rahi o tenei parepare ki te 0, ka pehia te miro tono tuku ki te tatari kia oti ra ano te tuku karere ki te kaihokohoko, penei:

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

Ētahi atu kōrero mō te pānui karere

Ko te panui i nga karere he uaua ano me whakaaro. Kaore i rite ki te JMS API, ka taea te whakahaere i te kaiwhakarongo karere hei whakautu i tetahi karere, ko te kiritaki Kafka anake nga pooti. Kia ata titiro tatou ki te tikanga pooti()whakamahia mo tenei kaupapa:

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

Ko te uara whakahoki o te tikanga he hanganga ipu kei roto nga taonga maha rekoata kaihoko mai i te maha o nga wehewehenga. rekoata kaihoko he ahanoa pupuri mo te takirua uara-matua me nga metadata e hono ana, penei i te wehewehenga i ahu mai ai.

I korerohia i roto i te Upoko 2, me mahara tonu tatou ki nga mea ka pa ki nga karere i muri i te whakahaerenga angitu, i te kore angitu ranei, hei tauira, ki te kore e taea e te kaihoko te whakahaere i te karere, ki te whakakore ranei. I JMS, i whakahaerea tenei ma te aratau mihi. Ka whakakorehia e te kaihokohoko te karere kua oti te tukatuka, ka tukuna ano ranei te karere mata, rūpahu ranei (mehemea kua whakamahia nga whakawhitinga).
He rereke te mahi a Kafka. Kaore nga karere e mukua i roto i te kaihokohoko i muri i te panui, a ko nga mea ka pa ki te kore he kawenga ma te waehere whakatika.

Ka rite ki ta matou i kii ai, ko te roopu kaihoko e hono ana ki te taapiri i roto i te raarangi. Ko te waahi o te raarangi e hono ana ki tenei waahanga e rite ana ki te panui ka tukuna hei whakautu pooti(). Ko te waahi o te wa e piki ake ai tenei waahanga hei tohu mo te panui.

Ka hoki ki te tauira panui i korerohia i mua ake nei, e toru nga waahanga o te tukatuka karere:

  1. Tikina he karere mo te panui.
  2. Tukatia te karere.
  3. Whakaū karere.

Ka tae mai te kaihoko Kafka me te whiringa whirihoranga enable.auto.commit. He tautuhinga taunoa e whakamahia pinepinehia ana, pera me nga tautuhinga kei roto te kupu "aunoa".

I mua i te Kafka 0.10, ka tukuna e te kiritaki e whakamahi ana i tenei whiringa te taapiri o te panui whakamutunga ka panuihia i te waea e whai ake nei pooti() i muri i te tukatuka. Ko te tikanga ka taea te tukatuka ano nga karere kua tikina ake mena kua tukatukahia e te kaihoko engari ka ngaro ohorere i mua i te waeatanga pooti(). Na te mea kaore te kaihokohoko e pupuri i tetahi ahuatanga mo te maha o nga wa i panuihia ai te panui, karekau te kaihoko e whakahoki mai i taua karere e mohio kua pa he kino. He pseudo-transactional tenei whanonga. Ko te whakawhiwhinga i mahia anake mena i pai te whakahaere i te karere, engari ki te whakatahe te kaihoko, ka tukuna ano e te kaihokohoko taua karere ki tetahi atu kaihoko. I rite tenei whanonga ki te taurangi tuku karere "i te iti rawa kotahi".

I roto i te Kafka 0.10, kua hurihia te waehere kiritaki kia puta ai te mahi i ia wa e te whare pukapuka kiritaki, pera me te whirihora. auto.commit.interval.ms. Ko tenei whanonga kei waenganui i nga momo JMS AUTO_ACKNOWLEDGE me DUPS_OK_ACKNOWLEDGE. I te wa e whakamahi ana i te autocommit, ka taea te tuku i nga karere ahakoa i tukatukihia - ka puta tenei ki te mea he puhoi te kaihoko. Ki te whakatahe te kaihoko, ka tikina nga karere e te kaihoko e whai ake nei, timata mai i te tuunga pono, tera pea ka ngaro te karere. I tenei keehi, kaore a Kafka i ngaro i nga karere, kaore noa te waehere panui i whakahaere.

He rite tonu te oati o tenei aratau ki te putanga 0.9: ka taea te tukatuka i nga karere, engari ki te rahua, ka kore pea e tutuki te utu, tera pea ka ruarua te tuku. Ko te maha atu o nga karere ka tikina e koe ina mahia ana pooti(), ka nui ake tenei raruraru.

I korerohia i roto i te "Panui Karere mai i te Tutira" i te wharangi 21, karekau he mea penei i te tuku karere kotahi mo te wa kotahi i roto i te punaha korero i te wa e arohia ana nga momo rahunga.

I roto i te Kafka, e rua nga huarahi ki te tuku (whakauru) i te utu (offset): aunoa me te ringa. I roto i nga take e rua, ka taea te tukatuka i nga karere i nga wa maha ki te tukatukahia te karere engari i rahua i mua i te tukunga. Ka taea hoki e koe te kowhiri kia kaua e tukatuka i te karere mena ka puta te tuunga ki muri ka oti to waehere i mua i te tukatuka (kei roto pea i te Kafka 0.9 me mua atu).

Ka taea e koe te whakahaere i te tukanga tuku a-ringa i roto i te API kaihoko Kafka ma te tautuhi i te tawhā enable.auto.commit ki te karanga teka me te tino karanga tetahi o nga tikanga e whai ake nei:

void commitSync();
void commitAsync();

Mena kei te pirangi koe ki te tukatuka i te karere "i te iti rawa kia kotahi", me tuku a-ringa ki a koe commitSync()ma te whakahaere i tenei whakahau i muri tonu i te tukatuka i nga karere.

Ko enei tikanga kaore e whakaae kia whakaaehia nga karere i mua i te tukatuka, engari kaore he mahi hei whakakore i nga whakaroa o te tukatuka i te wa e whakaatu ana te ahua o te hokohoko. Karekau he whakawhitinga i Kafka. Kaore te kaihoko i te kaha ki te mahi i nga mea e whai ake nei:

  • Huri aunoatia he karere rūpahu. Ko nga kaihoko ma ratou ano te whakahaere i nga tuunga ka puta mai i nga utu utu raru me nga koretake o muri, na te mea kaore e taea e ratou te whakawhirinaki ki te kaihokohoko ki te tuku ano i nga karere.
  • Tuku karere ki nga kaupapa maha i roto i te mahi ngota kotahi. Ka kite tatou i nga wa poto nei, ka taea e te mana whakahaere mo nga kaupapa rereke me nga wehewehenga te noho ki runga i nga miihini rereke i roto i te roopu Kafka e kore e whakarite i nga whakawhitinga ina tukuna. I te wa i tuhia ai tenei tuhinga, kua mahia etahi mahi kia taea ai tenei me te KIP-98.
  • Whakauruhia te panui i tetahi karere mai i tetahi kaupapa me te tuku i tetahi atu karere ki tetahi atu kaupapa. Ano, ko te hoahoanga o Kafka e whakawhirinaki ana ki te maha o nga miihini motuhake e rere ana hei pahi kotahi, karekau he ngana ki te huna i tenei. Hei tauira, kaore he waahanga API ka taea e koe te hono kaihoko и Kaihanga i roto i te hokohoko. I roto i te JMS, ka whakaratohia tenei e te ahanoa Sessioni hanga mai ai Kaihanga Karere и Karere Kaihoko.

Ki te kore e taea e tatou te whakawhirinaki ki nga tauwhitinga, me pehea e taea ai e tatou te whakarato i nga tohutoro tata atu ki era e whakaratohia ana e nga punaha tuku korero tuku iho?

Mena tera pea ka piki ake te utu a te kaihoko i mua i te whakahaerenga o te karere, penei i te wa o te tukinga o nga kaihoko, karekau he huarahi e mohio ai te kaihoko mena ka ngaro tana roopu kaihoko i te panui i te wa i tohua ai he wehewehenga. Na ko tetahi rautaki ko te whakahoki ano i te wehenga ki te tuunga o mua. Ko te API kaihoko Kafka e whakarato ana i nga tikanga e whai ake nei mo tenei:

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

Tikanga rapu() ka taea te whakamahi me te tikanga
offsetsForTimes(Mahere tohuwāKi Rapu) ki te hoki whakamuri ki tetahi ahuatanga i etahi waahi motuhake o mua.

Ko te tikanga, ma te whakamahi i tenei huarahi, tera pea ka panuihia, ka tukatukahia ano etahi o nga karere i mahia i mua. Hei karo i tenei, ka taea e tatou te whakamahi i te panui idempotent, pera i te korero i roto i te Upoko 4, ki te pupuri i nga karere kua tirohia i mua me te whakakore i nga taarua.

Hei tauira, ka taea te pupuri ngawari i to waehere kaihoko, mena ka whakaaehia te ngaronga karere, te kape ranei. Ina whakaarohia e matou nga keehi e whakamahia nuitia ana e Kafka, penei i te whakahaere i nga huihuinga o te raarangi, i nga inenga, i te panui panui, me etahi atu, ka mohio matou kaore pea te ngaro o nga karere takitahi ka pa ki nga tono a tawhio noa. I enei ahuatanga, ka tino manakohia nga uara taunoa. Engari, ki te hiahia to tono ki te tuku utu, me ata tiaki e koe ia karere takitahi. Ka heke katoa ki te horopaki.

Ko nga kitenga whaiaro e whakaatu ana ka piki ake te kaha o nga karere, ka heke te uara o ia karere takitahi. He mea nui nga karere nui ina tirohia i roto i te ahua whakahiato.

Te waatea teitei

He rereke te huarahi a Kafka ki te waatea mai i te huarahi a ActiveMQ. I hangaia a Kafka huri noa i nga tautau tauine i reira ka whiwhi nga kaihokohoko katoa me te tohatoha karere i te wa kotahi.

Ko te kahui Kafka he maha nga tauira kaihokohoko e rere ana i runga i nga kaitoro rereke. I hoahoatia a Kafka ki te whakahaere i runga i nga taputapu tuuturu, kei ia pona tana ake rokiroki motuhake. Ko te whakamahi i te rokiroki hono hono (SAN) kaore i te tūtohu na te mea ka taea e nga pona rorohiko maha te whakataetae mo te wa.Ыe nga waahi rokiroki me te hanga pakanga.

Ko Kafka i nga wa katoa pūnaha. He maha nga kaiwhakamahi Kafka nui kaore i tutakina o ratou tautau ka whakahou tonu te rorohiko me te whakaara ano. Ka tutuki tenei ma te whakapumau i te hototahi ki te putanga o mua mo nga karere me nga taunekeneke i waenga i nga kaihokohoko.

Ka hono nga Kaihokohoko ki te kahui tūmau Kaitiaki Kaitiaki Zoo, e mahi ana hei rehita raraunga whirihoranga ka whakamahia hei whakarite i nga mahi a ia kaihokohoko. Ko ZooKeeper ake he punaha tohatoha e whakarato ana i te waatea nui ma te tukurua o nga korero ma te whakatuu kōrama.

I roto i te take taketake, ka hangaia he kaupapa i roto i te kahui Kafka me nga ahuatanga e whai ake nei:

  • Te maha o nga wehewehenga. Ka rite ki te korero i mua ake nei, ko te uara tika e whakamahia ana i konei ka whakawhirinaki ki te taumata e hiahiatia ana o te panui whakarara.
  • Ko te take tukurua (tauwehe) ka whakatau e hia nga tauira kaihokohoko i roto i te kapoi kia mau nga raarangi mo tenei wehewehenga.

Ma te whakamahi i nga ZooKeepers mo te whakariterite, ka ngana a Kafka ki te tohatoha i nga waahanga hou ki waenga i nga kaihokohoko o te roopu. Ka mahia tenei e tetahi tauira e mahi ana hei Kaiwhakahaere.

I te wa whakahaere mo ia wahanga kaupapa Kaiwhakarite tohaina nga mahi ki tetahi kaihokohoko rangatira (kaiarahi, rangatira, kaikawe korero) me kaiwhaiwhai (he apataki, he taurekareka, he tangata raro). Ko te kaihokohoko, hei kaiarahi mo tenei wehewehenga, ko te kawenga mo te tango i nga karere katoa i tukuna mai e nga kaihanga me te tohatoha i nga panui ki nga kaihoko. Ka tukuna nga karere ki tetahi wahanga kaupapa, ka tukuna ki nga pokapu kaihokohoko katoa e mahi ana hei kaiwhai mo taua wehenga. Ka karangahia ia node kei roto nga rakau mo te wehewehenga tauira. Ka taea e te kaihokohoko te mahi hei kaiarahi mo etahi waahanga me te whai i etahi atu.

Ka karangahia he kaiwhai kei roto nga karere katoa e mau ana i te kaiarahi tauira tukutahi (he tauira kei roto i te ahua tukutahi, he tauira tukutahi). Mena ka heke te kaihokohoko hei kaihautu mo te wehewehenga, ka taea e tetahi kaihokohoko e hou ana, kua tukutahi ranei mo taua wehewehenga ka taea te whakahaere i te mahi rangatira. He hoahoa tino tauwhiro.

Ko tetahi waahanga o te whirihoranga kaihanga ko te tawhā acks, e whakatau ana e hia nga tauira me whakaae (whakaae) kua tae mai he karere i mua i te tuku tonu o te miro tono: 0, 1, katoa ranei. Mena kua tautuhia ki katoa, ka tae mai he karere, ka tukuna atu e te kaihautu he whakapumautanga ki te kaihanga i te wa ka whiwhi ia i nga whakapumautanga (nga mihi) o te rekoata mai i etahi tohu (tae atu ki a ia ano) kua tautuhia e te whakatakotoranga kaupapa. min.insync.replicas (taunoa 1). Mena kaore e taea te whakahoki pai i te karere, ka tukuna e te kaihanga he tuunga tono (NotEnoughReplicas ranei NotEnoughReplicasAfterAppend).

He whirihoranga angamaheni ka waihanga kaupapa me te tauwehe tukurua o te 3 (1 rangatira, 2 nga kaiwhaiwhai mo ia wahanga) me te tawhā min.insync.replicas kua tautuhia ki te 2. I tenei keehi, ka tukuna e te roopu tetahi o nga kaihokohoko e whakahaere ana i te waahanga kaupapa kia heke iho me te kore e pa ki nga tono a nga kaihoko.

Ma tenei ka hoki mai ano tatou ki te tauwhitinga kua maarama i waenga i te mahi me te pono. Ka puta te tukuruatanga i runga i te whakapaunga o te wa tatari mo nga whakau (nga mihi) mai i nga kaiwhaiwhai. Ahakoa, na te mea e rere whakarara ana, ko te tukurua ki te toru nga pona he rite tonu te mahi ki te rua (kaore e aro ki te pikinga o te whakamahi bandwidth whatunga).

Ma te whakamahi i tenei kaupapa tukurua, ka karo a Kafka i te hiahia ki te tuhi tinana ia karere ki te kōpae me te mahi. tukutahi(). Ko ia karere ka tukuna mai e te kaihanga ka tuhia ki te raarangi wehewehe, engari ka korerohia i te Upoko 2, ko te tuhi ki tetahi konae i te tuatahi ka mahia i roto i te putunga o te punaha whakahaere. Mena ka tukuna tenei karere ki tetahi atu tauira Kafka a kei roto i tona maharatanga, ko te ngaro o te rangatira ehara i te mea kua ngaro te karere ake - ka taea te tango e te tauira tukutahi.
Te whakakore ki te mahi i te mahi tukutahi() te tikanga ka taea e Kafka te whiwhi karere i te tere ka taea te tuhi ki te mahara. Engari, ko te roa ka taea e koe te karo i te pupuhi mahara ki te kōpae, te pai ake. Mo tenei take, ehara i te mea rereke mo nga kaihokohoko Kafka kia tohatohahia te 64 GB neke atu ranei o te mahara. Ko te tikanga o tenei whakamahinga mahara ka taea e te tauira Kafka kotahi te rere i nga tere maha mano nga wa tere atu i te kaihokohoko karere tuku iho.

Ka taea hoki te whirihora a Kafka ki te tono i te mahi tukutahi() ki nga kohinga karere. I te mea ko nga mea katoa kei roto i Kafka he paanui mo te kete, he pai te mahi mo te maha o nga keehi, he taputapu whai hua mo nga kaiwhakamahi e hiahia ana kia tino kaha. Ko te nuinga o nga mahi parakore a Kafka ka puta mai i nga karere ka tukuna ki te kaihokohoko hei putea ka panuihia enei karere mai i te kaihokohoko i roto i nga poraka raupapa ma te whakamahi kore kape nga mahi (nga mahi e kore e mahia te mahi kape raraunga mai i tetahi waahi mahara ki tetahi atu). Ko te mea whakamutunga he mahi nui me te whiwhi rauemi, ka taea anake ma te whakamahi i tetahi anga raraunga rangitaki e whakaatu ana i te kaupapa wehewehe.

He pai ake nga mahi ka taea i roto i te kahui Kafka i te taha o te kaihokohoko Kafka kotahi, na te mea ka taea e nga wehewehe kaupapa te huri ki nga miihini rereke.

Ngā putanga

I roto i tenei upoko, i titiro matou ki te ahua o te hoahoanga Kafka ki te whakahoki ano i te hononga i waenga i nga kaihoko me nga kaihokohoko ki te whakarato i tetahi paipa karere tino pakari, me te whakaputanga maha nga wa nui atu i tera o te kaihokohoko karere tikanga. Kua korerohia e matou te mahi e whakamahia ana hei whakatutuki i tenei, me te titiro poto ki te hoahoanga o nga tono e whakarato ana i tenei mahi. I roto i te upoko e whai ake nei, ka titiro tatou ki nga raruraru noa e tika ana kia whakaotihia e nga tono a-karere me te matapaki i nga rautaki mo te mahi ki a raatau. Ka whakamutua e matou te upoko ma te whakamaarama me pehea te korero mo nga hangarau korero i te nuinga o te waa kia taea ai e koe te arotake i te pai mo o keehi.

Tuhinga o mua kua whakamaoritia: Te mohio ki nga kaihokohoko karere. Te ako i nga tikanga o te tuku karere me ActiveMQ me Kafka. Upoko 1

Kua oti te whakamaoritanga: tele.gg/middle_java

Kia haere tonu ...

Ko nga kaiwhakamahi kua rehita anake ka uru ki te rangahau. Waitohu maitēnā.

Kei te whakamahia a Kafka i roto i to whakahaere?

  • Ae

  • No

  • I whakamahia i mua, inaianei kaore

  • Ka whakamahere matou ki te whakamahi

38 nga kaiwhakamahi i pooti. 8 nga kaiwhakamahi i aukati.

Source: will.com

Tāpiri i te kōrero