Ní hamháin próiseáil: Conas a rinneamar bunachar sonraí dáilte ó Kafka Streams, agus cad a tháinig as

Hey Habr!

Cuirimid i gcuimhne duit go leanann tú an leabhar faoi Kafka tá saothar chomh spéisiúil céanna againn faoin leabharlann Kafka Streams API.

Ní hamháin próiseáil: Conas a rinneamar bunachar sonraí dáilte ó Kafka Streams, agus cad a tháinig as

Go dtí seo, níl an pobal ag foghlaim ach teorainneacha an uirlis chumhachtach seo. Mar sin, foilsíodh alt le déanaí, agus ba mhaith linn an t-aistriúchán a chur in aithne duit. Óna thaithí féin, insíonn an t-údar conas Sruthanna Kafka a iompú isteach i stóráil sonraí dáilte. Bain sult as léamh!

Leabharlann Apache Sruthanna Kafka a úsáidtear ar fud an domhain i bhfiontair le haghaidh próiseáil sruth dáilte ar bharr Apache Kafka. Ceann de na gnéithe underappreciated den chreat seo ná go gceadaíonn sé duit a stóráil stáit áitiúla a tháirgtear bunaithe ar phróiseáil snáithe.

San Airteagal seo, inseoidh mé duit conas a d'éirigh lenár gcuideachta an deis seo a úsáid go brabúsach agus táirge á fhorbairt le haghaidh slándála feidhmchláir scamall. Ag baint úsáide as Kafka Streams, chruthaíomar micreasheirbhísí stáit roinnte, agus feidhmíonn gach ceann acu mar fhoinse faisnéise iontaofa atá ar fáil go mór i gcoinne lochtanna faoi staid na n-ábhar sa chóras. Maidir linne, is céim chun cinn é seo ó thaobh iontaofachta agus éascaíocht tacaíochta.

Má tá suim agat i gcur chuige eile a ligeann duit bunachar sonraí lárnach amháin a úsáid chun tacú le staid fhoirmiúil do chuid rudaí, léigh é, beidh sé suimiúil ...

Cén fáth ar shíl muid go raibh sé in am an bealach ina n-oibrímid le stát comhroinnte a athrú

Bhí orainn staid rudaí éagsúla a choinneáil bunaithe ar thuairiscí gníomhairí (mar shampla: an raibh an láithreán faoi ionsaí)? Sula ndeachaigh muid ar imirce go Kafka Streams, is minic a bhíomar ag brath ar bhunachar sonraí lárnach amháin (+ API seirbhíse) le haghaidh bainistíochta stáit. Tá na míbhuntáistí ag baint leis an gcur chuige seo: cásanna dian dáta is fíordhúshlán é comhsheasmhacht agus sioncronú a chothabháil. Féadfaidh an bunachar sonraí a bheith ina scrogall nó go dtiocfaidh deireadh leis riocht cine agus ag fulaingt ó neamh-intuarthacht.

Ní hamháin próiseáil: Conas a rinneamar bunachar sonraí dáilte ó Kafka Streams, agus cad a tháinig as

Fíor 1: Gnáthchás staid scoilte a chonacthas roimh an aistriú go dtí
Sruthanna Kafka agus Kafka: cuireann gníomhairí a dtuairimí in iúl trí API, ríomhtar an stát nuashonraithe trí bhunachar sonraí lárnach

Téigh in aithne ar Kafka Streams, rud a fhágann go bhfuil sé éasca micreasheirbhísí stáit roinnte a chruthú

Timpeall bliain ó shin, bheartaíomar breathnú go dian ar ár gcásanna comhstáit chun aghaidh a thabhairt ar na saincheisteanna sin. Shocraigh muid láithreach triail a bhaint as Kafka Streams - tá a fhios againn cé chomh inscálaithe, atá an-fháil agus fabht-fhulangach, agus cé chomh saibhir agus atá a fheidhmiúlacht sruthú (claochluithe, lena n-áirítear cinn státchabhrach). Díreach mar a theastaigh uainn, gan trácht ar chomh aibí agus iontaofa atá an córas teachtaireachtaí i Kafka.

Tógadh gach ceann de na micriseirbhísí suaracha a chruthaigh muid ar bharr shampla Kafka Streams le topology simplí go leor. Is éard a bhí ann 1) foinse 2) próiseálaí le stór buanluachanna eochrach 3) doirteal:

Ní hamháin próiseáil: Conas a rinneamar bunachar sonraí dáilte ó Kafka Streams, agus cad a tháinig as

Figiúr 2: Topology réamhshocraithe ár n-ócáidí sruthaithe do mhicrisheirbhísí stáit. Tabhair faoi deara go bhfuil stór anseo freisin ina bhfuil meiteashonraí pleanála.

Sa chur chuige nua seo, cruthaíonn gníomhairí teachtaireachtaí a chuirtear san ábhar foinseach, agus faigheann tomhaltóirí - a deir seirbhís fógra poist - an stát comhroinnte ríofa tríd an doirteal (ábhar aschuir).

Ní hamháin próiseáil: Conas a rinneamar bunachar sonraí dáilte ó Kafka Streams, agus cad a tháinig as

Fíor 3: Sreabhadh tasc samplach nua le haghaidh cás ina bhfuil micreasheirbhísí comhroinnte: 1) gineann an gníomhaire teachtaireacht a thagann chuig ábhar foinse Kafka; 2) déanann microservice le stát roinnte (ag baint úsáide as Kafka Streams) é a phróiseáil agus an stát ríofa a scríobh chuig an ábhar Kafka deiridh; tar éis a 3) tomhaltóirí glacadh leis an stát nua

Hey, tá an stór eochairluacha ionsuite seo fíor-úsáideach!

Mar a luadh thuas, tá stór eochairluacha inár dtopology comhstáit. Fuaireamar roinnt roghanna chun é a úsáid, agus déantar cur síos ar dhá cheann acu thíos.

Rogha #1: Bain úsáid as stór eochairluacha le haghaidh ríomhaireachtaí

Bhí na sonraí cúnta a theastaigh uainn le haghaidh ríomhanna inár gcéad stór eochairluacha. Mar shampla, i gcásanna áirithe socraíodh an stát comhroinnte le prionsabal na "vótaí tromlaigh". D'fhéadfadh an stór na tuarascálacha gníomhaire is déanaí ar stádas réad éigin a choinneáil. Ansin, nuair a fuair muid tuarascáil nua ó ghníomhaire amháin nó eile, d'fhéadfaimis é a shábháil, tuairiscí a aisghabháil ó gach gníomhairí eile faoi staid an ruda céanna ó stóráil, agus an ríomh a dhéanamh arís.
Léiríonn Fíor 4 thíos an chaoi ar nocht muid an stór eochair/luacha do mhodh próiseála an phróiseálaí ionas go bhféadfaí an teachtaireacht nua a phróiseáil ansin.

Ní hamháin próiseáil: Conas a rinneamar bunachar sonraí dáilte ó Kafka Streams, agus cad a tháinig as

Léaráid 4: Osclaímid rochtain ar an stór eochairluacha do mhodh próiseála an phróiseálaí (tar éis seo, caithfidh gach script a oibríonn le stát comhroinnte an modh a chur i bhfeidhm doProcess)

Rogha #2: API CRUD a chruthú ar bharr Sruthanna Kafka

Tar éis dúinn ár sreabhadh tasc bunúsach a bhunú, thosaigh muid ag iarraidh API RESTful CRUD a scríobh dár microservices stáit roinnte. Theastaigh uainn a bheith in ann staid roinnt réad nó gach rud a aisghabháil, chomh maith le staid ruda a shocrú nó a bhaint (úsáideach le haghaidh tacaíochta backend).

Chun tacú le gach API Get State, aon uair a theastaigh uainn an stát a athríomh le linn na próiseála, rinneamar é a stóráil i stór eochairluacha ionsuite ar feadh i bhfad. Sa chás seo, bíonn sé simplí go leor API den sórt sin a chur i bhfeidhm ag baint úsáide as sampla amháin de Kafka Streams, mar a thaispeántar sa liosta thíos:

Ní hamháin próiseáil: Conas a rinneamar bunachar sonraí dáilte ó Kafka Streams, agus cad a tháinig as

Fíor 5: Úsáid a bhaint as an stór eochairluacha ionsuite chun staid réamhríofa ruda a fháil

Tá sé éasca freisin staid ruda a nuashonrú tríd an API a chur i bhfeidhm. Go bunúsach, níl le déanamh ach táirgeoir Kafka a chruthú agus é a úsáid chun taifead a dhéanamh ina bhfuil an stát nua. Cinntíonn sé seo go ndéanfar gach teachtaireacht a ghintear tríd an API a phróiseáil ar an mbealach céanna leis na cinn a fhaightear ó tháirgeoirí eile (m.sh. gníomhairí).

