Oye awọn alagbata ifiranṣẹ. Kọ ẹkọ awọn ẹrọ ti fifiranṣẹ pẹlu ActiveMQ ati Kafka. Chapter 3. Kafka

Ilọsiwaju ti itumọ iwe kekere kan:
Oye Awọn alagbata Ifiranṣẹ
onkowe: Jakub Korab, akede: O'Reilly Media, Inc., ọjọ ti atejade: June 2017, ISBN: 9781492049296.

Apa ti a tumọ tẹlẹ: Oye awọn alagbata ifiranṣẹ. Kọ ẹkọ awọn ẹrọ ti fifiranṣẹ pẹlu ActiveMQ ati Kafka. Chapter 1 Ọrọ Iṣaaju

ORI 3

Kafka

Kafka jẹ idagbasoke nipasẹ LinkedIn lati wa ni ayika diẹ ninu awọn aropin ti awọn alagbata ifiranšẹ ibile ati yago fun nini lati ṣeto awọn alagbata ifiranṣẹ lọpọlọpọ fun awọn ibaraenisepo aaye-si-ojuami, eyiti a ṣapejuwe ninu iwe yii labẹ “Iwọn si oke ati ita” ni oju-iwe 28 Lo awọn ọran LinkedIn gbarale nipataki lori jijẹ ọna kan ti awọn oye data ti o tobi pupọ, gẹgẹbi awọn titẹ oju-iwe ati awọn akọọlẹ iwọle, lakoko ti o tun ngbanilaaye data yẹn lati lo nipasẹ awọn ọna ṣiṣe lọpọlọpọ laisi ni ipa lori iṣelọpọ ti awọn olupilẹṣẹ tabi awọn alabara miiran. Ni otitọ, idi ti Kafka wa ni lati gba iru faaji fifiranṣẹ ti Pipeline Data Agbaye ṣapejuwe.

Fi fun ibi-afẹde ipari yii, awọn ibeere miiran dide nipa ti ara. Kafka yẹ ki o:

  • Ṣe iyara pupọ
  • Pese bandiwidi diẹ sii nigba ṣiṣẹ pẹlu awọn ifiranṣẹ
  • Ṣe atilẹyin Olutẹwe-alabapin ati awọn awoṣe Ojuami-si-ojuami
  • Maṣe fa fifalẹ pẹlu fifi awọn onibara kun. Fun apẹẹrẹ, iṣẹ ti isinyi ati koko-ọrọ ni ActiveMQ dinku bi nọmba awọn alabara ti o wa lori opin irin ajo ti n dagba.
  • Jẹ iwọn petele; Ti alagbata kan ti o duro awọn ifiranṣẹ le ṣe bẹ nikan ni iyara disk ti o pọju, lẹhinna o jẹ oye lati lọ kọja apẹẹrẹ alagbata kan lati mu iṣẹ pọ si
  • Idinwo wiwọle si titoju ati tun awọn ifiranṣẹ gba pada

Lati ṣaṣeyọri gbogbo eyi, Kafka gba faaji kan ti o ṣe atunkọ awọn ipa ati awọn ojuse ti awọn alabara ati awọn alagbata fifiranṣẹ. Awoṣe JMS jẹ iṣalaye alagbata pupọ, nibiti alagbata jẹ iduro fun pinpin awọn ifiranṣẹ ati awọn alabara nikan ni lati ṣe aniyan nipa fifiranṣẹ ati gbigba awọn ifiranṣẹ. Kafka, ni ida keji, jẹ ile-iṣẹ alabara, pẹlu alabara ti o gba ọpọlọpọ awọn ẹya ti alagbata ibile, gẹgẹbi pinpin ododo ti awọn ifiranṣẹ ti o yẹ si awọn alabara, ni paṣipaarọ fun alagbata iyara pupọ ati iwọn. Fun awọn eniyan ti o ti ṣiṣẹ pẹlu awọn ọna ṣiṣe fifiranṣẹ ibile, ṣiṣẹ pẹlu Kafka nilo iyipada ipilẹ ti ọkan.
Itọsọna imọ-ẹrọ yii ti yori si ṣiṣẹda awọn amayederun fifiranṣẹ ti o lagbara lati jijẹ igbejade nipasẹ ọpọlọpọ awọn aṣẹ ti titobi ni akawe si alagbata ti aṣa. Bi a yoo rii, ọna yii wa pẹlu awọn iṣowo, eyiti o tumọ si pe Kafka ko dara fun awọn iru iṣẹ ṣiṣe ati sọfitiwia ti a fi sii.

Awoṣe Ibi Isokan

Lati mu awọn ibeere ti a ṣalaye loke wa, Kafka ti ni idapo titẹjade-alabapin ati fifiranṣẹ aaye-si-ojuami labẹ iru opin irin ajo kan - koko. Eyi jẹ airoju fun awọn eniyan ti o ti ṣiṣẹ pẹlu awọn eto fifiranṣẹ, nibiti ọrọ naa “koko” tọka si ẹrọ igbohunsafefe lati eyiti (lati koko-ọrọ) kika jẹ alaiṣe. Awọn koko-ọrọ Kafka yẹ ki o gbero iru ibi-ajo arabara, gẹgẹ bi a ti ṣalaye ninu ifihan si iwe yii.

Fun iyokù ipin yii, ayafi ti a ba sọ ni gbangba bibẹẹkọ, ọrọ naa “koko” yoo tọka si koko-ọrọ Kafka kan.

Lati loye ni kikun bi awọn akọle ṣe huwa ati kini awọn iṣeduro ti wọn pese, a nilo lati kọkọ wo bii wọn ṣe ṣe imuse ni Kafka.
Koko kọọkan ni Kafka ni akọọlẹ tirẹ.
Awọn olupilẹṣẹ ti n firanṣẹ awọn ifiranṣẹ si Kafka kọwe si akọọlẹ yii, ati awọn alabara ka lati inu akọọlẹ nipa lilo awọn itọka ti o tẹsiwaju nigbagbogbo. Lẹẹkọọkan, Kafka npa awọn ẹya atijọ julọ ti log, boya awọn ifiranṣẹ ti o wa ninu awọn apakan yẹn ti ka tabi rara. Aarin apakan ti apẹrẹ Kafka ni pe alagbata ko bikita ti a ba ka awọn ifiranṣẹ tabi rara - iyẹn ni ojuṣe alabara.

Awọn ofin "log" ati "itọkasi" ko han ninu Kafka iwe aṣẹ. Awọn ofin ti a mọ daradara ni a lo nibi lati ṣe iranlọwọ oye.

