Hhayi ukucubungula kuphela: Senze kanjani isizindalwazi esabalaliswa kusuka ku-Kafka Streams, nokuthi yini eyavela kuyo

Sawubona Habr!

Sikukhumbuza ukuthi ukulandela incwadi mayelana KAFKA sishicilele umsebenzi othokozisayo ngokufanayo ngomtapo wolwazi I-Kafka Streams API.

Hhayi ukucubungula kuphela: Senze kanjani isizindalwazi esabalaliswa kusuka ku-Kafka Streams, nokuthi yini eyavela kuyo

Okwamanje, umphakathi ufunda nje imikhawulo yaleli thuluzi elinamandla. Ngakho-ke, indatshana isanda kushicilelwa, ukuhunyushwa kwakho esingathanda ukukwazisa kukho. Kusuka kokuhlangenwe nakho kwakhe, umbhali utshela indlela yokuguqula i-Kafka Streams ibe isitoreji sedatha esabalalisiwe. Kujabulele ukufunda!

Umtapo wezincwadi we-Apache Kafka Ukusakaza isetshenziswa emhlabeni wonke emabhizinisini ukuze kusatshalaliswe ukusakazwa kokusakaza phezu kwe-Apache Kafka. Esinye sezici ezingabongwa kancane zalolu hlaka ukuthi likuvumela ukuthi ugcine izwe lasendaweni elikhiqizwe ngokusekelwe ekucutshungulweni kwentambo.

Kulesi sihloko, ngizokutshela ukuthi inkampani yethu ikwazi kanjani ukusebenzisa leli thuba ngokunenzuzo lapho ithuthukisa umkhiqizo wokuphepha kwesicelo samafu. Sisebenzisa i-Kafka Streams, sidale ama-microservices wesifundazwe okwabelwana ngawo, ngayinye esebenza njengomthombo obekezelela amaphutha notholakala kakhulu wolwazi oluthembekile mayelana nesimo sezinto ohlelweni. Kithina, lesi yisinyathelo esibheke phambili kokubili mayelana nokwethembeka kanye nokusekela kalula.

Uma unentshisekelo kwenye indlela evumela ukuthi usebenzise isizindalwazi esisodwa esimaphakathi ukusekela isimo esisemthethweni sezinto zakho, yifunde, izothakazelisa...

Kungani sicabange ukuthi sekuyisikhathi sokushintsha indlela esisebenza ngayo nesimo esabiwe

Besidinga ukugcina isimo sezinto ezihlukahlukene ngokusekelwe emibikweni yomenzeli (isibonelo: ingabe isayithi belihlaselwa)? Ngaphambi kokuthuthela e-Kafka Streams, sasivame ukuthembela kusizindalwazi esisodwa esimaphakathi (+ service API) ukuze siphathwe yizwe. Le ndlela inezinkinga zayo: usuku izimo ezinzima ukugcina ukuvumelana nokuvumelanisa kuba inselele yangempela. Isizindalwazi singase sibe ibhodlela noma sigcine singenile isimo somjaho futhi uhlushwa ukungaqiniseki.

Hhayi ukucubungula kuphela: Senze kanjani isizindalwazi esabalaliswa kusuka ku-Kafka Streams, nokuthi yini eyavela kuyo

Umfanekiso 1: Isimo esijwayelekile sokuhlukaniswa esibonwa ngaphambi kokudlulela
I-Kafka ne-Kafka Streams: ama-ejenti adlulisela imibono yawo nge-API, isimo esibuyekeziwe sibalwa ngesizindalwazi esimaphakathi

Hlangana ne-Kafka Streams, okwenza kube lula ukudala ama-microservices wesifunda okwabelwana ngawo

Esikhathini esingangonyaka esidlule, sanquma ukubheka kanzulu izimo zethu zombuso esabelana ngazo ukuze sibhekane nalezi zinkinga. Ngokushesha sinqume ukuzama i-Kafka Streams - siyazi ukuthi iyingozi kangakanani, itholakala kakhulu futhi iwabekezelela amaphutha, inamuphi umsebenzi wokusakaza-bukhoma ocebile (ukuguqulwa, okuhlanganisa okunesimo sezulu). Besikudinga nje, ingasaphathwa eyokuvuthwa nokwethenjelwa kwesistimu yemiyalezo e-Kafka.

Isevisi ngayinye esezingeni eliphezulu esiyidalile yakhiwe phezu kwesenzakalo se-Kafka Streams nge-topology elula. Iqukethe 1) umthombo 2) iphrosesa enesitolo senani lokhiye eziphikelelayo 3) usinki:

