Ha se ts'ebetso feela: Tsela eo re entseng database e abuoang ka eona ho tsoa ho Kafka Streams, le hore na ho hlahile eng

Hey Habr!

Re u hopotsa hore ho latela buka e mabapi le Kafka re hatisitse mosebetsi o khahlisang ka ho lekana mabapi le laeborari Kafka Streams API.

Ha se ts'ebetso feela: Tsela eo re entseng database e abuoang ka eona ho tsoa ho Kafka Streams, le hore na ho hlahile eng

Hajoale, sechaba se ntse se ithuta meeli ea sesebelisoa sena se matla. Kahoo, sengoloa se sa tsoa hatisoa, phetolelo eo re ratang ho u tsebisa eona. Ho latela boiphihlelo ba hae, sengoli se re bolella mokhoa oa ho fetola Kafka Streams hore e be polokelo ea data e ajoang. Natefeloa ke ho bala!

Laebrari ea Apache Melapo ea Kafka e sebelisoa lefatšeng ka bophara likhoebong bakeng sa ts'ebetso ea phallo e pharalletseng holim'a Apache Kafka. E 'ngoe ea likarolo tse sa ananeloeng tsa moralo ona ke hore o u lumella ho boloka naha ea lehae e hlahisoang ho ipapisitsoe le ts'ebetso ea likhoele.

Sengoliloeng sena, ke tla u joetsa hore na k'hamphani ea rona e khonne ho sebelisa monyetla ona joang ka mokhoa o motle ha o ntse o theha sehlahisoa bakeng sa ts'ireletso ea ts'ebeliso ea leru. Re sebelisa Kafka Streams, re thehile li-microservices tsa mmuso tse arolelanoang, tseo e 'ngoe le e' ngoe e sebetsang e le mohloli o mamellang liphoso le o fumanehang haholo oa tlhahisoleseding e ka tšeptjoang mabapi le boemo ba lintho tse tsamaisong. Ho rona, ena ke mohato o tsoelang pele ka bobeli mabapi le ho ts'epahala le boiketlo ba tšehetso.

Haeba u thahasella mokhoa o mong o u lumellang hore u sebelise database e le 'ngoe e bohareng ho tšehetsa boemo bo hlophisitsoeng ba lintho tsa hau, e bale, e tla ba monate ...

Hobaneng re ne re nahana hore ke nako ea ho fetola tsela eo re sebetsang ka eona le naha e arolelanoang

Re ne re hloka ho boloka boemo ba lintho tse fapaneng ho latela litlaleho tsa moemeli (mohlala: na sebaka se ne se hlaseloa)? Pele re fallela Kafka Streams, hangata re ne re itšetlehile ka database e le 'ngoe e bohareng (+ tšebeletso ea API) bakeng sa tsamaiso ea naha. Mokhoa ona o na le mefokolo ea oona: letsatsi maemo a tebileng ho boloka botsitso le ho amahanya ho fetoha phephetso ea nnete. Database e ka fetoha tšitiso kapa ea qetella e kene boemo ba morabe le ho hlokofatsoa ke ho se lebellehe.

Ha se ts'ebetso feela: Tsela eo re entseng database e abuoang ka eona ho tsoa ho Kafka Streams, le hore na ho hlahile eng

Setšoantšo sa 1: Boemo bo tloaelehileng ba ho arohana bo bonoang pele ho phetoho ea ho
Kafka le Kafka Streams: baemeli ba fana ka maikutlo a bona ka API, boemo bo ntlafalitsoeng bo baloa ka database e bohareng.

Kopana le Kafka Streams, e nolofalletsang ho theha li-microservices tsa mmuso tse arolelanoang

Hoo e ka bang selemo se fetileng, re ile ra nka qeto ea ho shebisisa maemo a rona a kopanetsweng a mmuso ho rarolla mathata ana. Hang-hang re ile ra etsa qeto ea ho leka Kafka Streams - rea tseba hore na e ka senyeha hakae, e fumaneha haholo ebile e mamella liphoso, e na le ts'ebetso e ntle ea ho phallela (liphetoho, ho kenyeletsoa le tse hlakileng). Seo re neng re se hloka feela, re sa bue ka hore na tsamaiso ea melaetsa e se e hōlile hakae ebile e tšepahala hakae Kafka.

E 'ngoe le e' ngoe ea li-microservices tse ntle tseo re li entseng e hahiloe ka holim'a mohlala oa Kafka Streams ka topology e bonolo. E ne e na le 1) mohloli 2) processor e nang le lebenkele le tsitsitseng la boleng ba bohlokoa 3) sinki:

Ha se ts'ebetso feela: Tsela eo re entseng database e abuoang ka eona ho tsoa ho Kafka Streams, le hore na ho hlahile eng