Awoṣe yii yatọ patapata si ActiveMQ, nibiti awọn ifiranṣẹ lati gbogbo awọn ila ti wa ni ipamọ sinu akọọlẹ kanna, ati pe alagbata samisi awọn ifiranṣẹ bi paarẹ lẹhin ti a ti ka wọn.
Jẹ ki a ma wà diẹ jinle ki o wo akọọlẹ koko ni awọn alaye diẹ sii.
Iwe akọọlẹ Kafka ni ọpọlọpọ awọn ipin (Olusin 3-1). Kafka ṣe iṣeduro aṣẹ ti o muna ni ipin kọọkan. Eyi tumọ si pe awọn ifiranṣẹ ti a kọ si ipin ni aṣẹ kan yoo ka ni ilana kanna. Ipin kọọkan jẹ imuse bi faili log sẹsẹ ti o ni ninu ipin kan (ipin) ti gbogbo awọn ifiranṣẹ ti a firanṣẹ si koko-ọrọ nipasẹ awọn olupilẹṣẹ rẹ. Koko ti o ṣẹda ni, nipasẹ aiyipada, ipin kan. Ero ti awọn ipin jẹ imọran aringbungbun ti Kafka fun iwọn petele.

Oye awọn alagbata ifiranṣẹ. Kọ ẹkọ awọn ẹrọ ti fifiranṣẹ pẹlu ActiveMQ ati Kafka. Chapter 3. Kafka
olusin 3-1. Awọn ipin Kafka

Nigbati olupilẹṣẹ ba fi ifiranṣẹ ranṣẹ si koko-ọrọ Kafka kan, o pinnu iru ipin lati firanṣẹ si. A yoo wo eyi ni awọn alaye diẹ sii nigbamii.

Awọn ifiranṣẹ kika

Onibara ti o fẹ ka awọn ifiranṣẹ n ṣakoso itọka ti a npè ni ẹgbẹ olumulo, eyiti o tọka si aiṣedeede awọn ifiranṣẹ ni ipin. Aiṣedeede jẹ ipo afikun ti o bẹrẹ ni 0 ni ibẹrẹ ti ipin kan. Ẹgbẹ onibara yii, ti a tọka si ni API nipasẹ olumulo-telẹ group_id, ni ibamu si ọkan mogbonwa olumulo tabi eto.

Pupọ awọn ọna ṣiṣe fifiranṣẹ ka data lati opin irin ajo nipa lilo awọn iṣẹlẹ pupọ ati awọn okun lati ṣe ilana awọn ifiranṣẹ ni afiwe. Nitorinaa, ọpọlọpọ awọn igba olumulo yoo wa nigbagbogbo pinpin ẹgbẹ olumulo kanna.

Iṣoro ti kika le jẹ aṣoju bi atẹle:

  • Koko ni ọpọ ipin
  • Awọn ẹgbẹ pupọ ti awọn onibara le lo koko kan ni akoko kanna
  • Ẹgbẹ kan ti awọn alabara le ni awọn iṣẹlẹ lọtọ lọpọlọpọ

Eyi jẹ iṣoro pupọ-si-ọpọlọpọ ti kii ṣe bintin. Lati loye bii Kafka ṣe n kapa awọn ibatan laarin awọn ẹgbẹ olumulo, awọn apẹẹrẹ olumulo, ati awọn ipin, jẹ ki a wo lẹsẹsẹ awọn oju iṣẹlẹ kika diẹ sii ni ilọsiwaju.

Awọn onibara ati awọn ẹgbẹ onibara

Jẹ ki a mu bi aaye ibẹrẹ koko kan pẹlu ipin kan (Olusin 3-2).

Oye awọn alagbata ifiranṣẹ. Kọ ẹkọ awọn ẹrọ ti fifiranṣẹ pẹlu ActiveMQ ati Kafka. Chapter 3. Kafka
olusin 3-2. Onibara ka lati ipin

Nigbati apẹẹrẹ olumulo kan ba so pọ pẹlu group_id tirẹ si koko yii, o ti yan ipin kika ati aiṣedeede ni ipin yẹn. Ipo aiṣedeede yii jẹ tunto ni alabara bi itọka si ipo aipẹ julọ (ifiranṣẹ tuntun) tabi ipo akọkọ (ifiranṣẹ atijọ). Olumulo naa n beere awọn ifiranṣẹ (awọn idibo) lati koko-ọrọ, eyiti o jẹ ki wọn ka ni lẹsẹsẹ lati akọọlẹ naa.
Ipo aiṣedeede jẹ ifaramo nigbagbogbo pada si Kafka ati fipamọ bi awọn ifiranṣẹ ninu koko inu _consumer_offsets. Awọn ifiranṣẹ kika ko tun paarẹ, ko dabi alagbata deede, ati pe alabara le da aiṣedeede pada lati tun ilana awọn ifiranṣẹ ti a ti wo tẹlẹ.

Nigbati alabara ọgbọn keji ba sopọ pẹlu lilo ẹgbẹ_id ọtọtọ, o ṣakoso atọka keji ti o jẹ ominira ti akọkọ (Olusin 3-3). Nitorinaa, koko-ọrọ Kafka kan n ṣiṣẹ bi isinyi nibiti alabara kan wa ati bii akọle titẹjade-alabapin (pub-sub) koko-ọrọ ti ọpọlọpọ awọn alabara ṣe alabapin si, pẹlu anfani ti a ṣafikun pe gbogbo awọn ifiranṣẹ ti wa ni ipamọ ati pe o le ṣe ilana ni igba pupọ.

Oye awọn alagbata ifiranṣẹ. Kọ ẹkọ awọn ẹrọ ti fifiranṣẹ pẹlu ActiveMQ ati Kafka. Chapter 3. Kafka
olusin 3-3. Awọn onibara meji ni oriṣiriṣi awọn ẹgbẹ onibara ka lati ipin kanna

Awọn onibara ni ẹgbẹ onibara

Nigbati apẹẹrẹ olumulo kan ba ka data lati ipin kan, o ni iṣakoso kikun ti ijuboluwole ati awọn ifiranšẹ ilana bi a ti ṣalaye ninu apakan ti tẹlẹ.
Ti ọpọlọpọ awọn ọran ti awọn alabara ba ni asopọ pẹlu ẹgbẹ_id kanna si koko kan pẹlu ipin kan, lẹhinna apẹẹrẹ ti o sopọ kẹhin yoo jẹ iṣakoso lori itọka naa ati lati akoko yẹn yoo gba gbogbo awọn ifiranṣẹ (Olusin 3-4).

