Osati kokha kukonza: Momwe tidapangira database yogawa kuchokera ku Kafka Streams, ndi zomwe zidachokera

Pa Habr!

Tikukukumbutsani kuti kutsatira buku la Kafka tasindikizanso ntchito yosangalatsa yokhudzana ndi laibulale Kafka Streams API.

Osati kokha kukonza: Momwe tidapangira database yogawa kuchokera ku Kafka Streams, ndi zomwe zidachokera

Pakalipano, anthu ammudzi akungophunzira malire a chida champhamvu ichi. Chifukwa chake, nkhani idasindikizidwa posachedwa, kumasulira kwake komwe tikufuna kukudziwitsani. Kuchokera pazomwe adakumana nazo, wolembayo akufotokoza momwe angasinthire Kafka Mitsinje kukhala malo osungiramo deta. Sangalalani kuwerenga!

Apache library Kafka Mitsinje amagwiritsidwa ntchito padziko lonse m'mabizinesi kuti agawidwe mtsinje pamwamba pa Apache Kafka. Chimodzi mwazinthu zomwe sizikuyamikiridwa ndi dongosololi ndikuti limakupatsani mwayi wosunga maboma am'deralo opangidwa potengera kukonza ulusi.

M'nkhaniyi, ndikuuzani momwe kampani yathu inagwiritsira ntchito mopindulitsa mwayi umenewu popanga malonda a chitetezo cha mtambo. Pogwiritsa ntchito Mitsinje ya Kafka, tinapanga ma microservices a boma omwe amagawana nawo, omwe amakhala ngati gwero lopanda zolakwa komanso lopezeka kwambiri lachidziwitso chodalirika chokhudza momwe zinthu zilili mu dongosolo. Kwa ife, ichi ndi sitepe patsogolo pokhudzana ndi kudalirika komanso kumasuka kwa chithandizo.

Ngati mukufuna njira ina yomwe imakupatsani mwayi wogwiritsa ntchito database imodzi yapakati kuti muthandizire momwe zinthu zanu zilili, werengani, zikhala zosangalatsa ...

Chifukwa chiyani timaganiza kuti inali nthawi yoti tisinthe momwe timagwirira ntchito ndi dziko logawana

Tinkafunika kusunga zinthu zosiyanasiyana potengera malipoti a wothandizila (mwachitsanzo: kodi tsambalo likuwukiridwa)? Tisanasamukire ku Kafka Streams, nthawi zambiri tinkadalira database imodzi yapakati (+ service API) yoyang'anira boma. Njira iyi ili ndi zovuta zake: tsiku kwambiri zinthu kusunga kusasinthasintha ndi kugwirizanitsa kumakhala kovuta kwambiri. Database ikhoza kukhala yotsekereza kapena kutha mtundu chikhalidwe ndikuvutika ndi zosayembekezereka.

Osati kokha kukonza: Momwe tidapangira database yogawa kuchokera ku Kafka Streams, ndi zomwe zidachokera

Chithunzi 1: Zowoneka ngati zagawikana zomwe zidawonedwa musanayambe kusintha
Kafka ndi Kafka Streams: othandizira amalankhulana malingaliro awo kudzera pa API, dziko losinthidwa limawerengeredwa kudzera mu database yapakati.

Kumanani ndi Kafka Mitsinje, ndikupangitsa kuti zikhale zosavuta kupanga ma microservices omwe amagawana nawo

Pafupifupi chaka chapitacho, tinaganiza zoyang'ana mozama zochitika za boma zomwe tagawana nazo kuti tithetse vutoli. Nthawi yomweyo tidaganiza zoyesa Kafka Mitsinje - tikudziwa momwe ilili yowopsa, yopezeka kwambiri komanso yololera zolakwika, ndi magwiridwe antchito otani omwe ali nawo (zosinthika, kuphatikiza zomveka). Zomwe tinkafunikira, osanenapo za kukhwima komanso kudalirika kwa njira yotumizira mauthenga ku Kafka.

Iliyonse mwazinthu zodziwika bwino zomwe tidapanga zidapangidwa pamwamba pa Kafka Streams yokhala ndi topology yosavuta. Zinali ndi 1) gwero 2) purosesa yokhala ndi sitolo yamtengo wapatali yosalekeza 3) sinki:

Osati kokha kukonza: Momwe tidapangira database yogawa kuchokera ku Kafka Streams, ndi zomwe zidachokera

Chithunzi 2: Ma topology osasinthika amayendedwe athu otsatsira ma microservices apamwamba. Dziwani kuti palinso chosungira pano chomwe chili ndi metadata yokonzekera.

Munjira yatsopanoyi, othandizira amalemba mauthenga omwe amaperekedwa kumutu woyambira, ndipo ogula-titi, ntchito yodziwitsira makalata-amalandira gawo lomwe limagawidwa kudzera mu sinki (mutu wotuluka).

Osati kokha kukonza: Momwe tidapangira database yogawa kuchokera ku Kafka Streams, ndi zomwe zidachokera

Chithunzi 3: Chitsanzo chatsopano choyenda pazochitika ndi ma microservices omwe amagawana nawo: 1) wothandizira amapanga uthenga womwe umafika pamutu wa Kafka; 2) microservice yokhala ndi gawo logawana (pogwiritsa ntchito Kafka Mitsinje) imayendetsa ndikulemba gawo lowerengedwa ku mutu womaliza wa Kafka; pambuyo pake 3) ogula amavomereza dziko latsopano

Hei, sitolo yamtengo wapatali yomangidwamo ndiyothandiza kwambiri!

Monga tafotokozera pamwambapa, topology yathu yomwe timagawana nayo ili ndi sitolo yamtengo wapatali. Tinapeza njira zingapo zogwiritsira ntchito, ndipo ziwiri mwa izo zafotokozedwa pansipa.

Njira #1: Gwiritsani ntchito sitolo yamtengo wapatali powerengera

Sitolo yathu yoyamba yamtengo wapatali inali ndi data yothandizira yomwe timafunikira powerengera. Mwachitsanzo, nthawi zina dziko logawana lidatsimikiziridwa ndi mfundo ya "mavoti ambiri". Malo osungira amatha kukhala ndi malipoti aposachedwa kwambiri amtundu wa chinthu china. Kenaka, titalandira lipoti latsopano kuchokera kwa wothandizira mmodzi kapena wina, tikhoza kulisunga, kupeza malipoti kuchokera kwa othandizira ena onse okhudza mkhalidwe wa chinthu chomwecho kuchokera kusungirako, ndikubwereza kuwerengera.
Chithunzi 4 pansipa chikuwonetsa momwe tidawulula makiyi / sitolo yamtengo wapatali ku njira yopangira purosesa kuti uthenga watsopano ukwaniritsidwe.

Osati kokha kukonza: Momwe tidapangira database yogawa kuchokera ku Kafka Streams, ndi zomwe zidachokera

Chithunzi cha 4: Timatsegula mwayi wopita ku sitolo yamtengo wapatali ya njira yopangira purosesa (pambuyo pa izi, zolemba zonse zomwe zimagwira ntchito ndi dziko logawana ziyenera kugwiritsa ntchito njirayo. doProcess)

Njira #2: Kupanga CRUD API pamwamba pa Kafka Mitsinje

Titakhazikitsa ntchito yathu yoyambira, tidayamba kuyesa kulemba RESTful CRUD API ya ma microservices athu omwe timagawana nawo. Tinkafuna kuti tithe kupezanso zinthu zina kapena zonse, komanso kukhazikitsa kapena kuchotsa chinthu (chothandiza pakuthandizira kumbuyo).

Kuti tithandizire ma Get State APIs, nthawi iliyonse tikafuna kuwerengeranso boma panthawi yokonza, tidazisunga mu sitolo yosungiramo zinthu zakale kwa nthawi yayitali. Pachifukwa ichi, zimakhala zosavuta kukhazikitsa API yotere pogwiritsa ntchito chitsanzo chimodzi cha Kafka Streams, monga momwe tawonetsera m'munsimu:

Osati kokha kukonza: Momwe tidapangira database yogawa kuchokera ku Kafka Streams, ndi zomwe zidachokera

Chithunzi 5: Kugwiritsa ntchito sitolo yamtengo wapatali yomangidwa kuti mupeze momwe zinthu ziliri.

Kusintha mkhalidwe wa chinthu kudzera pa API ndikosavuta kukhazikitsa. Kwenikweni, zomwe muyenera kuchita ndikupanga wopanga Kafka ndikuzigwiritsa ntchito kuti mupange mbiri yomwe ili ndi dziko latsopano. Izi zimawonetsetsa kuti mauthenga onse opangidwa kudzera mu API adzasinthidwa mofanana ndi omwe alandilidwa kuchokera kwa opanga ena (mwachitsanzo othandizira).