Setšoantšo sa 2: The topology ea kamehla ea maemo a rona a ho hasanya bakeng sa li-microservices tsa stateful. Hlokomela hore ho boetse ho na le sebaka sa polokelo mona se nang le metadata ea moralo.

Ka mokhoa ona o mocha, baemeli ba ngola melaetsa e feptjoang sehloohong sa mohloli, 'me bareki-ba re, tšebeletso ea tsebiso ea poso-ba amohela boemo bo arolelanoang ka k'homphieutha (sehlooho sa lihlahisoa).

Ha se ts'ebetso feela: Tsela eo re entseng database e abuoang ka eona ho tsoa ho Kafka Streams, le hore na ho hlahile eng

Setšoantšo sa 3: Mohlala o mocha oa phallo ea mosebetsi bakeng sa boemo bo nang le li-microservices tse arolelanoang: 1) moemeli o hlahisa molaetsa o fihlang sehloohong sa mohloli oa Kafka; 2) microservice e nang le naha e arolelanoang (e sebelisa Kafka Streams) e e sebetsana le ho ngola boemo bo baloang ho sehlooho sa ho qetela sa Kafka; ka mor'a moo 3) bareki ba amohela naha e ncha

Lumela, lebenkele lena la bohlokoa le hahelletsoeng ka har'a linotlolo le na le thuso haholo!

Joalokaha ho boletsoe ka holimo, topology ea rona e arolelanoang e na le lebenkele la boleng ba bohlokoa. Re fumane likhetho tse 'maloa tsa ho e sebelisa,' me tse peli tsa tsona li hlalositsoe ka tlase.

Khetho #1: Sebelisa lebenkele la boleng ba bohlokoa bakeng sa lipalo

Lebenkele la rona la pele la boleng ba linotlolo le ne le na le lintlha tse thusang tseo re li hlokang bakeng sa lipalo. Ka mohlala, maemong a mang naha e arolelanoang e ne e khethoa ke molao-motheo oa "likhetho tse ngata". Sebaka sa polokelo se ka boloka litlaleho tsohle tsa morao-rao tsa moemeli mabapi le boemo ba ntho e itseng. Joale, ha re fumana tlaleho e ncha ho tsoa ho moemeli e mong kapa e mong, re ka e boloka, ra fumana litlaleho ho baemeli ba bang bohle mabapi le boemo ba ntho e le 'ngoe ho tloha polokelong, ebe re pheta palo.
Setšoantšo sa 4 se ka tlase se bonts'a hore na re pepesitse senotlolo / boleng ba lebenkele mokhoa oa ho sebetsa oa processor e le hore molaetsa o mocha o ka sebetsoa.

Ha se ts'ebetso feela: Tsela eo re entseng database e abuoang ka eona ho tsoa ho Kafka Streams, le hore na ho hlahile eng

Setšoantšo sa 4: Re bula phihlello ea lebenkele la boleng ba bohlokoa bakeng sa mokhoa oa ho sebetsa oa processor (kamora mona, mongolo o mong le o mong o sebetsang le mmuso o arolelanoang o tlameha ho kenya tšebetsong mokhoa ona. doProcess)

Khetho #2: Ho theha CRUD API holim'a Kafka Streams

Ha re se re thehile mosebetsi oa rona oa mantlha, re ile ra qala ho leka ho ngola RESTful CRUD API bakeng sa li-microservices tsa rona tse arolelanoang tsa mmuso. Re ne re batla ho khona ho fumana boemo ba lintho tse ling kapa tsohle, hammoho le ho beha kapa ho tlosa boemo ba ntho (e molemo bakeng sa tšehetso ea backend).

Ho ts'ehetsa li-API tsohle tsa Get State, neng kapa neng ha re ne re hloka ho bala boemo bocha nakong ea ts'ebetso, re ne re e boloka ka lebenkeleng le hahelletsoeng la bohlokoa ka nako e telele. Tabeng ena, ho ba bonolo haholo ho kenya ts'ebetsong API e joalo u sebelisa mohlala o le mong oa Kafka Streams, joalokaha ho bontšitsoe lethathamong le ka tlase:

Ha se ts'ebetso feela: Tsela eo re entseng database e abuoang ka eona ho tsoa ho Kafka Streams, le hore na ho hlahile eng

Setšoantšo sa 5: Ho sebelisa lebenkele la bohlokoa la bohlokoa le hahelletsoeng ho fumana boemo ba pele ba ntho.

Ho ntlafatsa boemo ba ntho ka API le hona ho bonolo ho e sebelisa. Ha e le hantle, sohle seo u hlokang ho se etsa ke ho theha moetsi oa Kafka le ho e sebelisa ho etsa rekoto e nang le naha e ncha. Sena se tiisa hore melaetsa eohle e hlahisoang ka API e tla sebetsoa ka tsela e tšoanang le e amoheloang ke bahlahisi ba bang (mohlala, baemeli).

