Ọ bụghị naanị nhazi: Otu anyị si mee ka nchekwa data kesara site na Kafka Streams, na ihe si na ya pụta

Ndewo, Habr!

Anyị na-echetara gị na-eso akwụkwọ banyere Kafka anyị ebipụtawo otu ihe na-akpali ọrụ banyere ọbá akwụkwọ Kafka Streams API.

Ọ bụghị naanị nhazi: Otu anyị si mee ka nchekwa data kesara site na Kafka Streams, na ihe si na ya pụta

Ka ọ dị ugbu a, ndị obodo na-amụta oke ngwa ọrụ a dị ike. Yabụ, e bipụtara otu akụkọ n'oge na-adịbeghị anya, ntụgharị asụsụ nke anyị ga-achọ iwebata gị. Site n'ahụmahụ nke ya, onye edemede na-agwa otu esi atụgharị Kafka Streams na nchekwa data ekesa. Nwee obi ụtọ ịgụ akwụkwọ!

Ọbá akwụkwọ Apache Kafka iyi eji n'ụwa niile na ụlọ ọrụ maka nhazi iyi na-ekesa n'elu Apache Kafka. Otu n'ime akụkụ ndị a na-enweghị ekele na usoro a bụ na ọ na-enye gị ohere ịchekwa steeti mpaghara emepụtara dabere na nhazi eri.

N'isiokwu a, m ga-agwa gị ka ụlọ ọrụ anyị siri nwee ike iji ohere a mee ihe n'ụzọ bara uru mgbe ọ na-emepụta ngwaahịa maka nchekwa ngwa igwe ojii. N'iji Kafka Streams, anyị kere òkè steeti microservices, nke ọ bụla n'ime ha na-eje ozi dị ka mmejọ na-anabata na ukwuu dị isi iyi nke ozi a pụrụ ịdabere na banyere ọnọdụ nke ihe dị na sistemụ. Maka anyị, nke a bụ nzọụkwụ na-aga n'ihu ma n'ihe gbasara ntụkwasị obi na ịdị mfe nke nkwado.

Ọ bụrụ na ị nwere mmasị na ụzọ ọzọ nke na-enye gị ohere iji otu nchekwa data etiti na-akwado ọnọdụ nke ihe gị, gụọ ya, ọ ga-adọrọ mmasị ...

Ihe mere anyị ji chee na ọ bụ oge ịgbanwe ụzọ anyị si arụ ọrụ na steeti òkè

Anyị kwesịrị idowe ọnọdụ nke ihe dị iche iche dabere na akụkọ ndị nnọchite anya (dịka ọmụmaatụ: saịtị a na-awakpo)? Tupu ịkwaga na iyi Kafka, anyị na-adaberekarị na otu nchekwa data etiti (+ API service API) maka njikwa steeti. Usoro a nwere ihe ndọghachi azụ ya: ụbọchị kpụ ọkụ n'ọnụ ọnọdụ idowe nkwụsi ike na mmekọrịta ga-abụ ezigbo ihe ịma aka. Ebe nchekwa data nwere ike bụrụ ihe mgbochi ma ọ bụ banye na ya ọnọdụ agbụrụ na-ata ahụhụ site na enweghị atụ.

Ọ bụghị naanị nhazi: Otu anyị si mee ka nchekwa data kesara site na Kafka Streams, na ihe si na ya pụta

Onyonyo 1: Ọdịiche dị n'ụdị nkewa-steeti hụrụ tupu mgbanwe gaa
Kafka na Kafka iyi: ndị ọrụ na-ekwupụta echiche ha site na API, a na-agbakọ steeti emelitere site na nchekwa data etiti

Zute iyi iyi Kafka, na-eme ka ọ dị mfe ịmepụta microservices steeti

Ihe dị ka otu afọ gara aga, anyị kpebiri ileba anya nke ọma na ọnọdụ steeti anyị na-ekekọrịta iji dozie okwu ndị a. Anyị kpebiri ozugbo ịnwale Kafka Streams - anyị maara otú scalable, ukwuu dị na mmejọ na-anabata ya, kedu ihe bara ụba gụgharia ọrụ ọ nwere (mgbanwe, gụnyere steeti). Naanị ihe dị anyị mkpa, ọ bụghị ịkọwapụta etu usoro izi ozi siri bụrụ nke tozuru oke na ntụkwasị obi na Kafka.

Nke ọ bụla n'ime microservices mara mma anyị mepụtara bụ nke e wuru n'elu ihe atụ Kafka iyi nwere topology dị mfe. Ọ nwere 1) isi iyi 2) ihe nrụpụta nwere ụlọ ahịa igodo bara uru na-adịgide adịgide 3) sink:

Ọ bụghị naanị nhazi: Otu anyị si mee ka nchekwa data kesara site na Kafka Streams, na ihe si na ya pụta

Onyonyo 2: Topology ndabara nke usoro mgbasa ozi anyị maka ọrụ microservice mara mma. Rịba ama na enwekwara ebe nchekwa ebe a nwere metadata atụmatụ.

N'ime usoro ọhụrụ a, ndị ọrụ na-edepụta ozi ndị a na-enye n'ime isiokwu isi mmalite, na ndị na-azụ ahịa-na-ekwu, ọrụ ngosi ozi-nata steeti agbakọtara site na sink (isiokwu mmepụta).

Ọ bụghị naanị nhazi: Otu anyị si mee ka nchekwa data kesara site na Kafka Streams, na ihe si na ya pụta

Onyonyo 3: Ọmụmaatụ ọrụ ọhụrụ na-erugharị maka ọnọdụ nwere ikesa microservices: 1) onye nnọchi anya na-ewepụta ozi nke rutere na isiokwu isi mmalite Kafka; 2) a microservice na òkè ala (iji Kafka Streams) hazie ya na-ede gbakọọ ala na ikpeazụ Kafka isiokwu; mgbe nke a gasịrị 3) ndị na-azụ ahịa na-anabata steeti ọhụrụ

Hey, ụlọ ahịa igodo bara uru arụnyere bara ezigbo uru!

Dịka ekwuru n'elu, topology steeti anyị na-ekekọrịta nwere ụlọ ahịa bara uru. Anyị chọtara ọtụtụ nhọrọ maka iji ya, na abụọ n'ime ha ka akọwara n'okpuru.

Nhọrọ #1: Jiri ụlọ ahịa isi-ọnụ ahịa maka ịgbakọ

Ụlọ ahịa igodo mbụ anyị nwere data enyemaka anyị chọrọ maka mgbako. Dịka ọmụmaatụ, n'ọnọdụ ụfọdụ, a na-ekpebi steeti nkekọrịta site n'ụkpụrụ nke "votu ọtụtụ". Ebe nchekwa ahụ nwere ike ijide akụkọ ndị nnọchi anya kacha ọhụrụ gbasara ọkwa ụfọdụ ihe. Mgbe ahụ, mgbe anyị nwetara akụkọ ọhụrụ site n'aka otu onye ọrụ ma ọ bụ ọzọ, anyị nwere ike ịchekwa ya, weghachite akụkọ sitere na ndị ọrụ ndị ọzọ niile gbasara ọnọdụ nke otu ihe na nchekwa, ma megharịa mgbako ahụ.
Ọgụgụ 4 dị n'okpuru na-egosi otu anyị si kpughee ụlọ ahịa igodo/ọnụ ahịa na usoro nhazi nke processor ka enwere ike hazie ozi ọhụrụ ahụ.

Ọ bụghị naanị nhazi: Otu anyị si mee ka nchekwa data kesara site na Kafka Streams, na ihe si na ya pụta

Ihe atụ 4: Anyị na-emeghe ohere ịnweta ụlọ ahịa isi-uru maka usoro nhazi nke nhazi (mgbe nke a gasịrị, edemede ọ bụla nke na-arụ ọrụ na steeti òkè ga-emejuputa usoro ahụ. doProcess)

Nhọrọ #2: Ịmepụta API CRUD n'elu Kafka Streams

N'ịbụ onye guzobechara usoro ọrụ anyị bụ isi, anyị malitere ịgbalị ide API RESTful CRUD maka ọrụ microservices steeti anyị na-ekekọrịta. Anyị chọrọ inwe ike iweghachite ọnọdụ ụfọdụ ma ọ bụ ihe niile, yana ịtọ ma ọ bụ wepụ ọnọdụ nke ihe (bara uru maka nkwado azụ azụ).

Iji kwado Get State APIs niile, mgbe ọ bụla anyị chọrọ ịtụgharị steeti ahụ n'oge nhazi, anyị na-echekwa ya na ụlọ ahịa igodo bara uru ruo ogologo oge. N'okwu a, ọ na-aghọ ihe dị mfe iji mejuputa API dị otú ahụ site na iji otu ihe atụ nke Kafka Streams, dị ka egosiri na ndepụta dị n'okpuru:

Ọ bụghị naanị nhazi: Otu anyị si mee ka nchekwa data kesara site na Kafka Streams, na ihe si na ya pụta

Ọgụgụ 5: Iji ụlọ ahịa igodo-uru arụnyere n'ime ya iji nweta ọnọdụ agbagoro agbagoro nke ihe