Oye awọn alagbata ifiranṣẹ. Kọ ẹkọ awọn ẹrọ ti fifiranṣẹ pẹlu ActiveMQ ati Kafka. Chapter 3. Kafka
olusin 3-4. Awọn onibara meji ni ẹgbẹ onibara kanna ka lati ipin kanna

Ipo ti sisẹ yii, ninu eyiti nọmba awọn apẹẹrẹ olumulo ti kọja nọmba awọn ipin, ni a le ronu bi iru alabara iyasọtọ. Eyi le wulo ti o ba nilo ikojọpọ “akitiyan-palolo” (tabi “gbona-gbona”) ti awọn iṣẹlẹ olumulo rẹ, botilẹjẹpe ṣiṣiṣẹ awọn alabara lọpọlọpọ ni afiwe (“lọwọ-lọwọ” tabi “gbona-gbona”) jẹ aṣoju pupọ ju awọn onibara Ni imurasilẹ.

Ihuwasi pinpin ifiranṣẹ ti a ṣalaye loke le jẹ iyalẹnu ni akawe si bii isinyi JMS deede ṣe huwa. Ni awoṣe yii, awọn ifiranšẹ ti a fi ranṣẹ si isinyi yoo pin kaakiri laarin awọn onibara meji.

Ni ọpọlọpọ igba, nigba ti a ba ṣẹda awọn igba pupọ ti awọn onibara, a ṣe eyi boya lati ṣe ilana awọn ifiranṣẹ ni afiwe, tabi lati mu iyara kika kika sii, tabi lati mu iduroṣinṣin ti ilana kika. Niwọn igba ti apẹẹrẹ olumulo kan nikan le ka data lati ipin ni akoko kan, bawo ni eyi ṣe waye ni Kafka?

Ọna kan lati ṣe eyi ni lati lo apẹẹrẹ olumulo kan lati ka gbogbo awọn ifiranṣẹ ki o gbe wọn lọ si adagun okun. Lakoko ti ọna yii n pọ si iṣelọpọ iṣelọpọ, o mu idiju ti oye olumulo pọ si ati pe ko ṣe nkankan lati mu agbara ti eto kika naa pọ si. Ti ẹda kan ti olumulo ba lọ silẹ nitori ikuna agbara tabi iṣẹlẹ ti o jọra, lẹhinna iyokuro naa duro.

Awọn canonical ọna lati yanju isoro yi ni Kafka ni lati lo bОdiẹ ipin.

Pipin

Awọn ipin jẹ ẹrọ akọkọ fun ṣiṣe afiwe kika ati iwọn koko-ọrọ ti o kọja bandiwidi ti apẹẹrẹ alagbata kan. Lati ni oye eyi daradara, jẹ ki a gbero ipo kan nibiti koko-ọrọ kan wa pẹlu awọn ipin meji ati alabara kan ṣe alabapin si koko yii (Olusin 3-5).

Oye awọn alagbata ifiranṣẹ. Kọ ẹkọ awọn ẹrọ ti fifiranṣẹ pẹlu ActiveMQ ati Kafka. Chapter 3. Kafka
olusin 3-5. Onibara kan ka lati awọn ipin pupọ

Ni oju iṣẹlẹ yii, olumulo ni iṣakoso lori awọn itọka ti o baamu si group_id rẹ ni awọn ipin mejeeji ati bẹrẹ kika awọn ifiranṣẹ lati awọn ipin mejeeji.
Nigbati afikun olumulo fun ẹgbẹ_id kanna ni a ṣafikun si koko yii, Kafka ṣe atunṣe ọkan ninu awọn ipin lati akọkọ si alabara keji. Lẹhin iyẹn, apẹẹrẹ kọọkan ti alabara yoo ka lati ipin kan ti koko-ọrọ naa (Olusin 3-6).

Lati rii daju pe awọn ifiranṣẹ ti ni ilọsiwaju ni afiwe ni awọn okun 20, o nilo o kere ju awọn ipin 20. Ti awọn ipin diẹ ba wa, iwọ yoo fi silẹ pẹlu awọn alabara ti ko ni nkankan lati ṣiṣẹ lori, bi a ti ṣalaye tẹlẹ ninu ijiroro ti awọn alabara iyasọtọ.

Oye awọn alagbata ifiranṣẹ. Kọ ẹkọ awọn ẹrọ ti fifiranṣẹ pẹlu ActiveMQ ati Kafka. Chapter 3. Kafka
olusin 3-6. Awọn onibara meji ni ẹgbẹ onibara kanna ka lati awọn ipin oriṣiriṣi

Eto yii dinku idiju ti alagbata Kafka ni akawe si pinpin ifiranṣẹ ti o nilo lati ṣetọju isinyi JMS. Nibi o ko nilo lati ṣe aniyan nipa awọn aaye wọnyi:

  • Onibara wo ni o yẹ ki o gba ifiranṣẹ atẹle, da lori ipin ipin-robin, agbara lọwọlọwọ ti awọn buffers prefetch, tabi awọn ifiranṣẹ iṣaaju (bii awọn ẹgbẹ ifiranṣẹ JMS).
  • Awọn ifiranṣẹ wo ni a firanṣẹ si eyiti awọn alabara ati boya wọn yẹ ki o tun firanṣẹ ni ọran ikuna.

Gbogbo alagbata Kafka ni lati ṣe ni fifiranṣẹ awọn ifiranṣẹ lẹsẹsẹ si alabara nigbati igbehin ba beere lọwọ wọn.

Bibẹẹkọ, awọn ibeere fun isọdọtun iṣatunṣe ati fifiranṣẹ awọn ifiranṣẹ ti o kuna ko lọ - ojuse fun wọn lasan kọja lati ọdọ alagbata si alabara. Eyi tumọ si pe wọn gbọdọ ṣe akiyesi ninu koodu rẹ.

Fifiranṣẹ awọn ifiranṣẹ

O jẹ ojuṣe ti olupilẹṣẹ ti ifiranṣẹ yẹn lati pinnu iru ipin ti yoo fi ifiranṣẹ ranṣẹ si. Lati loye ẹrọ nipa eyiti a ṣe eyi, a nilo akọkọ lati ronu kini gangan ti a nfiranṣẹ gangan.

Lakoko ti o wa ni JMS a lo eto ifiranṣẹ pẹlu metadata (awọn akọle ati awọn ohun-ini) ati ara ti o ni ẹru isanwo (ẹru isanwo), ni Kafka ifiranṣẹ naa jẹ bata "bọtini-iye". Ti firanṣẹ fifuye ifiranṣẹ bi iye kan. Bọtini naa, ni ida keji, ni akọkọ lo fun pipin ati pe o gbọdọ ni ninu owo kannaa pato bọtinilati fi jẹmọ awọn ifiranṣẹ ni kanna ipin.

