
TL; DR: Cur síos ar ailtireacht cliant-freastalaí ár gcóras bainistíochta cumraíochta líonra inmheánach, QControl. Tá sé bunaithe ar phrótacal iompair dhá chiseal a oibríonn le teachtaireachtaí pacáilte gzip gan dí-chomhbhrú idir críochphointí. Faigheann ródairí dáilte agus críochphointí nuashonruithe cumraíochta, agus ceadaíonn an prótacal féin athsheachadáin idirmheánacha logánta a shuiteáil. Tá an córas tógtha ar an bprionsabal (“cobhsaí le déanaí”, a mhínítear thíos) agus úsáideann an teanga fiosrúcháin JMESpath mar aon leis an inneall templating Jinja chun comhaid chumraíochta a sholáthar.
Oibríonn Qrator Labs líonra maolaithe ionsaithe a dháiltear go domhanda. Feidhmíonn ár líonra ar an bprionsabal anycast, agus folíonta a fhógairt trí BGP. Toisc gur líonra aonchraolacháin BGP é atá lonnaithe go fisiciúil i roinnt réigiún den Domhan, is féidir linn trácht neamhdhlisteanach a phróiseáil agus a scagadh níos gaire do chroílár an Idirlín - oibreoirí Sraith-1.
Ar an láimh eile, níl sé éasca líonra a dháileadh go geografach. Tá cumarsáid idir pointí láithreachta líonra ríthábhachtach chun go mbeadh cumraíocht chomhsheasmhach de na nóid líonra go léir ag an soláthraí seirbhíse slándála, chun iad a nuashonrú go tráthúil. Dá bhrí sin, chun an leibhéal is airde seirbhíse is féidir a sholáthar don tomhaltóir, bhí orainn bealach a aimsiú chun sonraí cumraíochta a shioncronú go hiontaofa ar fud na mór-roinne.
I dtús bhí an Briathar. Go tapa rinneadh prótacal cumarsáide de a raibh nuashonrú ag teastáil uaidh.
Is é bunchloch QCControl a bheith ann, agus ag an am céanna an chúis is mó le méid suntasach ama agus acmhainní a chaitheamh ar an gcineál seo prótacail a thógáil, ná an gá atá le foinse aonair údarásach cumraíochta a fháil agus, ar deireadh thiar, ár bpointí láithreacha a shioncrónú. leis. Ní raibh sa stóráil féin ach ceann amháin de roinnt riachtanas le linn fhorbairt QCControl. Ina theannta sin, bhí comhtháthú ag teastáil uainn freisin le seirbhísí reatha agus pleanáilte ag pointí láithreachta (POP), modhanna cliste (agus inoiriúnaithe) bailíochtaithe sonraí, chomh maith le rialú rochtana. Ina theannta sin, theastaigh uainn freisin córas den sórt sin a rialú trí úsáid a bhaint as orduithe seachas mionathruithe a dhéanamh ar chomhaid. Roimh QCControl, cuireadh sonraí chuig pointí láithreachta beagnach de láimh. Mura raibh ceann de na pointí láithreachta ar fáil agus go ndearna muid dearmad é a nuashonrú níos déanaí, tháinig deireadh leis an gcumraíocht as sioncronú agus bhí orainn am a chur amú á chur i bhfeidhm arís.
Mar thoradh air sin, tháinig muid suas leis an scéim seo a leanas:

Tá an freastalaí cumraíochta freagrach as bailíochtú agus stóráil sonraí; tá roinnt críochphointí ag an ródaire a fhaigheann agus a chraolann nuashonruithe cumraíochta ó chliaint agus foirne tacaíochta chuig an bhfreastalaí, agus ón bhfreastalaí chuig pointí láithreachta.
Athraíonn cáilíocht nasc Idirlín fós go forleathan ar fud an domhain - chun an pointe seo a léiriú, déanaimis féachaint ar MTR simplí ó Prág, Poblacht na Seice go Singeapór agus Hong Cong.
MTR ó Prág go Singeapór
Rud céanna le Hong Cong
Ciallaíonn latency ard luas níos ísle. Ina theannta sin, tá caillteanas paicéad ann. Ní dhéanann leithead an chainéil an fhadhb seo a chúiteamh, rud nach mór a chur san áireamh i gcónaí agus córais díláraithe á dtógáil.
Is éard atá i gcumraíocht iomlán pointe láithreacht ná méid suntasach sonraí a chaithfear a sheoladh chuig go leor faighteoirí thar naisc neamhiontaofa. Go fortunately, cé go n-athraíonn an chumraíocht i gcónaí, tarlaíonn sé in incrimintí beaga.
Dearadh le déanaí-cobhsaí
Is féidir linn a rá gur réiteach measartha soiléir é líonra dáilte a thógáil bunaithe ar phrionsabal na nuashonruithe incriminteacha. Ach tá go leor fadhbanna ann le diffs. Ní mór dúinn gach difreálach idir na pointí tagartha a shábháil, agus a bheith in ann iad a athsheoladh ar eagla go gcaillfeadh duine cuid de na sonraí. Ní mór do gach ceann scríbe iad a chur i bhfeidhm i seicheamh docht sonraithe. De ghnáth, i gcás roinnt cinn scríbe, is féidir go dtógfaidh oibríocht den sórt sin go leor ama. Ní mór go mbeadh an glacadóir in ann na codanna atá in easnamh a iarraidh freisin agus, ar ndóigh, ní mór don chuid lárnach freagairt cheart a thabhairt ar iarratas den sórt sin, gan ach na sonraí atá in easnamh a sheoladh.
Mar thoradh air sin, tháinig muid ar réiteach sách suimiúil - níl ach ciseal tagartha amháin againn, seasta, glaoimid cobhsaí é, agus gan ach difr amháin ar a shon - le déanaí. Tá gach ceann le déanaí bunaithe ar an stábla deiridh a ghintear agus is leor é chun na sonraí cumraíochta a atógáil. Chomh luath agus a shroicheann an ceann úr le déanaí a cheann scríbe, níl gá leis an seancheann a thuilleadh.
Níl fágtha ach cumraíocht chobhsaí úr a sheoladh ó am go chéile, mar shampla toisc go bhfuil le déanaí ró-mhór. Rud atá tábhachtach anseo freisin ná go seolfaimid na nuashonruithe seo go léir amach ar mhodh craolta/ilchraolta, gan a bheith buartha faoi fhaighteoirí aonair agus a gcumas píosaí sonraí a chur le chéile. Nuair atáimid cinnte go bhfuil an stábla ceart ag gach duine, ní sheolaimid ach cinn nua le déanaí. Ar fiú a shoiléiriú go n-oibríonn sé seo? Oibríonn. Tá stábla i dtaisce ar an bhfreastalaí cumraíochta agus na faighteoirí, cruthaítear déanaí mar is gá.
Ailtireacht iompair dhá leibhéal
Cén fáth ar chuireamar lenár n-iompar ar dhá leibhéal? Tá an freagra simplí go leor - bhíomar ag iarraidh ródú a dhíchúpláil ó loighic ardleibhéil, ag glacadh inspioráid ón tsamhail OSI lena sraitheanna iompair agus iarratais. D'úsáideamar Thrift le haghaidh ról an phrótacail iompair, agus an fhormáid sraitheachaithe msgpack le haghaidh formáid ardleibhéil na dteachtaireachtaí rialaithe. Sin é an fáth nach mbreathnaíonn an ródaire (ag déanamh ilchraolta/craolta/leaschraolta) taobh istigh de msgpack, nach ndéanann sé díphacáil nó pacáil a bhfuil ann ar ais, agus ní chuireann sé ach sonraí ar aghaidh.
Is teanga cur síos comhéadain í an rabhán (as Béarla - “thrift”, pronounced [θrift]) a úsáidtear chun seirbhísí do theangacha ríomhchlárúcháin éagsúla a shainiú agus a chruthú. Is creat é le haghaidh glaonna um nós imeachta cianda (RPC). Comhcheanglaíonn sé píblíne bogearraí le hinneall giniúna cód chun seirbhísí a fhorbairt a oibríonn níos éifeachtaí nó níos lú agus go héasca idir teangacha.
Roghnaigh muid an creat Thrift mar gheall ar RPC agus tacaíocht do go leor teangacha. Mar is gnách, ba iad na codanna éasca an cliant agus an freastalaí. Mar sin féin, d'éirigh an ródaire amach a bheith ina cnó diana a crack, go páirteach mar gheall ar an easpa réiteach réidh le linn ár bhforbairt.
Tá roghanna eile ann, mar shampla protobuf / gRPC, áfach, nuair a thosaigh muid ar ár dtionscadal, bhí gRPC nua go leor agus níor leomh muid é a chur san áireamh.
Ar ndóigh, d’fhéadfaimis (agus ba cheart go mbeadh) ár rothar féin tógtha againn. Bheadh sé níos éasca prótacal a chruthú le haghaidh an méid a theastaíonn uainn toisc go bhfuil an ailtireacht cliant-freastalaí sách simplí a chur i bhfeidhm i gcomparáid le ródaire a thógáil ar Thrift. Ar bhealach amháin nó ar bhealach eile, tá claonadh traidisiúnta i dtreo prótacail féinscríofa agus cur i bhfeidhm leabharlanna móréilimh (ar chúis mhaith); ina theannta sin, le linn an phlé tagann an cheist chun cinn i gcónaí: “Conas atáimid chun é seo a aistriú chuig teangacha eile?” Mar sin chaith muid amach láithreach an smaoineamh ar rothar.
Tá Msgpack cosúil le JSON, ach níos tapúla agus níos lú. Is formáid sraitheach sonraí dhénártha é a cheadaíonn sonraí a mhalartú idir iliomad teangacha.
Ag an gcéad leibhéal ní mór dúinn Thrift a bhfuil an t-eolas íosta is gá chun an ródaire an teachtaireacht a chur ar aghaidh. Ag an dara leibhéal tá struchtúir msgpack pacáistithe.
Roghnaigh muid msgpack toisc go bhfuil sé níos tapúla agus níos dlúithe i gcomparáid le JSON. Ach níos tábhachtaí fós, tacaíonn sé le cineálacha sonraí saincheaptha, rud a ligeann dúinn gnéithe fionnuara a úsáid mar dhénártha amh a rith nó rudaí speisialta a thugann le fios nach bhfuil sonraí ann, rud a bhí tábhachtach dár scéim “cobhsaí le déanaí”.
JMESPath
Is teanga iarratais JSON í JMESPath.
Is é seo go díreach an chuma atá ar an gcur síos a fhaighimid ó dhoiciméadú oifigiúil JMESPath, ach i ndáiríre, déanann sé i bhfad níos mó ná sin. Ligeann JMESPath duit fochrainn a chuardach agus a scagadh i struchtúr crann treallach, agus athruithe a chur i bhfeidhm ar shonraí ar an eitilt. Ligeann sé freisin duit scagairí speisialta agus nósanna imeachta claochlaithe sonraí a chur leis. Cé go n-éilíonn sé, ar ndóigh, iarracht inchinn a thuiscint.
Jinja
I gcás roinnt tomhaltóirí, ní mór dúinn an chumraíocht a iompú isteach i gcomhad - mar sin úsáidimid inneall teimpléad agus is é Jinja an rogha soiléir. Le cabhair uaidh, ginimid comhad cumraíochta ón teimpléad agus na sonraí a fhaightear ag an gceann scríbe.
Chun comhad cumraíochta a ghiniúint, ní mór dúinn iarratas JMESPath, teimpléad do shuíomh an chomhaid san FS, agus teimpléad don chumraíocht féin. Is smaoineamh maith é freisin ag an gcéim seo ceadanna an chomhaid a shoiléiriú. Cuireadh seo go léir le chéile go rathúil i gcomhad amháin - roimh thús an teimpléid chumraíochta, chuireamar ceanntásc i bhformáid YAML a chuireann síos ar an gcuid eile.
Mar shampla:
---
selector: "[@][?@.fft._meta.version == `42`] | items([0].fft_config || `{}`)"
destination_filename: "fft/{{ match[0] }}.json"
file_mode: 0644
reload_daemons: [fft]
...
{{ dict(match[1]) | json(indent=2, sort_keys=True) }}
Chun comhad cumraíochta a dhéanamh do sheirbhís nua, ní chuirimid ach comhad teimpléad nua. Ní theastaíonn aon athruithe ar an gcód foinse nó ar na bogearraí ar na pointí láithreachta.
Cad atá athraithe ó chuaigh QCControl beo? Is é an chéad rud agus an rud is tábhachtaí ná seachadadh comhsheasmhach agus iontaofa nuashonruithe cumraíochta chuig gach nóid sa líonra. Is é an dara ceann uirlis chumhachtach a fháil chun an chumraíocht a sheiceáil agus chun athruithe a dhéanamh air ónár bhfoireann tacaíochta, agus ó thomhaltóirí na seirbhíse.
Bhí muid in ann é seo go léir a dhéanamh ag baint úsáide as an scéim nuashonraithe cobhsaí le déanaí chun cumarsáid a shimpliú idir an freastalaí cumraíochta agus faighteoirí cumraíochta. Prótacal dhá chiseal a úsáid chun tacú le bealach neamhspleách ar ábhar chun sonraí a ródú. Comhtháthaíodh inneall giniúna cumraíochta Jinja-bhunaithe go rathúil i líonra scagtha dáilte. Tacaíonn an córas seo le raon leathan modhanna cumraíochta dár gcuid forimeallach dáilte agus ilchineálach.
Go raibh maith agat as do chabhair leis an ábhar a scríobh. , , .
post.
Foinse: will.com
