Tsy vitan'ny fanodinana: Ahoana no nanaovanay angon-drakitra nozaraina avy amin'ny Kafka Streams, ary inona no nivoahan'izany

Hey Habr!

Mampahatsiahy anao izahay fa manaraka ny boky momba ny Kafka namoaka asa mahaliana mitovy amin'izany momba ny tranomboky izahay Kafka Streams API.

Tsy vitan'ny fanodinana: Ahoana no nanaovanay angon-drakitra nozaraina avy amin'ny Kafka Streams, ary inona no nivoahan'izany

Amin'izao fotoana izao dia mianatra ny fetran'ity fitaovana mahery vaika ity ny fiarahamonina. Noho izany, nisy lahatsoratra nivoaka vao haingana, ny dikanteny izay tiantsika hampahafantatra anao. Avy amin'ny traikefany manokana, ny mpanoratra dia milaza ny fomba hamadihana ny Kafka Streams ho fitahirizana angon-drakitra zaraina. Ankafizo ny mamaky!

Tranomboky Apache Kafka Streams ampiasaina eran'izao tontolo izao amin'ny orinasa amin'ny fanodinana stream mizara an-tampon'ny Apache Kafka. Ny iray amin'ireo lafin-javatra tsy dia ankasitrahana amin'ity rafitra ity dia ny ahafahanao mitahiry fanjakana eo an-toerana novokarina mifototra amin'ny fanodinana kofehy.

Ato amin'ity lahatsoratra ity dia holazaiko aminao ny fomba nahafahan'ny orinasanay nampiasa io fahafahana io tamin'ny famolavolana vokatra ho an'ny fiarovana fampiharana rahona. Amin'ny fampiasana ny Kafka Streams, namorona serivisy micro-panjakana nozaraina izahay, izay ny tsirairay amin'izy ireo dia loharanon'ny fampahalalam-baovao azo antoka sy azo antoka momba ny toetry ny zavatra ao amin'ny rafitra. Aminay dia dingana mandroso izany na eo amin'ny lafin'ny fahatokisana na ny fanamorana ny fanohanana.

Raha toa ianao ka liana amin'ny fomba hafa izay ahafahanao mampiasa angon-drakitra afovoany tokana hanohanana ny fomba ofisialy ny zavatrao, vakio izany, dia ho mahaliana ...

Nahoana no nihevitra izahay fa tonga ny fotoana hanovana ny fomba fiasa amin'ny fanjakana iombonana

Nila nitazona ny toetry ny zavatra isan-karazany izahay mifototra amin'ny tatitry ny masoivoho (ohatra: voatafika ve ilay tranokala)? Talohan'ny nifindrany tany amin'ny Kafka Streams, matetika izahay no niantehitra tamin'ny angon-drakitra foibe iray (+ serivisy API) ho an'ny fitantanana fanjakana. Ity fomba ity dia manana ny tsy fahampiana: toe-javatra sarotra daty Ny fitazonana ny firindrana sy ny fampifanarahana dia lasa tena fanamby. Ny angon-drakitra dia mety ho lasa bottleneck na hiafara amin'ny toetry ny hazakazaka ary mijaly noho ny tsy ampoizina.

Tsy vitan'ny fanodinana: Ahoana no nanaovanay angon-drakitra nozaraina avy amin'ny Kafka Streams, ary inona no nivoahan'izany

Sary 1: Trangam-pizarazarana mahazatra hita talohan'ny tetezamita mankany
Kafka sy Kafka Streams: mampita ny heviny amin'ny alàlan'ny API ny mpiasa, kajy amin'ny alàlan'ny angon-drakitra afovoany ny fanjakana vaovao

Hihaona amin'ny Kafka Streams, manamora ny famoronana microservices ifampizarana

Herintaona teo ho eo izay, nanapa-kevitra izahay fa hijery akaiky ny toe-draharaham-panjakana nizaranay mba hamahana ireo olana ireo. Nanapa-kevitra avy hatrany izahay fa hanandrana ny Kafka Streams - fantatray ny maha-scalable, azo alaina ary mahazaka lesoka, ny fampandehanana streaming manankarena ananany (fanovàna, anisan'izany ny fanjakana). Izay nilainay ihany, tsy lazaina intsony hoe matotra sy azo ianteherana ny rafitra fandefasana hafatra ao Kafka.

Ny tsirairay amin'ireo microservices manan-kery noforoninay dia natsangana teo an-tampon'ny ohatra Kafka Streams miaraka amin'ny topologie tsotra. Izy io dia ahitana 1) loharano 2) processeur miaraka amin'ny toeram-pivarotana manan-danja maharitra 3) sodina:

Tsy vitan'ny fanodinana: Ahoana no nanaovanay angon-drakitra nozaraina avy amin'ny Kafka Streams, ary inona no nivoahan'izany