Hhayi ukucubungula kuphela: Senze kanjani isizindalwazi esabalaliswa kusuka ku-Kafka Streams, nokuthi yini eyavela kuyo

Umfanekiso 2: I-topology ezenzakalelayo yezimo zethu zokusakaza-bukhoma zama-microservices asezingeni eliphezulu. Qaphela ukuthi kukhona nendawo yokugcina lapha equkethe imethadatha yokuhlela.

Kule ndlela entsha, ama-agent abhala imilayezo efakwe esihlokweni esiwumthombo, futhi abathengi—athi, isevisi yesaziso semeyili—bathola isimo esabiwe ngekhompyutha ngosinki (isihloko esiphumayo).

Hhayi ukucubungula kuphela: Senze kanjani isizindalwazi esabalaliswa kusuka ku-Kafka Streams, nokuthi yini eyavela kuyo

Umfanekiso 3: Isibonelo esisha sokugeleza komsebenzi wesimo esinama-microservices okwabelwana ngawo: 1) umenzeli ukhiqiza umlayezo ofika esihlokweni somthombo we-Kafka; 2) isevisi encane enesimo okwabelwana ngaso (isebenzisa i-Kafka Streams) iyayicubungula futhi ibhale isimo esibaliwe esihlokweni sokugcina se-Kafka; ngemva kwalokho 3) abathengi bamukela isimo esisha

Sawubona, lesi sitolo senani likakhiye esakhelwe ngaphakathi siwusizo kakhulu!

Njengoba kushiwo ngenhla, i-topology yethu yezwe eyabiwe iqukethe isitolo senani elingukhiye. Sithole izinketho ezimbalwa zokuyisebenzisa, futhi ezimbili zazo zichazwe ngezansi.

Inketho #1: Sebenzisa isitolo senani elingukhiye ukuze ubale

Isitolo sethu sokuqala senani elingukhiye besiqukethe idatha eyisizayo ebesiyidinga ukuze sibale. Isibonelo, kwezinye izimo isimo sokuhlanganyela sanqunywa isimiso "samavoti amaningi". Indawo yokugcina ingabamba yonke imibiko yakamuva ye-ejenti ngesimo sento ethile. Bese, lapho sithola umbiko omusha ovela ku-ejenti eyodwa noma kwenye, singawulondoloza, sithole imibiko evela kubo bonke abanye abenzeli mayelana nesimo sento efanayo endaweni yokugcina, bese siphinda isibalo.
Umfanekiso 4 ngezansi ubonisa ukuthi siwuveze kanjani ukhiye/isitolo senani endleleni yokucubungula yephrosesa ukuze umlayezo omusha bese ucutshungulwa.

Hhayi ukucubungula kuphela: Senze kanjani isizindalwazi esabalaliswa kusuka ku-Kafka Streams, nokuthi yini eyavela kuyo

Umfanekiso 4: Sivula ukufinyelela esitolo senani elingukhiye lendlela yokucubungula yephrosesa (ngemuva kwalokhu, yonke imibhalo esebenza nezwe okwabiwe kufanele isebenzise indlela doProcess)

Inketho #2: Ukudala i-CRUD API phezu kwe-Kafka Streams

Ngemva kokusungula ukugeleza komsebenzi wethu oyisisekelo, saqala ukuzama ukubhala i-RESTful CRUD API yama-microservices ethu esabelana ngawo wombuso. Besifuna ukwazi ukubuyisa isimo sezinye noma zonke izinto, kanye nokusetha noma ukususa isimo sento (iwusizo ekusekeleni okungemuva).

Ukuze sisekele wonke ama-Get State APIs, noma nini lapho sidinga ukubala kabusha isimo phakathi nokucubungula, sasigcina esitolo senani lokhiye esakhelwe ngaphakathi isikhathi eside. Kulokhu, kuba lula kakhulu ukusebenzisa i-API enjalo usebenzisa isibonelo esisodwa se-Kafka Streams, njengoba kukhonjisiwe ohlwini olungezansi:

Hhayi ukucubungula kuphela: Senze kanjani isizindalwazi esabalaliswa kusuka ku-Kafka Streams, nokuthi yini eyavela kuyo

Umfanekiso 5: Ukusebenzisa isitolo senani elingukhiye esakhelwe ngaphakathi ukuze kutholwe isimo sokubalwa kwangaphambili sento

Ukubuyekeza isimo sento nge-API nakho kulula ukukusebenzisa. Ngokuyisisekelo, okudingeka ukwenze ukudala umkhiqizi we-Kafka futhi uyisebenzise ukwenza irekhodi eliqukethe isimo esisha. Lokhu kuqinisekisa ukuthi yonke imilayezo ekhiqizwa nge-API izocutshungulwa ngendlela efanayo naleyo etholwe kwabanye abakhiqizi (isb. ama-agent).