Ha se ts'ebetso feela: Tsela eo re entseng database e abuoang ka eona ho tsoa ho Kafka Streams, le hore na ho hlahile eng

Setšoantšo sa 6: U ka beha boemo ba ntho ka ho sebelisa mohlahisi oa Kafka

Bothata bo bonyenyane: Kafka e na le likarolo tse ngata

Ka mor'a moo, re ne re batla ho aba thepa ea ts'ebetso le ho ntlafatsa phumaneho ka ho fana ka sehlopha sa li-microservices tse arolelanoang ka boemo bo bong le bo bong. Ho seta e ne e le moea o pholileng: hang ha re lokiselitse maemo ohle hore a sebetse tlas'a ID e tšoanang ea kopo (le li-server tse tšoanang tsa bootstrap), hoo e ka bang ntho e 'ngoe le e' ngoe e ne e etsoa ka bo eona. Re boetse re hlalositse hore sehlooho se seng le se seng sa mohloli se tla ba le likarolo tse 'maloa, e le hore mohlala o mong le o mong o ka abeloa karoloana ea likarolo tse joalo.

Ke tla boela ke bolele hore ke mokhoa o tloaelehileng oa ho etsa kopi ea "backup" ea lebenkele la mmuso e le hore, ka mohlala, tabeng ea ho hlaphoheloa ka mor'a ho hlōleha, fetisetsa kopi ena ketsahalong e 'ngoe. Bakeng sa lebenkele le leng le le leng la mmuso ho Kafka Streams, sehlooho se kopitsoang se entsoe ka lethathamo la liphetoho (le latelang lintlafatso tsa lehae). Kahoo, Kafka e lula e tšehetsa lebenkele la mmuso. Ka hona, ha ho e-na le ho hlōleha ha mohlala o mong kapa o mong oa Kafka Streams, lebenkele la mmuso le ka tsosolosoa ka potlako ketsahalong e 'ngoe, moo likarolo tse lumellanang li tla ea teng. Liteko tsa rona li bontšitse hore sena se etsoa ka nako ea metsotsoana, esita le haeba ho na le limilione tsa litlaleho ka lebenkeleng.

Ho tloha ho microservice e le 'ngoe e nang le naha e arolelanoang ho ea ho sehlopha sa li-microservices, ho fetoha ntho e sa reng letho ho kenya ts'ebetsong Get State API. Boemong bo bocha, lebenkele la mmuso la microservice ka 'ngoe le na le karolo feela ea setšoantšo se akaretsang (lintho tseo linotlolo tsa tsona li neng li entsoe 'mapa ho ea karohanong e itseng). Re ile ra tlameha ho fumana hore na ke mohlala ofe o nang le boemo ba ntho eo re e hlokang, 'me re entse sena ho latela metadata ea khoele, joalo ka ha ho bonts'itsoe ka tlase:

Ha se ts'ebetso feela: Tsela eo re entseng database e abuoang ka eona ho tsoa ho Kafka Streams, le hore na ho hlahile eng

Setšoantšo sa 7: Ho sebelisa metadata ea molatsoana, re etsa qeto ea hore na ho tloha mohlaleng ofe ho botsa boemo ba ntho e lakatsehang; mokhoa o ts'oanang o ile oa sebelisoa le GET ALL API

Liphuputso tse kholo

Mabenkele a mmuso a Kafka Streams a ka sebetsa joalo ka database e ajoang,

  • e phetoa khafetsa Kafka
  • CRUD API e ka hahuoa habonolo holim'a sistimi e joalo
  • Ho sebetsana le li-partitions tse ngata ho thata haholoanyane
  • Hape hoa khoneha ho kenya lebenkele le le leng kapa a mangata a mmuso ho topology ea ho phallela ho boloka boitsebiso bo thusang. Khetho ena e ka sebelisoa ho:
  • Polokelo ea nako e telele ea data e hlokahalang bakeng sa lipalo nakong ea ts'ebetso ea molapo
  • Poloko ea nako e telele ea data e ka bang molemo nakong e tlang ha ho fanoa ka mohlala oa ho phallela
  • ho feta ...

Melemo ena le e meng e etsa hore Kafka Streams e lokele ho boloka boemo ba lefats'e ka har'a sistimi e ajoang joalo ka ea rona. Kafka Streams e ipakile e tšepahala haholo tlhahisong (ha re na tahlehelo ea molaetsa ho tloha ha re e romella), 'me re kholisehile hore bokhoni ba eona bo ke ke ba emisa moo!

Source: www.habr.com

Eketsa ka tlhaloso