Figure 2: Ny topologie default amin'ny fotoana fandefasana anay ho an'ny microservices. Mariho fa misy ihany koa ny tahiry eto izay misy metadata momba ny drafitra.

Amin'ity fomba fiasa vaovao ity, ny mpiasa dia mamorona hafatra izay ampidirina amin'ny lohahevitra loharano, ary ny mpanjifa-milaza, serivisy fampandrenesana mailaka-dia mahazo ny fanjakana ifampizarana kajikajy amin'ny alàlan'ny fantsona (loham-pamokarana).

Tsy vitan'ny fanodinana: Ahoana no nanaovanay angon-drakitra nozaraina avy amin'ny Kafka Streams, ary inona no nivoahan'izany

Sary 3: Ohatra vaovao ny fizotran'ny asa ho an'ny scenario miaraka amin'ny microservices zaraina: 1) ny mpandraharaha dia mamoaka hafatra tonga amin'ny lohahevitra loharano Kafka; 2) ny microservice miaraka amin'ny fanjakana ifampizarana (mampiasa ny Kafka Streams) no manodina azy ary manoratra ny fanjakana kajy amin'ny lohahevitra Kafka farany; aorian'izay 3) manaiky ny fanjakana vaovao ny mpanjifa

Hey, tena ilaina tokoa ity trano fivarotana manan-danja ity!

Araka ny voalaza etsy ambony, ny topologie fanjakana ifampizarantsika dia misy fivarotana manan-danja. Nahita safidy maromaro hampiasaina izahay, ary ny roa amin'izy ireo dia voalaza etsy ambany.

Safidy #1: Mampiasà fivarotana sanda manan-danja ho an'ny kajy

Ny tranombarotra manan-danja voalohany dia nahitana ny angona fanampiny ilainay amin'ny kajy. Ohatra, amin'ny toe-javatra sasany, ny fanjakana iraisana dia nofaritana tamin'ny foto-kevitry ny "vato maro an'isa". Ny tahiry dia afaka mitazona ny tatitra farany farany momba ny satan'ny zavatra sasany. Avy eo, rehefa nahazo tatitra vaovao avy amin'ny mpiasa iray na iray hafa izahay, dia afaka mitahiry izany, maka tatitra avy amin'ny mpiasa hafa rehetra momba ny toetry ny zavatra iray avy amin'ny fitahirizana, ary mamerina ny kajy.
Ny sary 4 etsy ambany dia mampiseho ny fomba nampisehoanay ny fitehirizam-boky / sanda amin'ny fomba fanodinana ny processeur mba ahafahana manodina ny hafatra vaovao.

Tsy vitan'ny fanodinana: Ahoana no nanaovanay angon-drakitra nozaraina avy amin'ny Kafka Streams, ary inona no nivoahan'izany

Sary 4: Manokatra ny fidirana amin'ny fivarotana sanda manan-danja izahay ho an'ny fomba fanodinana ny processeur (aorian'izany, ny script rehetra izay miasa amin'ny fanjakana iombonana dia tsy maintsy mampihatra ny fomba doProcess)

Safidy #2: Mamorona API CRUD eo an-tampon'ny Kafka Streams

Rehefa avy nametraka ny fizotry ny asa fototra izahay, dia nanomboka nanandrana nanoratra RESTful CRUD API ho an'ny microservices ifampizaranay izahay. Tianay ny ho afaka maka ny toetry ny zavatra sasany na ny zavatra rehetra, ary koa ny mametraka na manala ny toetry ny zavatra iray (ilaina amin'ny fanohanana backend).

Mba hanohanana ny Get State APIs rehetra, isaky ny mila manao kajy ny fanjakana izahay mandritra ny fanodinana, dia notehirizinay tao amin'ny magazay manan-danja naorina nandritra ny fotoana ela. Amin'ity tranga ity dia lasa tsotra ny fampiharana API toy izany amin'ny alàlan'ny Kafka Streams tokana, araka ny aseho amin'ny lisitra etsy ambany:

Tsy vitan'ny fanodinana: Ahoana no nanaovanay angon-drakitra nozaraina avy amin'ny Kafka Streams, ary inona no nivoahan'izany

Sary 5: Fampiasana ny fivarotana sanda manan-danja naorina mba hahazoana ny toetry ny zavatra iray

Mora ampiharina ihany koa ny fanavaozana ny toetry ny zavatra iray amin'ny alàlan'ny API. Amin'ny ankapobeny, ny hany ilainao atao dia ny mamorona mpamokatra Kafka ary ampiasao izany mba hanaovana rakitsoratra misy ny fanjakana vaovao. Izany dia miantoka fa ny hafatra rehetra avoaka amin'ny alàlan'ny API dia hokarakaraina amin'ny fomba mitovy amin'ny voaray avy amin'ny mpamokatra hafa (ohatra ny mpiasa).

