Hayi Habr!
Siyakukhumbuza ukuba ulandela incwadi malunga
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
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:
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:
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).
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.
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:
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).
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:
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