Imelite ọnọdụ ihe site na API dịkwa mfe iji mejuputa ya. N'ụzọ bụ isi, ihe niile ị ga-eme bụ ịmepụta onye na-emepụta Kafka ma jiri ya mee ihe ndekọ nke nwere steeti ọhụrụ. Nke a na-achọpụta na a ga-ahazi ozi niile sitere na API n'otu ụzọ ahụ nke enwetara n'aka ndị nrụpụta ndị ọzọ (dịka ndị nnọchi anya).

Ọ bụghị naanị nhazi: Otu anyị si mee ka nchekwa data kesara site na Kafka Streams, na ihe si na ya pụta

Ọgụgụ 6: Ị nwere ike ịtọ ọnọdụ ihe site na iji onye na-emepụta Kafka

Obere mgbagwoju anya: Kafka nwere ọtụtụ akụkụ

Ọzọ, anyị chọrọ ikesa ibu nhazi ma melite nnweta site n'inye ụyọkọ nke microservices steeti na-ekekọrịta n'otu ọnọdụ. Ntọlite ​​​​bụ ikuku: ozugbo anyị haziri oge niile ka ọ na-agba ọsọ n'okpuru otu ngwa ID (yana otu sava bootstrap), ihe fọrọ nke nta ka ọ bụrụ ihe ọ bụla mere na-akpaghị aka. Anyị kọwapụtakwara na isiokwu isi mmalite ọ bụla ga-enwe akụkụ dị iche iche, ka e wee kenye ihe atụ ọ bụla nkebi nkebi dị otú ahụ.

M ga-ekwukwa na ọ bụ ihe a na-emekarị iji mee ihe ndabere nke ụlọ ahịa steeti ka, dịka ọmụmaatụ, ọ bụrụ na mgbake mgbe ọdịda gasịrị, nyefee akwụkwọ a na ihe atụ ọzọ. Maka ụlọ ahịa steeti ọ bụla na Kafka Streams, a na-eji ndekọ mgbanwe mepụta isiokwu emegharịgharịrị (nke na-akwado mmelite mpaghara). Ya mere, Kafka na-akwado ụlọ ahịa steeti mgbe niile. Ya mere, n'ọnọdụ nke ọdịda nke otu ma ọ bụ ọzọ Kafka Streams, enwere ike weghachite ụlọ ahịa steeti ngwa ngwa na ihe atụ ọzọ, ebe akụkụ ndị kwekọrọ na ya ga-aga. Nlele anyị egosila na a na-eme nke a n'ime ihe dị ka sekọnd, ọbụlagodi na enwere nde nde ndekọ na ụlọ ahịa ahụ.

N'ịga site na otu microservice nwere steeti ekekọrịtara gaa na ụyọkọ nke microservices, ọ na-aghọ ihe na-adịchaghị mkpa iji mejuputa Get State API. N'ọnọdụ ọhụrụ, ụlọ ahịa steeti nke microservice ọ bụla nwere naanị akụkụ nke foto zuru ezu (ihe ndị igodo ha debere na otu akụkụ). Anyị ga-ekpebi nke ihe atụ nwere ọnọdụ nke ihe anyị chọrọ, ma anyị mere nke a dabere na eri metadata, dị ka egosiri n'okpuru:

Ọ bụghị naanị nhazi: Otu anyị si mee ka nchekwa data kesara site na Kafka Streams, na ihe si na ya pụta

Onyonyo 7: Iji metadata iyi, anyị na-ekpebi site na ihe atụ iji jụọ ọnọdụ ihe achọrọ; Eji usoro yiri nke a jiri GET ALL API

Nchọta Isi

Ụlọ ahịa steeti dị na Kafka Streams nwere ike ije ozi dị ka nchekwa data ekesa nke ọma,

  • na-emegharịgharị mgbe niile na Kafka
  • Enwere ike iwulite API CRUD n'elu usoro dị otú ahụ
  • Ijikwa ọtụtụ akụkụ dị ntakịrị mgbagwoju anya
  • Ọ ga-ekwe omume ịgbakwunye otu ụlọ ahịa steeti ma ọ bụ karịa na topology iyi iji chekwaa data inyeaka. Enwere ike iji nhọrọ a maka:
  • Nchekwa ogologo oge nke data achọrọ maka mgbako n'oge nhazi iyi
  • Nchekwa ogologo oge nke data nwere ike ịba uru n'oge ọzọ ewepụtara ihe atụ nkwanye
  • ọtụtụ ihe...

Uru ndị a na ndị ọzọ na-eme ka iyi Kafka dabara nke ọma maka idowe steeti ụwa na sistemụ kesara dị ka nke anyị. Kafka Streams egosila na a pụrụ ịdabere na ya na mmepụta (anyị enwebeghị ozi ọ bụla kemgbe ebuga ya), anyị nwere obi ike na ike ya agaghị akwụsị ebe ahụ!

isi: www.habr.com

Tinye a comment