Ayipheleli ekuqhubeni: Indlela esenza ngayo isiseko sedatha esasasazwa kwi-Kafka Streams, kwaye yintoni eyaphuma kuyo

Hayi Habr!

Siyakukhumbuza ukuba ulandela incwadi malunga Kafka sipapashe umsebenzi onomdla ngokulinganayo malunga nethala leencwadi Kafka Streams API.

Ayipheleli ekuqhubeni: Indlela esenza ngayo isiseko sedatha esasasazwa kwi-Kafka Streams, kwaye yintoni eyaphuma kuyo

Okwangoku, uluntu lufunda nje imida yesi sixhobo sinamandla. Ke, inqaku lisanda kupapashwa, uguqulo esingathanda ukukwazisa ngalo. Ukususela kumava akhe, umbhali uxelela indlela yokuguqula i-Kafka Streams ibe yindawo yokugcina idatha. Konwabele ukufunda!

Ithala leencwadi leApache Kafka imijelo isetyenziswa kwihlabathi liphela kumashishini okusasaza ukuhanjiswa komsinga ngaphezulu kwe-Apache Kafka. Omnye wemiba engaxatyiswanga kakhulu yesi sikhokelo kukuba ikuvumela ukuba ugcine ilizwe lendawo eliveliswe ngokusekwe ekusetyenzweni kwemisonto.

Kweli nqaku, ndiza kukuxelela indlela inkampani yethu ekwazi ngayo ukusebenzisa eli thuba ngokunenzuzo xa isenza imveliso yokhuseleko lwesicelo selifu. Ukusebenzisa i-Kafka Streams, senze ii-microservices zombuso ekwabelwana ngazo, nganye esebenza njengomthombo onyamezelayo kunye nomthombo okhoyo wolwazi oluthembekileyo malunga nobume bezinto kwinkqubo. Kithina, eli linyathelo eliya phambili kokubili ngokwemigaqo yokuthembeka kunye nokulula kwenkxaso.

Ukuba unomdla kwenye indlela ekuvumela ukuba usebenzise isiseko sedatha esisodwa ukuxhasa imeko esemthethweni yezinto zakho, yifunde, iya kuba nomdla...

Kutheni sicinga ukuba lixesha lokutshintsha indlela esisebenza ngayo kunye nelizwe ekwabelwana ngalo

Sasidinga ukugcina imeko yezinto ezahlukeneyo ngokusekelwe kwiingxelo ze-arhente (umzekelo: ngaba indawo yayihlaselwa)? Ngaphambi kokuba sifudukele kwi-Kafka Streams, sasihlala sixhomekeke kwisiseko sedatha enye (+ inkonzo ye-API) yolawulo lukarhulumente. Le ndlela ineengxaki zayo: umhla iimeko ezinzima ukugcina ukungaguquguquki kunye nongqamaniso kuba ngumngeni wokwenene. Uvimba weenkcukacha unokuba ngumqobo okanye uphelele apho imeko yogqatso kwaye ukhathazwa kukungaqiniseki.

Ayipheleli ekuqhubeni: Indlela esenza ngayo isiseko sedatha esasasazwa kwi-Kafka Streams, kwaye yintoni eyaphuma kuyo

Umzobo 1: Imeko eqhelekileyo yokwahlula-hlula ebonwa phambi kotshintsho ukuya
I-Kafka kunye ne-Kafka Streams: ii-arhente zinxibelelana ngezimvo zazo nge-API, imeko ehlaziyiweyo ibalwa ngesiseko sedatha esembindini.

Dibana neKafka Streams, isenza kube lula ukwenza ii-microservices zelizwe ekwabelwana ngazo

Malunga nonyaka odlulileyo, siye sagqiba ekubeni sijonge nzulu iimeko zethu zombuso ekwabelwana ngazo ukulungisa le miba. Ngokukhawuleza sagqiba ekubeni sizame i-Kafka Streams - siyayazi indlela enobungozi ngayo, efumaneka kakhulu kwaye inokunyamezela iimpazamo, yintoni umsebenzi wokusasaza otyebileyo onayo (uguquko, kuquka nelizwe). Kanye into ebesiyidinga, singasathethi ke ukuba inkqubo yokuthumela imiyalezo ikhulile kwaye inokuthenjwa kangakanani eKafka.

Nganye yee-microservices ezibambekayo esizenzileyo zakhiwe phezu komzekelo we-Kafka Streams nge-topology elula. Yayiqulathe 1) umthombo 2) iprosesa enesitshixo sexabiso levenkile 3) isinki:

Ayipheleli ekuqhubeni: Indlela esenza ngayo isiseko sedatha esasasazwa kwi-Kafka Streams, kwaye yintoni eyaphuma kuyo

Umzobo 2: I-topology engagqibekanga yeemeko zethu zokusasaza kwii-microservices. Qaphela ukuba kukho kwakhona indawo yokugcina apha equlethe imetadata yokucwangcisa.

Kule ndlela entsha, ii-arhente ziqulunqa imiyalezo eyondliwa kwisihloko somthombo, kwaye abathengi-bathi, inkonzo yesaziso se-imeyile-bafumana i-computed state ekwabelwana ngayo nge-sink (isihloko semveliso).

Ayipheleli ekuqhubeni: Indlela esenza ngayo isiseko sedatha esasasazwa kwi-Kafka Streams, kwaye yintoni eyaphuma kuyo

Umzobo 3: Umzekelo omtsha wokuhamba komsebenzi wemeko kunye ne-microservices ekwabelwana ngayo: 1) i-arhente ivelisa umyalezo ofika kwisihloko somthombo weKafka; I-2) i-microservice ene-state ekwabelwana ngayo (usebenzisa i-Kafka Streams) iqhube kwaye ibhale imeko ebaliweyo ukuya kwisihloko sokugqibela se-Kafka; emva koko 3) abathengi bamkele imeko entsha

Heyi, le venkile eyakhelwe-ngaphakathi-yexabiso iluncedo kakhulu!

Njengoko kukhankanyiwe ngasentla, i-topology yethu ekwabelwana ngayo iqulethe ivenkile yexabiso eliphambili. Sifumene iindlela ezininzi zokuyisebenzisa, kwaye ezimbini kuzo zichazwe ngezantsi.

Ukhetho #1: Sebenzisa isitshixo sexabiso levenkile ekubaleni

Ivenkile yethu yokuqala ye-key-value iqulethe idatha encedisayo ebesiyidinga ekubaleni. Ngokomzekelo, kwezinye iimeko urhulumente ekwabelwana ngawo unqunywe ngumgaqo "weevoti ezininzi". Indawo yokugcina inokubamba zonke iingxelo zamva nje zearhente malunga nobume bento ethile. Emva koko, xa sifumene ingxelo entsha kwi-arhente enye okanye enye, sinokuyigcina, sifumane iingxelo ezivela kuzo zonke ezinye ii-agent malunga nesimo sento efanayo ukusuka kwisitoreji, kwaye siphinda ukubala.
Umzobo 4 ongezantsi ubonisa indlela esiveze ngayo isitshixo/ivenkile yexabiso kwindlela yokuqhuba yeprosesa ukuze umyalezo omtsha ube nokusingathwa.

Ayipheleli ekuqhubeni: Indlela esenza ngayo isiseko sedatha esasasazwa kwi-Kafka Streams, kwaye yintoni eyaphuma kuyo

Umzekeliso 4: Sivula ukufikelela kwi-key-value store yendlela yokuqhuba iprosesa (emva koku, sonke iskripthi esisebenza kunye nelizwe ekwabelwana ngalo kufuneka siphumeze indlela. doProcess)

Ukhetho #2: Ukudala i-CRUD API phezu kweKafka Streams

Emva kokumisela ukuhamba komsebenzi wethu osisiseko, saqala ukuzama ukubhala i-RESTful CRUD API yee-microservices zethu zombuso ekwabelwana ngazo. Besifuna ukukwazi ukubuyisa imeko yezinye okanye zonke izinto, kunye nokuseta okanye ukususa imeko yento (iluncedo kwinkxaso ye-backend).

Ukuxhasa zonke i-Get State APIs, nanini na xa sifuna ukubala kwakhona urhulumente ngexesha lokucutshungulwa, sasiyigcina kwi-key-value store eyakhelweyo ixesha elide. Kule meko, kuba lula ukuphumeza i-API usebenzisa umzekelo omnye we-Kafka Streams, njengoko kubonisiwe kuluhlu olungezantsi:

Ayipheleli ekuqhubeni: Indlela esenza ngayo isiseko sedatha esasasazwa kwi-Kafka Streams, kwaye yintoni eyaphuma kuyo

Umzobo 5: Ukusebenzisa isitshixo sexabiso esakhelwe-ngaphakathi ukufumana imeko eqingqwe kwangaphambili yento.

Ukuhlaziya imeko yento nge-API kulula ukuyiphumeza. Ngokusisiseko, konke okufuneka ukwenze kukudala umvelisi weKafka kwaye uyisebenzise ukwenza irekhodi eliqulethe ilizwe elitsha. Oku kuqinisekisa ukuba yonke imiyalezo eveliswa nge-API iya kuqhutywa ngendlela efanayo naleyo ifunyenwe kwabanye abavelisi (umz. ii-arhente).