Ní hamháin próiseáil: Conas a rinneamar bunachar sonraí dáilte ó Kafka Streams, agus cad a tháinig as

Fíor 6: Is féidir leat staid ruda a shocrú ag baint úsáide as an táirgeoir Kafka

Castacht bheag: Tá go leor deighiltí ag Kafka

Ansin, bhíomar ag iarraidh an t-ualach próiseála a dháileadh agus infhaighteacht a fheabhsú trí bhraisle de mhicrisheirbhísí comhroinnte a sholáthar in aghaidh an cháis. Bhí an tsocrú ina ghaoth: nuair a bhí gach cás cumraithe againn le rith faoin aitheantas feidhmchláir chéanna (agus na freastalaithe bootstrap céanna), rinneadh beagnach gach rud eile go huathoibríoch. Shonraíomar freisin go mbeadh roinnt deighiltí i ngach ábhar foinse, ionas go bhféadfaí fo-thacar de dheighiltí dá leithéid a shannadh do gach cás.

Luafaidh mé freisin go bhfuil sé ina ghnáthchleachtas cóip chúltaca a dhéanamh den stór stáit ionas, mar shampla, i gcás aisghabháil tar éis teip, an chóip seo a aistriú chuig cás eile. I gcás gach stór stáit i Kafka Streams, cruthaítear topaic athdhéanta le logáil athruithe (a rianaíonn nuashonruithe áitiúla). Mar sin, tacaíonn Kafka i gcónaí le stór an stáit. Dá bhrí sin, má theipeann ar cheann amháin nó ar chás eile Kafka Streams, is féidir an stór stáit a athchóiriú go tapa ar chás eile, áit a rachaidh na landairí comhfhreagracha. Tá sé léirithe ag ár dtástálacha go ndéantar é seo i roinnt soicind, fiú má tá na milliúin taifead sa siopa.

Ag bogadh ó mhicreirbhís aonair le stát roinnte go cnuasach de mhicrisheirbhísí, ní bhíonn sé chomh fánach an Get State API a chur i bhfeidhm. Sa chás nua, níl ach cuid den phictiúr iomlán i stór stát gach micriseirbhíse (na rudaí sin a ndearnadh a n-eochracha a mhapáil chuig críochdheighilt ar leith). Bhí orainn a chinneadh cén cás ina raibh staid an oibiachta a bhí de dhíth orainn, agus rinneamar é seo bunaithe ar na meiteashonraí snáithe, mar a léirítear thíos:

Ní hamháin próiseáil: Conas a rinneamar bunachar sonraí dáilte ó Kafka Streams, agus cad a tháinig as

Figiúr 7: Agus meiteashonraí srutha á n-úsáid againn, cinnimid cén cás chun staid an réada atá ag teastáil a fhiosrú; baineadh úsáid as cur chuige comhchosúil leis an GET ALL API

Príomhthorthaí

Is féidir le siopaí stáit i Kafka Streams feidhmiú mar bhunachar sonraí dáilte de facto,

  • i gcónaí a mhacasamhlú i Kafka
  • Is furasta API CRUD a thógáil ar bharr a leithéid de chóras
  • Tá láimhseáil deighiltí iolracha beagán níos casta
  • Is féidir freisin stór stáit amháin nó níos mó a chur leis an topology sruthaithe chun sonraí cúnta a stóráil. Is féidir an rogha seo a úsáid le haghaidh:
  • Stóráil fhadtéarmach sonraí a theastaíonn le haghaidh ríomhanna le linn próiseála srutha
  • Stóráil fhadtéarmach sonraí a d’fhéadfadh a bheith úsáideach an chéad uair eile a sholáthrófar an sampla sruthú
  • i bhfad níos mó...

Leis na buntáistí seo agus buntáistí eile, tá Kafka Streams oiriúnach go maith chun staid dhomhanda a choinneáil i gcóras dáilte mar atá againne. Tá sé cruthaithe go bhfuil Kafka Streams an-iontaofa i dtáirgeadh (ní raibh mórán teachtaireachtaí caillte againn ó imscaradh é), agus táimid muiníneach nach stopfaidh a chumais ansin!

Foinse: will.com

Add a comment