Ni ori 2, a jiroro lori oju iṣẹlẹ kalokalo ori ayelujara nibiti awọn iṣẹlẹ ti o jọmọ nilo lati ni ilọsiwaju ni aṣẹ nipasẹ alabara kan:

  1. A tunto akọọlẹ olumulo naa.
  2. Owo ti wa ni ka si awọn iroyin.
  3. A tẹtẹ ti wa ni ṣe ti o yọ owo lati awọn iroyin.

Ti iṣẹlẹ kọọkan jẹ ifiranṣẹ ti a fiweranṣẹ si koko-ọrọ kan, lẹhinna bọtini adayeba yoo jẹ ID akọọlẹ naa.
Nigbati a ba fi ifiranṣẹ ranṣẹ nipa lilo API Olupilẹṣẹ Kafka, o ti kọja si iṣẹ ipin kan eyiti, fun ifiranṣẹ naa ati ipo lọwọlọwọ ti iṣupọ Kafka, da ID ti ipin ti o yẹ ki o firanṣẹ si. Ẹya yii jẹ imuse ni Java nipasẹ wiwo Partitioner.

Ni wiwo yii dabi eyi:

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

Imuse Partitioner nlo aiyipada gbogboogbo-idi hashing algorithm lori bọtini lati pinnu ipin, tabi iyipo-robin ti ko ba si bọtini kan pato. Yi aiyipada iye ṣiṣẹ daradara ni ọpọlọpọ igba. Sibẹsibẹ, ni ọjọ iwaju iwọ yoo fẹ lati kọ tirẹ.

Kikọ ara rẹ ipin nwon.Mirza

Jẹ ki a wo apẹẹrẹ kan nibiti o fẹ fi metadata ranṣẹ pẹlu ẹru isanwo ifiranṣẹ naa. Iwọn isanwo ninu apẹẹrẹ wa jẹ itọnisọna lati ṣe idogo kan si akọọlẹ ere naa. Itọnisọna jẹ nkan ti a yoo fẹ lati ni iṣeduro lati ma ṣe yipada lori gbigbe ati fẹ lati ni idaniloju pe eto oke ti o gbẹkẹle nikan le bẹrẹ itọnisọna yẹn. Ni idi eyi, awọn ọna ṣiṣe fifiranṣẹ ati gbigba gba lori lilo ibuwọlu kan lati jẹri ifiranṣẹ naa.
Ni deede JMS, a rọrun asọye ohun-ini “Ibuwọlu ifiranṣẹ” ati ṣafikun si ifiranṣẹ naa. Sibẹsibẹ, Kafka ko pese wa pẹlu ẹrọ kan fun gbigbe metadata, bọtini nikan ati iye kan.

Niwọn igba ti iye naa jẹ fifuye gbigbe gbigbe banki kan ti iduroṣinṣin ti a fẹ lati tọju, a ko ni yiyan bikoṣe lati ṣalaye eto data lati lo ninu bọtini. Ti a ro pe a nilo ID akọọlẹ kan fun pipin, niwọn bi gbogbo awọn ifiranṣẹ ti o jọmọ akọọlẹ gbọdọ wa ni ilọsiwaju, a yoo ṣe agbekalẹ eto JSON atẹle yii:

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

Nitori iye ti ibuwọlu yoo yatọ si da lori isanwo isanwo, ilana hashing aiyipada ti wiwo Partitioner kii yoo ni igbẹkẹle awọn ifiranṣẹ ti o ni ibatan ẹgbẹ. Nitorinaa, a yoo nilo lati kọ ilana tiwa ti yoo ṣe itupalẹ bọtini yii ki o pin iye ID Account.

Kafka pẹlu awọn sọwedowo lati rii ibajẹ ti awọn ifiranṣẹ ninu ile itaja ati pe o ni awọn ẹya aabo ni kikun. Paapaa nitorinaa, awọn ibeere ile-iṣẹ kan pato, gẹgẹbi eyi ti o wa loke, nigbakan farahan.

Ilana ipinpin olumulo gbọdọ rii daju pe gbogbo awọn ifiranṣẹ ti o jọmọ pari ni ipin kanna. Lakoko ti eyi dabi pe o rọrun, ibeere naa le jẹ idiju nipasẹ pataki ti pipaṣẹ awọn ifiranṣẹ ti o ni ibatan ati bii nọmba awọn ipin ti o wa titi ninu koko-ọrọ jẹ.

Nọmba awọn ipin ninu koko kan le yipada ni akoko pupọ, bi wọn ṣe le ṣafikun ti ijabọ ba kọja awọn ireti akọkọ. Nitorinaa, awọn bọtini ifiranṣẹ le ni nkan ṣe pẹlu ipin ti a fi ranṣẹ si wọn ni akọkọ, ti o tumọ si nkan ti ipinlẹ lati pin laarin awọn iṣẹlẹ olupilẹṣẹ.

Ohun miiran lati ronu ni paapaa pinpin awọn ifiranṣẹ kọja awọn ipin. Ni deede, awọn bọtini ko pin boṣeyẹ kọja awọn ifiranṣẹ, ati awọn iṣẹ hash ko ṣe iṣeduro pinpin awọn ifiranṣẹ deede fun ṣeto awọn bọtini kekere kan.
O ṣe pataki lati ṣe akiyesi pe sibẹsibẹ o yan lati pin awọn ifiranṣẹ, oluyatọ funrararẹ le nilo lati tun lo.

Wo ibeere naa lati tun ṣe data laarin awọn iṣupọ Kafka ni awọn ipo agbegbe ti o yatọ. Fun idi eyi, Kafka wa pẹlu ọpa laini aṣẹ ti a pe ni MirrorMaker, eyiti o lo lati ka awọn ifiranṣẹ lati inu iṣupọ kan ati gbe wọn lọ si omiiran.

MirrorMaker gbọdọ loye awọn bọtini ti koko ẹda lati le ṣetọju ilana ibatan laarin awọn ifiranṣẹ nigbati o ba ṣe ẹda laarin awọn iṣupọ, nitori nọmba awọn ipin fun koko yẹn le ma jẹ kanna ni awọn iṣupọ meji.