Osati kokha kukonza: Momwe tidapangira database yogawa kuchokera ku Kafka Streams, ndi zomwe zidachokera

Chithunzi 6: Mutha kukhazikitsa chikhalidwe cha chinthu pogwiritsa ntchito wopanga Kafka

Vuto laling'ono: Kafka ili ndi magawo ambiri

Kenako, tinkafuna kugawira katunduyo ndikuwongolera kupezeka popereka gulu la ma microservices omwe amagawana nawo pazochitika zilizonse. Kukhazikitsa kunali kamphepo: titakonza zochitika zonse kuti ziziyenda pansi pa ID yofananira (ndi ma seva a bootstrap omwewo), pafupifupi china chilichonse chidachitika zokha. Tidafotokozanso kuti mutu uliwonse woyambira uzikhala ndi magawo angapo, kuti chochitika chilichonse chipatsidwe kagawo kakang'ono ka magawo oterowo.

Nditchulanso kuti ndizozoloŵera kupanga zosunga zobwezeretsera za sitolo ya boma kotero kuti, mwachitsanzo, ngati mutachira pambuyo polephera, tumizani bukuli ku chochitika china. Pa sitolo iliyonse ya boma ku Kafka Mitsinje, mutu wobwerezedwa umapangidwa ndi chipika chosinthira (chomwe chimatsata zosintha zakomweko). Chifukwa chake, Kafka nthawi zonse imathandizira sitolo ya boma. Chifukwa chake, pakalephera chimodzi kapena china cha Kafka Mitsinje, sitolo ya boma ikhoza kubwezeretsedwanso nthawi ina, komwe magawo ofananira adzapita. Mayesero athu asonyeza kuti izi zimachitika mumasekondi pang'ono, ngakhale pali mamiliyoni a zolemba m'sitolo.

Kuchoka ku microservice imodzi yokhala ndi dziko logawana nawo kupita kumagulu a ma microservices, zimakhala zocheperako kukhazikitsa Get State API. M'mikhalidwe yatsopano, malo ogulitsira a microservice iliyonse ali ndi gawo lokha la chithunzi chonse (zinthu zomwe makiyi awo adajambulidwa kugawo linalake). Tidayenera kudziwa kuti ndi chitsanzo chiti chomwe chili ndi zomwe tikufuna, ndipo tidachita izi potengera ulusi wa metadata, monga momwe zilili pansipa:

Osati kokha kukonza: Momwe tidapangira database yogawa kuchokera ku Kafka Streams, ndi zomwe zidachokera

Chithunzi 7: Pogwiritsa ntchito metadata yamtsinje, timasankha kuchokera pamtundu wotani kuti tifunse za chinthu chomwe tikufuna; njira yofananira idagwiritsidwa ntchito ndi GET ALL API

Zotsatira Zofunikira

Malo ogulitsa boma ku Kafka Streams amatha kukhala ngati nkhokwe yogawa,

  • kubwerezedwa nthawi zonse ku Kafka
  • CRUD API ikhoza kumangidwa mosavuta pamwamba pa dongosolo loterolo
  • Kugwira magawo angapo ndizovuta kwambiri
  • N'zothekanso kuwonjezera malo ogulitsa boma limodzi kapena angapo ku topology yotsatsira kuti musunge deta yothandiza. Izi zitha kugwiritsidwa ntchito pa:
  • Kusungirako kwa nthawi yayitali kwa deta yofunikira powerengera panthawi yokonza mtsinje
  • Kusungidwa kwanthawi yayitali komwe kungakhale kothandiza nthawi ina ikadzaperekedwa
  • zambiri...

Izi ndi zabwino zina zimapangitsa Kafka Mitsinje kukhala yoyenera kusunga dziko lonse mu dongosolo logawidwa ngati lathu. Kafka Mitsinje yatsimikizira kuti ndi yodalirika kwambiri pakupanga (sitinatayikepo uthenga kuyambira pomwe tidayitumiza), ndipo tili ndi chidaliro kuti kuthekera kwake sikutha pamenepo!

Source: www.habr.com

Kuwonjezera ndemanga