Hhayi ukucubungula kuphela: Senze kanjani isizindalwazi esabalaliswa kusuka ku-Kafka Streams, nokuthi yini eyavela kuyo

Umfanekiso 6: Ungasetha isimo sento usebenzisa umkhiqizi we-Kafka

Inkinga encane: I-Kafka inezingxenye eziningi

Okulandelayo, besifuna ukusabalalisa umthwalo wokucubungula futhi sithuthukise ukutholakala ngokuhlinzeka ngeqoqo lama-microservices esifunda esabiwe ngesimo ngasinye. Ukusetha bekuheleza: uma sesilungise zonke izimo ukuthi zisebenze ngaphansi kwe-ID yohlelo lokusebenza efanayo (kanye namaseva afanayo e-bootstrap), cishe yonke enye into yenziwa ngokuzenzakalelayo. Siphinde sacacisa ukuthi isihloko ngasinye somthombo sizoqukatha izingxenye ezimbalwa, ukuze isibonelo ngasinye sinikezwe isethi engaphansi yalezo zingxenye.

Ngizophinde ngikhulume ukuthi kuwumkhuba ovamile ukwenza ikhophi eyisipele yesitolo sikahulumeni ukuze, isibonelo, uma kwenzeka ukululama ngemva kokwehluleka, ukudlulisela le khophi kwesinye isenzakalo. Esitolo sombuso ngasinye e-Kafka Streams, isihloko esiyimpinda siyadalwa ngelogi yoshintsho (elandelela izibuyekezo zendawo). Ngakho, i-Kafka ihlale isekela isitolo sikahulumeni. Ngakho-ke, uma kwenzeka ukwehluleka kwesibonelo esisodwa noma esinye se-Kafka Streams, isitolo sikahulumeni singabuyiselwa ngokushesha kwesinye isenzakalo, lapho ukuhlukaniswa okuhambisanayo kuzohamba khona. Ukuhlolwa kwethu kukhombisile ukuthi lokhu kwenziwa ngemizuzwana, noma ngabe kunezigidi zamarekhodi esitolo.

Ukusuka ku-microservice eyodwa enesimo esabiwe uye kwiqoqo lama-microservices, kuba yinto encane kakhulu ukusebenzisa i-Get State API. Esimeni esisha, isitolo sikahulumeni se-microservice ngayinye siqukethe kuphela ingxenye yesithombe sisonke (lezo zinto okhiye bazo bafakwe kumephu ekwahlukaniseni okuthile). Bekufanele sinqume ukuthi yisiphi isenzakalo esiqukethe isimo sento esiyidingayo, futhi sikwenze lokhu ngokusekelwe kumethadatha yochungechunge, njengoba kuboniswe ngezansi:

Hhayi ukucubungula kuphela: Senze kanjani isizindalwazi esabalaliswa kusuka ku-Kafka Streams, nokuthi yini eyavela kuyo

Umfanekiso 7: Sisebenzisa imethadatha yokusakaza, sinquma ukuthi kusiphi isenzakalo esingabuza ngaso isimo sento esiyifunayo; indlela efanayo isetshenziswe nge-GET ALL API

Ukutholwa Okusemqoka

Izitolo zombuso e-Kafka Streams zingasebenza njengendawo egciniwe esabalalisiwe,

  • iphindaphindwa njalo e-Kafka
  • I-CRUD API ingakhiwa kalula phezu kwalolu hlelo
  • Ukuphatha ama-partitions amaningi kuyinkimbinkimbi kancane
  • Kungenzeka futhi ukwengeza isitolo sombuso esisodwa noma ngaphezulu ku-topology yokusakaza ukuze ugcine idatha eyisizayo. Le nketho ingasetshenziselwa:
  • Isitoreji sesikhathi eside sedatha esidingekayo ekubalweni phakathi nokucubungula ukusakaza
  • Ukugcinwa kwesikhathi eside kwedatha okungase kube usizo ngesikhathi esilandelayo lapho kunikezwa isenzakalo sokusakaza-bukhoma
  • okuningi...

Lezi nezinye izinzuzo zenza i-Kafka Streams ifanelekele kahle ukugcina isimo somhlaba wonke kusistimu esabalalisiwe njengeyethu. I-Kafka Streams ifakazele ukuthi ithembekile kakhulu ekukhiqizweni (asikaze silahlekelwe yimilayezo kusukela sayithumela), futhi siyaqiniseka ukuthi amandla ayo ngeke aphelele lapho!

Source: www.habr.com

Engeza amazwana