Chan e a-mhàin giullachd: Mar a rinn sinn stòr-dàta sgaoilte bho Kafka Streams, agus dè a thàinig às

Hi Habr!

Tha sinn gad chuimhneachadh gun lean thu an leabhar mu dheidhinn Kafka tha sinn air obair a cheart cho inntinneach fhoillseachadh mun leabharlann Kafka Streams API.

Chan e a-mhàin giullachd: Mar a rinn sinn stòr-dàta sgaoilte bho Kafka Streams, agus dè a thàinig às

Airson a-nis, tha a’ choimhearsnachd dìreach ag ionnsachadh crìochan an inneil chumhachdaich seo. Mar sin, chaidh artaigil fhoillseachadh o chionn ghoirid, agus bu mhath leinn an eadar-theangachadh a thoirt dhut. Bhon eòlas aige fhèin, tha an t-ùghdar ag innse mar a thionndaidheas e Kafka Streams gu bhith na stòradh dàta sgaoilte. Faigh tlachd bho leughadh!

Leabharlann apache Sruthan Kafka air a chleachdadh air feadh an t-saoghail ann an iomairtean airson giollachd sruthan sgaoilte a bharrachd air Apache Kafka. Is e aon de na taobhan den fhrèam seo nach eil air a mheas gu leòr gu bheil e a’ toirt cothrom dhut stàite ionadail a stòradh stèidhichte air giullachd snàithlean.

San artaigil seo, innsidh mi dhut mar a chaidh aig a ’chompanaidh againn air an cothrom seo a chleachdadh gu prothaideach nuair a bha iad a’ leasachadh toradh airson tèarainteachd tagradh sgòthan. A’ cleachdadh Kafka Streams, chruthaich sinn meanbh-sheirbheisean stàite co-roinnte, agus tha gach fear dhiubh na stòr fiosrachaidh earbsach a tha fulangach dha lochdan agus a tha ri fhaotainn gu mòr mu staid nithean san t-siostam. Dhuinne, is e ceum air adhart a tha seo an dà chuid a thaobh earbsachd agus furasta taic.

Ma tha ùidh agad ann an dòigh-obrach eile a leigeas leat aon stòr-dàta meadhanach a chleachdadh gus taic a thoirt do staid fhoirmeil nan nithean agad, leugh e, bidh e inntinneach ...

Carson a bha sinn den bheachd gu robh an t-àm ann an dòigh sa bheil sinn ag obair le stàite co-roinnte atharrachadh

Dh'fheumadh sinn staid diofar nithean a chumail suas stèidhichte air aithisgean àidseant (mar eisimpleir: an robh an làrach fo ionnsaigh)? Mus do rinn sinn imrich gu Kafka Streams, bha sinn gu tric an urra ri aon stòr-dàta meadhanach (+ API seirbheis) airson riaghladh stàite. Tha eas-bhuannachdan aig an dòigh-obrach seo: suidheachaidhean teann ceann-latha bidh cumail cunbhalachd agus sioncronadh na fhìor dhùbhlan. Faodaidh an stòr-dàta a bhith na bhotal no thig e gu crìch suidheachadh rèis agus a 'fulang le neo-fhaicsinneachd.

Chan e a-mhàin giullachd: Mar a rinn sinn stòr-dàta sgaoilte bho Kafka Streams, agus dè a thàinig às

Figear 1: Suidheachadh stàite roinnte àbhaisteach a chithear ron ghluasad gu
Sruthan Kafka agus Kafka: bidh riochdairean a’ conaltradh am beachdan tro API, tha staid ùraichte air a thomhas tro stòr-dàta meadhanach

Coinnich ri Kafka Streams, ga dhèanamh furasta meanbh-sheirbheisean stàite co-roinnte a chruthachadh

O chionn timcheall air bliadhna, chuir sinn romhainn sùil chruaidh a thoirt air na suidheachaidhean stàite co-roinnte againn gus dèiligeadh ris na cùisean sin. Cho-dhùin sinn sa bhad feuchainn air Kafka Streams - tha fios againn cho scalable, ri fhaighinn gu mòr agus a’ fulang le lochdan, agus cho beairteach sa tha a ghnìomhachd sruthadh (atharraichean, a ’toirt a-steach feadhainn stàiteil). Dìreach na bha a dhìth oirnn, gun luaidh air cho aibidh agus cho earbsach sa tha an siostam teachdaireachdan air fàs ann an Kafka.

Chaidh gach aon de na meanbh-sheirbheisean stàiteil a chruthaich sinn a thogail a bharrachd air eisimpleir Kafka Streams le topology gu math sìmplidh. Bha e air a dhèanamh suas de 1) stòr 2) pròiseasar le stòr luach-iuchrach leantainneach 3) sinc:

Chan e a-mhàin giullachd: Mar a rinn sinn stòr-dàta sgaoilte bho Kafka Streams, agus dè a thàinig às

Figear 2: Topology bunaiteach nan suidheachaidhean sruthadh againn airson meanbh-sheirbheisean stàiteil. Thoir an aire gu bheil stòr-dàta an seo cuideachd anns a bheil meata-dàta dealbhaidh.

Anns an dòigh-obrach ùr seo, bidh riochdairean a’ sgrìobhadh teachdaireachdan a tha air am biathadh a-steach don chuspair stòr, agus bidh luchd-cleachdaidh - can, seirbheis fios puist - a’ faighinn an staid co-roinnte àireamhaichte tron ​​​​sinc (cuspair toraidh).

Chan e a-mhàin giullachd: Mar a rinn sinn stòr-dàta sgaoilte bho Kafka Streams, agus dè a thàinig às

Figear 3: Eisimpleir ùr de shruth gnìomh airson suidheachadh le microservices co-roinnte: 1) bidh an neach-ionaid a’ gineadh teachdaireachd a ruigeas cuspair stòr Kafka; 2) bidh microservice le stàite co-roinnte (a 'cleachdadh Kafka Streams) ga phròiseas agus a' sgrìobhadh an stàit àireamhaichte gu cuspair deireannach Kafka; às deidh sin 3) bidh luchd-cleachdaidh a’ gabhail ris an stàit ùr

Hey, tha an stòr iuchair / luach togte seo glè fheumail!

Mar a chaidh ainmeachadh gu h-àrd, tha stòr prìomh luach anns an topology stàite co-roinnte againn. Lorg sinn grunn roghainnean airson a chleachdadh, agus tha dhà dhiubh air am mìneachadh gu h-ìosal.

Roghainn #1: Cleachd stòr luach-iuchrach airson àireamhachadh

Anns a’ chiad stòr prìomh luach againn bha an dàta taiceil a bha a dhìth oirnn airson àireamhachadh. Mar eisimpleir, ann an cuid de chùisean bha an stàit cho-roinnte air a dhearbhadh leis a’ phrionnsapal de “mhòr-chuid de bhòtaichean”. Dh’ fhaodadh an stòr na h-aithisgean àidseant as ùire a chumail mu inbhe nì air choreigin. An uairsin, nuair a fhuair sinn aithisg ùr bho aon àidseant no fear eile, b’ urrainn dhuinn a shàbhaladh, aithisgean fhaighinn bho gach neach-ionaid eile mu staid an aon rud bho stòradh, agus an àireamhachadh a-rithist.
Tha Figear 4 gu h-ìosal a’ sealltainn mar a nochd sinn stòr na h-iuchrach/luach gu modh giollachd a’ phròiseasar gus an gabhadh an teachdaireachd ùr a phròiseasadh an uairsin.

Chan e a-mhàin giullachd: Mar a rinn sinn stòr-dàta sgaoilte bho Kafka Streams, agus dè a thàinig às

Dealbh 4: Bidh sinn a’ fosgladh ruigsinneachd don stòr luach iuchrach airson modh giollachd a’ phròiseasar (às deidh seo, feumaidh a h-uile sgriobt a bhios ag obair le stàite co-roinnte am modh a chuir an gnìomh doProcess)

Roghainn #2: A’ cruthachadh API CRUD a bharrachd air Kafka Streams

Às deidh dhuinn ar sruth-obrach bunaiteach a stèidheachadh, thòisich sinn a’ feuchainn ri API RESTful CRUD a sgrìobhadh airson ar meanbh-sheirbheisean stàite co-roinnte. Bha sinn airson a bhith comasach air staid cuid no a h-uile nì fhaighinn air ais, a bharrachd air staid nì a shuidheachadh no a thoirt air falbh (feumail airson taic backend).

Gus taic a thoirt do gach API Get State, nuair a dh’ fheumadh sinn an stàit ath-àireamhachadh aig àm giullachd, bha sinn ga stòradh ann an stòr luach-iuchrach togte airson ùine mhòr. Anns a ’chùis seo, bidh e gu math sìmplidh a leithid de API a chuir an gnìomh a’ cleachdadh aon eisimpleir de Kafka Streams, mar a chithear san liostadh gu h-ìosal:

Chan e a-mhàin giullachd: Mar a rinn sinn stòr-dàta sgaoilte bho Kafka Streams, agus dè a thàinig às

Figear 5: A’ cleachdadh a’ bhùth luach-iuchrach togte gus staid ro-choimpiutaichte nì fhaighinn

Tha e furasta cuideachd staid nì ùrachadh tron ​​API. Gu bunaiteach, chan eil agad ach riochdaire Kafka a chruthachadh agus a chleachdadh gus clàr a dhèanamh anns a bheil an stàit ùr. Bidh seo a’ dèanamh cinnteach gun tèid a h-uile teachdaireachd a thig bhon API a phròiseasadh san aon dòigh ris an fheadhainn a gheibhear bho riochdairean eile (me riochdairean).