Ayipheleli ekuqhubeni: Indlela esenza ngayo isiseko sedatha esasasazwa kwi-Kafka Streams, kwaye yintoni eyaphuma kuyo

Umzobo 6: Unokuseta imeko yento usebenzisa umvelisi weKafka

Ingxaki encinci: I-Kafka inezahlulo ezininzi

Okulandelayo, sifuna ukusasaza umthwalo wokucubungula kunye nokuphucula ukufumaneka ngokubonelela ngeqela le-microservices ekwabelwana ngayo kwimeko nganye. Ukuseta ibiyimpepho: sakuba siqwalasele zonke iimeko ukuba zisebenze phantsi kwe-ID yesicelo esifanayo (kunye neeseva ze-bootstrap ezifanayo), phantse yonke enye into yenziwa ngokuzenzekelayo. Sikwachazile ukuba isihloko ngasinye somthombo siya kuba nezahlulo ezininzi, ukuze umzekelo ngamnye ube nokwabelwa iseti esezantsi yezahlulo ezinjalo.

Ndiza kuphinda ndikhankanye ukuba yinto eqhelekileyo yokwenza ikopi yokugcina i-backup ye-state store ukwenzela ukuba, umzekelo, kwimeko yokubuyisela emva kokungaphumeleli, ukudlulisa le kopi komnye umzekelo. Kwivenkile yelizwe ngalinye kwi-Kafka Streams, isihloko esiphindiweyo senziwe ngelogi yotshintsho (elandelela ukuhlaziywa kwendawo). Ke, iKafka ihlala ixhasa ivenkile yaseburhulumenteni. Ngoko ke, xa kwenzeka ukungaphumeleli komnye okanye omnye umzekelo weKafka Streams, ivenkile yelizwe inokubuyiselwa ngokukhawuleza komnye umzekelo, apho izahlulo ezihambelanayo ziya kuhamba khona. Iimvavanyo zethu zibonise ukuba oku kwenziwa kwimiba yemizuzwana, nokuba kukho izigidi zeerekhodi kwivenkile.

Ukuhamba ukusuka kwi-microservice enye kunye nelizwe ekwabelwana ngalo ukuya kwiqela le-microservices, iba yinto encinci ukuphumeza i-Get State API. Kwimeko entsha, i-state store ye-microservice nganye iqulethe kuphela inxalenye yomfanekiso opheleleyo (ezo zinto zinezitshixo ezifakwe kwimephu kwisahlulo esithile). Kwafuneka sigqibe ukuba ngowuphi umzekelo oqulethe imeko yento esiyifunayo, kwaye senze oku ngokusekwe kwimetadata yomsonto, njengoko kubonisiwe ngezantsi:

Ayipheleli ekuqhubeni: Indlela esenza ngayo isiseko sedatha esasasazwa kwi-Kafka Streams, kwaye yintoni eyaphuma kuyo

Umzobo 7: Ukusebenzisa i-metadata yomsinga, sinquma ukusuka kuwuphi umzekelo ukubuza ubume bento efunwayo; kwasetyenziswa indlela efanayo nge-GET ALL API

Iziphumo eziphambili

Iivenkile zikaRhulumente eKafka Streams zinokusebenza njengesiseko sedatha esabiweyo,

  • iphindaphindwa rhoqo eKafka
  • I-CRUD API inokwakhiwa ngokulula phezu kwenkqubo enjalo
  • Ukuphatha izahlulo ezininzi kunzima ngakumbi
  • Kuyenzeka kwakhona ukongeza ivenkile yelizwe enye okanye ngaphezulu kwi-topology yokusasaza ukugcina idatha encedisayo. Olu khetho lunokusetyenziselwa:
  • Ukugcinwa kwexesha elide ledatha efunekayo ekubaleni ngexesha lokucubungula umjelo
  • Ukugcinwa kwexesha elide ledatha enokuba luncedo kwixesha elizayo xa kubonelelwa umzekelo wokusasaza
  • Okuninzi...

Ezi kunye nezinye iingenelo zenza i-Kafka Streams ifaneleke kakuhle ukugcina imeko yehlabathi kwinkqubo esasazwayo njengeyethu. I-Kafka Streams ibonakalise ukuba inokuthenjwa kakhulu kwimveliso (asikhange silahlekelwe ngumyalezo ukusukela oko siwuthumele), kwaye siqinisekile ukuba amandla ayo angeke aphelele apho!

umthombo: www.habr.com

Yongeza izimvo