Awọn ọgbọn ipin ti aṣa jẹ ṣọwọn, nitori hashing aiyipada tabi robin yika ṣiṣẹ daradara ni ọpọlọpọ awọn oju iṣẹlẹ. Bibẹẹkọ, ti o ba nilo awọn iṣeduro pipaṣẹ ti o lagbara tabi nilo lati jade metadata lati awọn ẹru isanwo, lẹhinna ipin jẹ nkan ti o yẹ ki o wo ni pẹkipẹki.

Awọn scalability ati awọn anfani iṣẹ ti Kafka wa lati yiyi diẹ ninu awọn ojuse ti alagbata ibile si alabara. Ni ọran yii, a ṣe ipinnu lati pin kaakiri awọn ifiranšẹ ti o ni ibatan laarin ọpọlọpọ awọn alabara ti n ṣiṣẹ ni afiwe.

Awọn alagbata JMS tun nilo lati ṣe pẹlu iru awọn ibeere. O yanilenu, siseto fun fifiranṣẹ awọn ifiranṣẹ ti o ni ibatan si alabara kanna, ti a ṣe nipasẹ Awọn ẹgbẹ Ifiranṣẹ JMS (iyatọ kan lori ilana iwọntunwọnsi fifuye alalepo (SLB), tun nilo olufiranṣẹ lati samisi awọn ifiranṣẹ bi ibatan. Ninu ọran ti JMS, alagbata jẹ iduro fun fifiranṣẹ ẹgbẹ yii ti awọn ifiranṣẹ ti o jọmọ si olumulo kan ninu ọpọlọpọ, ati gbigbe nini ẹgbẹ ti alabara ba ṣubu.

Awọn adehun olupilẹṣẹ

Pipin kii ṣe ohun kan ṣoṣo lati ronu nigbati o ba nfi awọn ifiranṣẹ ranṣẹ. Jẹ ki a wo awọn ọna fifiranṣẹ () ti kilasi Olupese ni Java API:

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

O yẹ ki o ṣe akiyesi lẹsẹkẹsẹ pe awọn ọna mejeeji pada ojo iwaju, eyiti o tọka pe iṣẹ fifiranṣẹ ko ṣe lẹsẹkẹsẹ. Abajade ni pe ifiranṣẹ kan (ProducerRecord) ti kọ si ifipamọ ifiranšẹ fun ipin kọọkan ti nṣiṣe lọwọ ati firanṣẹ si alagbata bi o tẹle ara lẹhin ni ile-ikawe alabara Kafka. Lakoko ti eyi jẹ ki awọn nkan ni iyara ti iyalẹnu, o tumọ si pe ohun elo ti ko ni iriri le padanu awọn ifiranṣẹ ti ilana rẹ ba duro.

Gẹgẹbi nigbagbogbo, ọna kan wa lati jẹ ki iṣẹ fifiranṣẹ diẹ sii ni igbẹkẹle laibikita iṣẹ ṣiṣe. Iwọn ifipamọ yii le ṣeto si 0, ati okun ohun elo fifiranṣẹ yoo fi agbara mu lati duro titi gbigbe ifiranṣẹ si alagbata yoo pari, bi atẹle:

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

Diẹ ẹ sii nipa kika awọn ifiranṣẹ

Awọn ifiranṣẹ kika ni afikun awọn idiju ti o nilo lati ṣe akiyesi nipa. Ko JMS API, eyi ti o le ṣiṣe awọn olutẹtisi ifiranṣẹ ni esi si ifiranṣẹ kan, awọn olumulo Kafka nikan idibo. Jẹ ká ya a jo wo ni awọn ọna idibo()ti a lo fun idi eyi:

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

Iwọn ipadabọ ti ọna naa jẹ ẹya eiyan ti o ni awọn nkan lọpọlọpọ olumulo igbasilẹ lati oyi orisirisi awọn ipin. olumulo igbasilẹ funrararẹ jẹ ohun elo dimu fun bata-iye bọtini pẹlu metadata ti o somọ, gẹgẹbi ipin lati eyiti o ti wa.

Gẹ́gẹ́ bí a ti sọ̀rọ̀ rẹ̀ ní Orí 2, a gbọ́dọ̀ fi ohun tó ń ṣẹlẹ̀ sí àwọn ìfiránṣẹ́ sọ́kàn lẹ́yìn tí wọ́n bá ti ṣàṣeyọrí tàbí tí wọ́n ṣàṣeyọrí, fún àpẹẹrẹ, tí oníbàárà náà kò bá lè ṣe iṣẹ́ ìwàásù tàbí tí ó bá jáwọ́. Ni JMS, eyi ni a mu nipasẹ ipo itẹwọgba. Alagbata naa yoo pa ifiranṣẹ ti a ti ni ilọsiwaju rẹ, tabi tun fi aise tabi ifiranṣẹ iro ranṣẹ (a ro pe awọn iṣowo ti lo).
Kafka ṣiṣẹ yatọ pupọ. Awọn ifiranṣẹ ko ni paarẹ ninu alagbata lẹhin kika, ati pe ohun ti o ṣẹlẹ lori ikuna jẹ ojuṣe ti koodu iṣatunṣe funrararẹ.

Gẹgẹbi a ti sọ, ẹgbẹ alabara ni nkan ṣe pẹlu aiṣedeede ninu akọọlẹ. Ipo log ti o ni nkan ṣe pẹlu aiṣedeede yii ni ibamu si ifiranṣẹ atẹle lati gbejade ni esi si idibo(). Ojuami ni akoko nigbati aiṣedeede yii pọ si jẹ ipinnu fun kika.

Pada si awoṣe kika ti a sọrọ tẹlẹ, sisẹ ifiranṣẹ ni awọn ipele mẹta:

  1. Gba ifiranṣẹ kan pada fun kika.
  2. Ṣiṣẹ ifiranṣẹ naa.
  3. Jẹrisi ifiranṣẹ.

Olumulo Kafka wa pẹlu aṣayan iṣeto ni sise.auto.commit. Eyi jẹ eto aiyipada ti a lo nigbagbogbo, bi o ṣe wọpọ pẹlu awọn eto ti o ni ọrọ “laifọwọyi” ninu.

Ṣaaju si Kafka 0.10, alabara ti o lo aṣayan yii yoo firanṣẹ aiṣedeede ti ifiranṣẹ ti o kẹhin ti o ka lori ipe atẹle idibo() lẹhin processing. Eyi tumọ si pe eyikeyi awọn ifiranṣẹ ti o ti gba tẹlẹ le ṣe atunṣe ti alabara ti ṣe ilana wọn tẹlẹ ṣugbọn o ti parun lairotẹlẹ ṣaaju pipe. idibo(). Niwọn igba ti alagbata ko tọju eyikeyi ipinlẹ nipa iye igba ti a ti ka ifiranṣẹ kan, alabara atẹle ti o gba ifiranṣẹ yẹn ko ni mọ pe nkan buburu ti ṣẹlẹ. Iwa yii jẹ afarape-idunadura. Aiṣedeede naa ti ṣe nikan ti ifiranṣẹ ba ti ni ilọsiwaju ni aṣeyọri, ṣugbọn ti alabara ba parẹ, alagbata yoo tun fi ifiranṣẹ kanna ranṣẹ si alabara miiran. Iwa yii wa ni ibamu pẹlu iṣeduro ifijiṣẹ ifiranṣẹ "o kere ju lẹẹkan".

Ni Kafka 0.10, koodu alabara ti yipada ki ifarabalẹ naa jẹ okunfa lorekore nipasẹ ile-ikawe alabara, bi a ti tunto auto.commit.interval.ms. Iwa yii wa ni ibikan laarin awọn ipo JMS AUTO_ACKNOWLEDGE ati DUPS_OK_ACKNOWLEDGE. Nigbati o ba nlo autocommit, awọn ifiranṣẹ le jẹ ifaramọ laibikita boya wọn ti ni ilọsiwaju gangan - eyi le ṣẹlẹ ninu ọran ti olumulo ti o lọra. Ti olumulo kan ba kọlu, awọn ifiranṣẹ yoo gba nipasẹ alabara atẹle, ti o bẹrẹ ni ipo ifaramọ, eyiti o le ja si ifiranṣẹ ti o padanu. Ni idi eyi, Kafka ko padanu awọn ifiranṣẹ, koodu kika kan ko ṣe ilana wọn.

Ipo yii ni ileri kanna bi ninu ẹya 0.9: awọn ifiranṣẹ le ni ilọsiwaju, ṣugbọn ti o ba kuna, aiṣedeede le ma ṣe ifaramọ, ti o le fa ki ifijiṣẹ ni ilọpo meji. Awọn ifiranṣẹ diẹ sii ti o mu nigbati o ba n ṣiṣẹ idibo(), awọn diẹ isoro yi.

Gẹgẹbi a ti jiroro rẹ ni “Awọn ifiranṣẹ Kika lati Queue kan” ni oju-iwe 21, ko si iru nkan bii ifijiṣẹ akoko kan ti ifiranṣẹ ni eto fifiranṣẹ nigbati awọn ipo ikuna ti wa ni akiyesi.

Ni Kafka, awọn ọna meji lo wa lati ṣe (ṣe) aiṣedeede (aiṣedeede): laifọwọyi ati pẹlu ọwọ. Ni awọn ọran mejeeji, awọn ifiranṣẹ le ni ilọsiwaju ni ọpọlọpọ igba ti ifiranṣẹ ba ti ni ilọsiwaju ṣugbọn kuna ṣaaju ṣiṣe naa. O tun le yan lati ma ṣe ilana ifiranṣẹ naa rara ti iṣẹ naa ba ṣẹlẹ ni abẹlẹ ati pe koodu rẹ ti pari ṣaaju ṣiṣe rẹ (boya ni Kafka 0.9 ati ni iṣaaju).

O le ṣakoso ilana aiṣedeede afọwọṣe ni API olumulo Kafka nipa tito paramita naa sise.auto.commit si eke ati ni gbangba pipe ọkan ninu awọn ọna wọnyi:

void commitSync();
void commitAsync();

Ti o ba fẹ ṣe ilana ifiranṣẹ naa "o kere ju ẹẹkan", o gbọdọ ṣe aiṣedeede pẹlu ọwọ adehunSync()nipa ṣiṣe pipaṣẹ yii lẹsẹkẹsẹ lẹhin ṣiṣe awọn ifiranṣẹ naa.

Awọn ọna wọnyi ko gba laaye awọn ifiranṣẹ lati jẹwọ ṣaaju ṣiṣe wọn, ṣugbọn wọn ko ṣe nkankan lati yọkuro awọn idaduro iṣelọpọ ti o pọju lakoko ti o funni ni ifarahan ti iṣowo. Ko si awọn iṣowo ni Kafka. Onibara ko ni agbara lati ṣe atẹle naa:

  • Yii ifiranṣẹ iro pada ni aladaaṣe. Awọn onibara funrara wọn gbọdọ mu awọn imukuro ti o dide lati awọn fifuye isanwo iṣoro ati awọn ijade ẹhin, nitori wọn ko le gbarale alagbata lati tun fi awọn ifiranṣẹ ranṣẹ.
  • Firanṣẹ awọn ifiranṣẹ si awọn akọle pupọ ni iṣẹ atomiki kan. Gẹgẹbi a yoo rii laipẹ, iṣakoso lori awọn oriṣiriṣi awọn akọle ati awọn ipin le gbe lori awọn ẹrọ oriṣiriṣi ninu iṣupọ Kafka ti ko ṣe ipoidojuko awọn iṣowo nigba fifiranṣẹ. Ni akoko kikọ yii, diẹ ninu awọn iṣẹ ti ṣe lati jẹ ki eyi ṣee ṣe pẹlu KIP-98.
  • Darapọ mọ kika ifiranṣẹ kan lati koko kan pẹlu fifiranṣẹ ifiranṣẹ miiran si koko miiran. Lẹẹkansi, faaji ti Kafka da lori ọpọlọpọ awọn ẹrọ ominira nṣiṣẹ bi ọkọ akero kan ati pe ko si igbiyanju lati tọju eyi. Fun apẹẹrẹ, ko si awọn paati API ti yoo gba ọ laaye lati sopọ mọ olumulo и Olupese ni idunadura. Ni JMS, eyi ti pese nipasẹ ohun naa igbalati eyiti a ṣẹda Awọn olupilẹṣẹ Ifiranṣẹ и Ifiranṣẹ Awọn onibara.

Ti a ko ba le gbarale awọn iṣowo, bawo ni a ṣe le pese awọn atunmọ isunmọ awọn ti a pese nipasẹ awọn eto fifiranṣẹ ibile?

Ti o ba ṣeeṣe pe aiṣedeede olumulo le pọ si ṣaaju ki o to ti ni ilọsiwaju ifiranṣẹ, gẹgẹbi lakoko jamba olumulo, lẹhinna alabara ko ni ọna lati mọ boya ẹgbẹ alabara rẹ padanu ifiranṣẹ naa nigbati o ti pin ipin kan. Nitorinaa ilana kan ni lati da aiṣedeede pada si ipo iṣaaju. API onibara Kafka pese awọn ọna wọnyi fun eyi:

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

Ọna wá() le ṣee lo pẹlu ọna
offsetsForTimes (Map timestampsToSearch) lati pada si ipo kan ni aaye kan pato ni igba atijọ.

Ni ṣoki, lilo ọna yii tumọ si pe o ṣee ṣe pupọ pe diẹ ninu awọn ifiranṣẹ ti a ti ṣiṣẹ tẹlẹ yoo jẹ kika ati ṣiṣẹ lẹẹkansi. Lati yago fun eyi, a le lo iwe-kika idempotent, gẹgẹbi a ti ṣalaye ni Orí 4, lati tọju abala awọn ifiranṣẹ ti a ti wo tẹlẹ ati imukuro awọn ẹda-ẹda.

Ni omiiran, koodu olumulo rẹ le jẹ ki o rọrun, niwọn igba ti pipadanu ifiranṣẹ tabi išẹpo jẹ itẹwọgba. Nigba ti a ba gbero awọn ọran lilo eyiti Kafka ti jẹ lilo nigbagbogbo, gẹgẹbi mimu awọn iṣẹlẹ log, awọn metiriki, titẹ tẹ, ati bẹbẹ lọ, a loye pe pipadanu awọn ifiranṣẹ kọọkan ko ṣeeṣe lati ni ipa pataki lori awọn ohun elo agbegbe. Ni iru awọn ọran, awọn iye aiyipada jẹ itẹwọgba ni pipe. Ni apa keji, ti ohun elo rẹ ba nilo lati fi awọn sisanwo ranṣẹ, o gbọdọ farabalẹ tọju ifiranṣẹ kọọkan. Gbogbo rẹ wa si isalẹ lati ọrọ-ọrọ.

Awọn akiyesi ti ara ẹni fihan pe bi kikankikan ti awọn ifiranṣẹ ṣe n pọ si, iye ti ifiranṣẹ kọọkan n dinku. Awọn ifiranṣẹ nla maa n niyelori nigba wiwo ni fọọmu akojọpọ.

Wiwa to gaju

Ọna Kafka si wiwa giga yatọ pupọ si ọna ActiveMQ. Kafka jẹ apẹrẹ ni ayika awọn iṣupọ iwọn-jade nibiti gbogbo awọn iṣẹlẹ alagbata gba ati pinpin awọn ifiranṣẹ ni akoko kanna.

Apọpọ Kafka kan ni ọpọlọpọ awọn igba alagbata ti nṣiṣẹ lori awọn olupin oriṣiriṣi. A ṣe Kafka lati ṣiṣẹ lori ohun elo adaduro lasan, nibiti ipade kọọkan ni ibi ipamọ iyasọtọ tirẹ. Lilo ibi ipamọ ti a so mọ nẹtiwọki (SAN) ko ṣe iṣeduro nitori ọpọlọpọ awọn apa oniṣiro le dije fun akoko.Ыe ipamọ awọn aaye arin ati ki o ṣẹda rogbodiyan.

Kafka ni nigbagbogbo lori eto. Ọpọlọpọ awọn olumulo Kafka nla ko tii awọn iṣupọ wọn silẹ ati pe sọfitiwia nigbagbogbo ṣe imudojuiwọn pẹlu atunbere lẹsẹsẹ. Eyi jẹ aṣeyọri nipasẹ iṣeduro ibamu pẹlu ẹya ti tẹlẹ fun awọn ifiranṣẹ ati awọn ibaraenisepo laarin awọn alagbata.

Awọn alagbata ti sopọ mọ iṣupọ olupin ZooKeeper, eyi ti o ṣe bi iforukọsilẹ data iṣeto ni ati pe a lo lati ṣe ipoidojuko awọn ipa ti alagbata kọọkan. ZooKeeper funrararẹ jẹ eto pinpin ti o pese wiwa giga nipasẹ isọdọtun alaye nipa iṣeto iyege.

Ninu ọran ipilẹ, koko kan ni a ṣẹda ninu iṣupọ Kafka pẹlu awọn ohun-ini wọnyi:

  • Nọmba ti awọn ipin. Gẹgẹbi a ti sọ tẹlẹ, iye gangan ti a lo nibi da lori ipele ti o fẹ ti kika afiwera.
  • Ipin isọdọtun (ifosiwewe) pinnu iye awọn igba alagbata ninu iṣupọ yẹ ki o ni awọn akọọlẹ fun ipin yii.

Lilo ZooKeepers fun isọdọkan, Kafka ngbiyanju lati pin kaakiri awọn ipin tuntun ni deede laarin awọn alagbata ninu iṣupọ. Eyi ni a ṣe nipasẹ apẹẹrẹ ẹyọkan ti o ṣiṣẹ bi Alakoso.

Ni akoko asiko fun kọọkan ipin ipin Adarí fi awọn ipa si alagbata olori (olori, titunto si, presenter) ati omoleyin (awọn ọmọlẹhin, awọn ẹrú, awọn abẹ). Alagbata naa, ti n ṣiṣẹ bi oludari fun ipin yii, jẹ iduro fun gbigba gbogbo awọn ifiranṣẹ ti a firanṣẹ si rẹ nipasẹ awọn olupilẹṣẹ ati pinpin awọn ifiranṣẹ si awọn alabara. Nigbati a ba fi awọn ifiranṣẹ ranṣẹ si ipin koko kan, wọn jẹ ẹda si gbogbo awọn apa alagbata ti n ṣiṣẹ bi ọmọlẹyin fun ipin yẹn. Oju ipade kọọkan ti o ni awọn akọọlẹ fun ipin ni a pe ajọra. Alagbata le ṣe bi adari fun diẹ ninu awọn ipin ati bi ọmọlẹyin fun awọn miiran.

Olutẹle ti o ni gbogbo awọn ifiranṣẹ ti o waye nipasẹ olori ni a npe ni ajọra amuṣiṣẹpọ (apilẹkọ ti o wa ni ipo imuṣiṣẹpọ, ẹda-in-sync). Ti alagbata ti n ṣiṣẹ bi adari fun ipin kan ba lọ silẹ, eyikeyi alagbata ti o wa titi di oni tabi muuṣiṣẹpọ fun ipin yẹn le gba ipa olori. O jẹ apẹrẹ alagbero ti iyalẹnu.

Apa kan ti iṣeto iṣelọpọ jẹ paramita acks, eyi ti o pinnu iye awọn ẹda ti o gbọdọ jẹwọ (jẹwọ) gbigba ifiranṣẹ ṣaaju ki okun ohun elo naa tẹsiwaju fifiranṣẹ: 0, 1, tabi gbogbo. Ti o ba ṣeto si gbogbo, lẹhinna nigbati a ba gba ifiranṣẹ kan, oludari yoo firanṣẹ ijẹrisi pada si olupilẹṣẹ ni kete ti o ba gba awọn ijẹrisi (awọn ijẹwọgba) ti igbasilẹ lati awọn ifẹnukonu pupọ (pẹlu funrararẹ) asọye nipasẹ eto koko-ọrọ. min.insync.replicas (aiyipada 1). Ti ifiranṣẹ naa ko ba le ṣe atunṣe ni aṣeyọri, lẹhinna olupilẹṣẹ yoo jabọ imukuro ohun elo kan (NotEnoughReplicas tabi NotEnoughReplicasAfterAppend).

Iṣeto ni aṣoju ṣẹda koko-ọrọ kan pẹlu ipin ẹda ti 3 (olori 1, awọn ọmọlẹyin 2 fun ipin) ati paramita min.insync.replicas ti ṣeto si 2. Ni idi eyi, iṣupọ yoo gba ọkan ninu awọn alagbata ti n ṣakoso ipin koko lati lọ silẹ lai ni ipa awọn ohun elo onibara.

Eyi mu wa pada si iṣowo ti o mọ tẹlẹ laarin iṣẹ ati igbẹkẹle. Atunse waye ni laibikita fun afikun akoko idaduro fun awọn ijẹrisi (awọn ijẹri) lati ọdọ awọn ọmọlẹyin. Botilẹjẹpe, nitori pe o nṣiṣẹ ni afiwe, atunkọ si o kere ju awọn apa mẹta ni iṣẹ kanna bi meji (aibikita ilosoke ninu lilo bandiwidi nẹtiwọki).

Nipa lilo ero isọdọtun yii, Kafka fi ọgbọn yago fun iwulo lati kọ ifiranṣẹ kọọkan si disiki pẹlu iṣẹ ṣiṣe naa. amuṣiṣẹpọ(). Ifiranṣẹ kọọkan ti olupilẹṣẹ ti firanṣẹ ni yoo kọ si akọọlẹ ipin, ṣugbọn bi a ti jiroro ni ori 2, kikọ si faili kan ni akọkọ ṣe ni ifipamọ ẹrọ ṣiṣe. Ti ifiranṣẹ yii ba tun ṣe si apẹẹrẹ Kafka miiran ati pe o wa ni iranti rẹ, pipadanu adari ko tumọ si pe ifiranṣẹ funrararẹ ti sọnu - o le gba nipasẹ ẹda ti o muṣiṣẹpọ.
Kiko lati ṣe isẹ naa amuṣiṣẹpọ() tumo si wipe Kafka le gba awọn ifiranṣẹ bi sare bi o ti le kọ wọn si iranti. Lọna miiran, awọn gun o le yago fun flushing iranti to disk, awọn dara. Fun idi eyi, kii ṣe loorekoore fun awọn alagbata Kafka lati pin 64 GB tabi diẹ sii ti iranti. Lilo iranti yii tumọ si pe apẹẹrẹ Kafka kan le ni irọrun ṣiṣẹ ni iyara ni ọpọlọpọ awọn ẹgbẹẹgbẹrun awọn akoko yiyara ju alagbata ifiranṣẹ ibile lọ.

Kafka tun le tunto lati lo iṣẹ naa amuṣiṣẹpọ() to ifiranṣẹ jo. Niwọn igba ti ohun gbogbo ti o wa ni Kafka jẹ iṣalaye package, o ṣiṣẹ daradara daradara fun ọpọlọpọ awọn ọran lilo ati pe o jẹ ohun elo ti o wulo fun awọn olumulo ti o nilo awọn iṣeduro ti o lagbara pupọ. Pupọ ti iṣẹ mimọ ti Kafka wa lati awọn ifiranṣẹ ti a firanṣẹ si alagbata bi awọn apo-iwe ati pe awọn ifiranṣẹ wọnyi ni a ka lati ọdọ alagbata ni awọn bulọọki lẹsẹsẹ ni lilo odo daakọ awọn iṣẹ (awọn iṣẹ lakoko eyiti iṣẹ-ṣiṣe ti didaakọ data lati agbegbe iranti kan si omiiran ko ṣe). Igbẹhin jẹ iṣẹ nla ati ere orisun ati pe o ṣee ṣe nikan nipasẹ lilo eto data log abẹlẹ ti o ṣalaye ero ipin.

Iṣe ti o dara julọ ṣee ṣe ni iṣupọ Kafka ju pẹlu alagbata Kafka kan ṣoṣo, nitori awọn ipin koko le ṣe iwọn jade kọja ọpọlọpọ awọn ẹrọ lọtọ.

Awọn esi

Ninu ori yii, a wo bii faaji Kafka ṣe tun ṣe atunwo ibatan laarin awọn alabara ati awọn alagbata lati pese opo gigun ti fifiranṣẹ ti iyalẹnu, pẹlu iṣelọpọ ni ọpọlọpọ awọn akoko ti o tobi ju ti alagbata ifiranṣẹ ti aṣa lọ. A ti jiroro lori iṣẹ ṣiṣe ti o nlo lati ṣaṣeyọri eyi ati ni ṣoki wo faaji ti awọn ohun elo ti o pese iṣẹ ṣiṣe yii. Ni ori ti o tẹle, a yoo wo awọn iṣoro ti o wọpọ ti o da lori fifiranṣẹ awọn ohun elo nilo lati yanju ati jiroro awọn ilana fun ṣiṣe pẹlu wọn. A yoo pari ipin naa nipa sisọ bi a ṣe le sọrọ nipa awọn imọ-ẹrọ fifiranṣẹ ni gbogbogbo ki o le ṣe iṣiro ibamu wọn fun awọn ọran lilo rẹ.

Apa ti a tumọ tẹlẹ: Oye awọn alagbata ifiranṣẹ. Kọ ẹkọ awọn ẹrọ ti fifiranṣẹ pẹlu ActiveMQ ati Kafka. Ori 1

Ti ṣe itumọ: tele.gg/middel_java

A tun ma a se ni ojo iwaju…

Awọn olumulo ti o forukọsilẹ nikan le kopa ninu iwadi naa. wọle, Jowo.

Njẹ Kafka lo ninu agbari rẹ?

  • Bẹẹni

  • No

  • Ti lo tẹlẹ, bayi kii ṣe

  • A gbero lati lo

38 olumulo dibo. 8 olumulo abstained.

orisun: www.habr.com

Fi ọrọìwòye kun