Hey Habr!
Cuirimid i gcuimhne duit go leanann tú an leabhar faoi
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
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:
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:
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).
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.
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:
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í).
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:
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