Tsy vitan'ny fanodinana: Ahoana no nanaovanay angon-drakitra nozaraina avy amin'ny Kafka Streams, ary inona no nivoahan'izany

Sary 6: Azonao atao ny mametraka ny toetry ny zavatra iray amin'ny alàlan'ny mpamokatra Kafka

Fisavoritaka kely: Manana fizarazarana maro ny Kafka

Manaraka izany, te-hizara ny enta-mavesatry ny fanodinana izahay ary hanatsara ny fahafaha-manao amin'ny alàlan'ny fanomezana vondron'ny microservices zaraina isaky ny toe-javatra. Ny fametrahana dia tsio-drivotra: raha vantany vao namboarinay ny tranga rehetra mba hihazakazaka eo ambanin'ny ID fampiharana mitovy (sy ireo mpizara bootstrap mitovy), dia saika vita ho azy ny zavatra hafa rehetra. Nofaritanay ihany koa fa ny lohahevitry ny loharano tsirairay dia ahitana fizarazarana maromaro, mba hahafahan'ny tranga tsirairay omena ampahany amin'ny fizarazarana toy izany.

Holazaiko ihany koa fa fanao mahazatra ny manao kopia backup amin'ny tranom-panjakana, ka, ohatra, raha sitrana aorian'ny tsy fahombiazana, dia mamindra ity kopia ity amin'ny ohatra hafa. Ho an'ny tranom-panjakana tsirairay ao amin'ny Kafka Streams, misy lohahevitra averina noforonina miaraka amin'ny diarin'ny fanovana (izay manara-maso ny fanavaozana eo an-toerana). Noho izany, manohana hatrany ny fivarotanam-panjakana i Kafka. Noho izany, raha sendra ny tsy fahombiazan'ny iray na iray hafa Kafka Streams, ny tranom-panjakana dia azo averina haingana amin'ny toe-javatra hafa, izay handehanan'ny fisarahana mifanaraka aminy. Ny fitsapana nataonay dia naneho fa vita ao anatin'ny segondra vitsy izany, na dia misy rakitra an-tapitrisany aza ao amin'ny fivarotana.

Mifindra avy amin'ny microservice tokana miaraka amin'ny fanjakana zaraina mankany amin'ny vondron'ny microservices, dia lasa tsy dia misy dikany loatra ny fampiharana ny Get State API. Ao amin'ny toe-javatra vaovao, ny tranom-panjakana ny microservice tsirairay dia tsy ahitana afa-tsy ampahany amin'ny sary ankapobeny (ireo zavatra izay ny lakilen'ny sarintany amin'ny fisarahana manokana). Tsy maintsy nofaritana hoe iza amin'ireo ohatra no misy ny toetry ny zavatra ilainay, ary nanao izany izahay mifototra amin'ny metadata kofehy, araka ny aseho eto ambany:

Tsy vitan'ny fanodinana: Ahoana no nanaovanay angon-drakitra nozaraina avy amin'ny Kafka Streams, ary inona no nivoahan'izany

Sary 7: Amin'ny fampiasana metadata amin'ny stream, dia mamaritra hoe avy amin'ny ohatra inona no hanontaniana ny toetry ny zavatra tadiavina; fomba mitovy amin'izany no nampiasaina tamin'ny GET ALL API

Fehiny lehibe

Ny tranombarotram-panjakana ao amin'ny Kafka Streams dia afaka miasa ho toy ny angon-drakitra zaraina amin'ny ankapobeny,

  • averina foana ao Kafka
  • Ny API CRUD dia azo amboarina mora foana eo ambonin'ny rafitra toy izany
  • Sarotra kokoa ny mitantana partitions maro
  • Azo atao ihany koa ny manampy tranom-panjakana iray na maromaro amin'ny topologie streaming mba hitahiry angona fanampiny. Ity safidy ity dia azo ampiasaina amin'ny:
  • Fitehirizana angon-drakitra maharitra ilaina amin'ny kajikajy mandritra ny fanodinana stream
  • Fitehirizana angon-drakitra maharitra izay mety ilaina amin'ny fotoana manaraka omena ny ohatra mivantana
  • betsaka kokoa...

Ireo sy ny tombontsoa hafa dia mahatonga ny Kafka Streams mety tsara amin'ny fitazonana ny fanjakana maneran-tany amin'ny rafitra mizara toa antsika. Ny Kafka Streams dia voaporofo fa tena azo ianteherana amin'ny famokarana (saika tsy nisy very hafatra izahay hatramin'ny nandefasana azy), ary matoky izahay fa tsy hijanona eo ny fahaizany!

Source: www.habr.com

Add a comment