Chan e a-mhàin giullachd: Mar a rinn sinn stòr-dàta sgaoilte bho Kafka Streams, agus dè a thàinig às

Figear 6: Faodaidh tu suidheachadh nì a shuidheachadh a’ cleachdadh an riochdaire Kafka

Duilgheadas beag: tha mòran phàirtean aig Kafka

An uairsin, bha sinn airson an luchd giollachd a sgaoileadh agus ruigsinneachd adhartachadh le bhith a’ toirt seachad cruinneachadh de mhicro-sheirbheisean stàite co-roinnte gach suidheachadh. Bha an suidheachadh na ghaoith: aon uair ‘s gun do shuidhich sinn a h-uile suidheachadh gus ruith fon aon ID tagraidh (agus na h-aon frithealaichean bootstrap), chaidh cha mhòr a h-uile càil eile a dhèanamh gu fèin-ghluasadach. Shònraich sinn cuideachd gum biodh grunn phàirtean anns gach cuspair stòr, gus an gabhadh fo-sheata de na pàirtean sin a thoirt do gach suidheachadh.

Bheir mi iomradh cuideachd gu bheil e na chleachdadh cumanta leth-bhreac cùl-taic a dhèanamh de stòr na stàite gus, mar eisimpleir, air eagal faighinn seachad air às deidh fàilligeadh, an leth-bhreac seo a ghluasad gu eisimpleir eile. Airson gach stòr stàite ann an Kafka Streams, thèid cuspair ath-aithris a chruthachadh le log atharrachaidh (a bhios a’ cumail sùil air ùrachaidhean ionadail). Mar sin, bidh Kafka an-còmhnaidh a’ toirt taic do stòr na stàite. Mar sin, ma dh ’fhàillig aon eisimpleir Kafka Streams no fear eile, faodar stòr na stàite ath-nuadhachadh gu sgiobalta air eisimpleir eile, far an tèid na pàirtean co-fhreagarrach. Tha na deuchainnean againn air sealltainn gu bheil seo air a dhèanamh ann an diog no dhà, eadhon ged a tha milleanan de chlàran anns a’ bhùth.

A’ gluasad bho aon mhicro-sheirbheis le stàite co-roinnte gu cruinneachadh de mhicro-sheirbheisean, chan eil e cho duilich an API Get State a chuir an gnìomh. Anns an t-suidheachadh ùr, chan eil ann an stòr stàite gach microservice ach pàirt den dealbh iomlan (na nithean sin aig an deach na h-iuchraichean aca a mhapadh gu sgaradh sònraichte). Bha againn ri faighinn a-mach dè an suidheachadh anns an robh staid an nì a bha a dhìth oirnn, agus rinn sinn seo stèidhichte air meata-dàta an t-snàthainn, mar a chithear gu h-ìosal:

Chan e a-mhàin giullachd: Mar a rinn sinn stòr-dàta sgaoilte bho Kafka Streams, agus dè a thàinig às

Figear 7: A’ cleachdadh meata-dàta srutha, bidh sinn a’ dearbhadh dè an suidheachadh a bhitheas a’ ceasnachadh staid an nì a tha thu ag iarraidh; chaidh dòigh-obrach coltach ris a chleachdadh leis an GET ALL API

Prìomh Thoraidhean

Faodaidh stòran stàite ann an Kafka Streams a bhith na stòr-dàta sgaoilte de facto,

  • an-còmhnaidh air ath-aithris ann an Kafka
  • Faodar API CRUD a thogail gu furasta air mullach siostam mar sin
  • Tha làimhseachadh ioma-phàirteachaidhean beagan nas iom-fhillte
  • Tha e comasach cuideachd aon stòr stàite no barrachd a chur ris an topology sruthadh gus dàta taice a stòradh. Faodar an roghainn seo a chleachdadh airson:
  • Stòradh fad-ùine de dhàta a tha a dhìth airson àireamhachadh rè obrachadh sruth
  • Stòradh dàta fad-ùine a dh’ fhaodadh a bhith feumail an ath thuras a thèid an t-eisimpleir sruthadh a thoirt seachad
  • tòrr a bharrachd...

Tha iad sin agus buannachdan eile a’ fàgail Kafka Streams gu math freagarrach airson staid chruinneil a chumail ann an siostam sgaoilte mar an fheadhainn againne. Tha Kafka Streams air a bhith gu math earbsach ann an cinneasachadh (cha mhòr nach do chaill sinn teachdaireachd bho chaidh a chuir a-steach), agus tha sinn misneachail nach stad na comasan aige an sin!

Source: www.habr.com

Cuir beachd ann