Istio Circuit Breaker: coimeádáin lochtacha a dhíchumasú

Tá na laethanta saoire thart agus táimid ar ais lenár dara post sa tsraith Istio Service Mosh.

Istio Circuit Breaker: coimeádáin lochtacha a dhíchumasú

Is é ábhar an lae inniu ná Circuit Breaker, a aistrítear go innealtóireacht leictreach na Rúise a chiallaíonn “scorthóir ciorcaid”, go coitianta – “scorthóir ciorcaid”. I Istio amháin, ní dhéanann an meaisín seo ciorcad gearr nó ró-ualaithe a dhícheangal, ach coimeádáin lochtacha.

Cén chaoi ar cheart go n-oibreodh sé seo go hidéalach

Nuair a bhíonn Kubernetes á bhainistiú ag microservices, mar shampla laistigh den ardán OpenShift, scála siad suas agus síos go huathoibríoch ag brath ar an ualach. Toisc go ritheann micreasheirbhísí i gcódanna, is féidir go mbeidh go leor cásanna ann de mhicrisheirbhísí coimeádta ar chríochphointe amháin, agus déanfaidh Kubernetes iarratais a stiúradh agus cothromaíocht a luchtú eatarthu. Agus - go hidéalach - ba chóir go n-oibreodh sé seo go léir go foirfe.

Cuimhnímid go bhfuil micreasheirbhísí beag agus gearrthéarmach. Is minic nach ndéantar meastachán ró-íseal ar an mbeagán focal, rud a chiallaíonn go bhfuil sé éasca le feiceáil agus le himeacht. Tá an bhreith agus bás mar shampla eile de microservice i pod rudaí ag súil go leor, OpenShift agus Kubernetes láimhseáil seo go maith, agus oibríonn gach rud iontach - ach arís go teoiriciúil.

Conas a oibríonn sé i ndáiríre

Anois samhlaigh go bhfuil sampla sonrach de mhicrisheirbhís, is é sin, coimeádán, tar éis éirí neamh-inúsáidte: ní fhreagraíonn sé (earráid 503), nó, rud atá níos míthaitneamhach, freagraíonn sé, ach ró-mhall. I bhfocail eile, bíonn sé glitchy nó ​​ní fhreagraíonn sé d'iarratais, ach ní bhaintear as an linn go huathoibríoch é. Cad ba cheart a dhéanamh sa chás seo? Chun triail eile a bhaint as? Ar cheart dom é a bhaint den scéim ródaithe? Agus cad is brí le “ró-mhall” – cé mhéad atá ann ina líon, agus cé a shocraíonn iad? B'fhéidir go dtabharfaidh tú sos dó agus bain triail eile as ar ball? Más amhlaidh, cé mhéad níos déanaí?

Cad is Díshealbhú Snámha i Istio

Agus anseo tagann Istio chun tarrthála lena mheaisíní cosanta Circuit Breaker, a bhaineann coimeádáin lochtacha as an linn acmhainní ródaithe agus cothromaithe ualaigh go sealadach, ag cur an nós imeachta um Dhíchur Snámha i bhfeidhm.

Ag baint úsáide as straitéis braite asluiteacha, aimsíonn Istio pods cuar atá as líne agus baintear as an linn acmhainní iad ar feadh tréimhse sonraithe ama, ar a dtugtar fuinneog codlata.

Chun an chaoi a n-oibríonn sé seo in Kubernetes ar an ardán OpenShift a thaispeáint, cuirimis tús le gabháil scáileáin de mhicrisheirbhísí a oibríonn de ghnáth ón sampla sa stór Taispeántais Fhorbróirí Red Hat. Anseo tá dhá pods, v1 agus v2, gach ceann ag rith coimeádán amháin. Nuair nach n-úsáidtear rialacha ródaithe Istio, mainneachtainí Kubernetes ródú cruinn-chothromaithe:

Istio Circuit Breaker: coimeádáin lochtacha a dhíchumasú

Ag ullmhú le haghaidh teip

Sula ndéanann tú Pool Ejection, ní mór duit riail ródaithe Istio a chruthú. Ligean le rá gur mhaith linn iarratais a dháileadh idir pods i gcóimheas 50/50. Ina theannta sin, méadóimid líon na gcoimeádán v2 ó cheann go dhá, mar seo:

oc scale deployment recommendation-v2 --replicas=2 -n tutorial

Anois socraímid riail ródaithe ionas go ndéantar trácht a dháileadh idir na pods i gcóimheas 50/50.

Istio Circuit Breaker: coimeádáin lochtacha a dhíchumasú
Seo an chuma atá ar thoradh na rialach seo:

Istio Circuit Breaker: coimeádáin lochtacha a dhíchumasú
Is féidir leat an locht a fháil ar an bhfíric nach bhfuil an scáileán seo 50/50, ach 14:9, ach le himeacht ama tiocfaidh feabhas ar an scéal.

Ag déanamh glitch

Anois díchumasaimis ceann amháin den dá choimeádán v2 ionas go mbeidh coimeádán sláintiúil v1 amháin againn, coimeádán sláintiúil v2 amháin agus coimeádán v2 lochtach amháin:

Istio Circuit Breaker: coimeádáin lochtacha a dhíchumasú

An glitch a shocrú

Mar sin, tá coimeádán lochtach againn, agus tá sé in am Pool Ejection. Ag baint úsáide as cumraíocht an-simplí, déanfaimid an coimeádán teipthe seo a eisiamh ó aon scéimeanna ródaithe ar feadh 15 soicind le súil go bhfillfidh sé ar staid shláintiúil (ceachtar atosú nó feidhmíocht a athchóiriú). Seo an chuma atá ar an gcumraíocht seo agus torthaí a chuid oibre:

Istio Circuit Breaker: coimeádáin lochtacha a dhíchumasú
Istio Circuit Breaker: coimeádáin lochtacha a dhíchumasú
Mar a fheiceann tú, ní úsáidtear an coimeádán v2 ar theip air a thuilleadh le haghaidh iarratais ródaithe toisc go bhfuil sé bainte den linn. Ach tar éis 15 soicind beidh sé ar ais go huathoibríoch chuig an linn snámha. I ndáiríre, léirigh muid conas a oibríonn Pool Ejection.

Let tús le tógáil ailtireacht

Ligeann Díshealbhú Linn Snámha, in éineacht le cumais monatóireachta Istio, duit tosú ag tógáil creata chun coimeádáin lochtacha a athsholáthar go huathoibríoch chun aga neamhfhónaimh agus teipeanna a laghdú, mura gcuirtear deireadh leis.

Tá mana ard amháin ag NASA - Failure Is Not an Option, a mheastar gurb é an t-údar stiúrthóir eitilte Gene Kranz. Is féidir é a aistriú go Rúisis mar “Ní rogha é teip,” agus is é an bhrí atá leis seo ná gur féidir gach rud a chur ag obair má tá do dhóthain toil agat. Mar sin féin, sa saol fíor, ní hamháin go dtarlaíonn teipeanna, tá siad dosheachanta, i ngach áit agus i ngach rud. Agus conas déileáil leo i gcás microservices? Is é ár dtuairim go bhfuil sé níos fearr a bheith ag brath ní ar willpower, ach ar chumais na gcoimeádán, Kubernetes, Red Hat OpenShiftAgus Istio.

Cuireann Istio, mar a scríobhamar thuas, coincheap na scoradáin chiorcaid i bhfeidhm, rud atá cruthaithe go maith sa domhan fisiceach. Agus díreach cosúil le scoradán ciorcaid leictreach a mhúchadh cuid fadhbanna de chiorcad, osclaíonn bogearraí Istio Circuit Breaker an nasc idir sruth iarratas agus coimeádán fadhbanna nuair a bhíonn rud éigin cearr leis an gcríochphointe, mar shampla, nuair a thuairteáladh an freastalaí nó nuair a thosaigh sé ag déanamh. Tóg go bog é.

Thairis sin, sa dara cás níl ach níos mó fadhbanna ann, ós rud é go n-eascraíonn coscáin coimeádán amháin, ní hamháin go bhfuil moill ar na seirbhísí a fhaigheann rochtain air agus, mar thoradh air sin, laghdaítear feidhmíocht an chórais ina iomláine, ach freisin gineann siad arís agus arís eile. iarratais ar sheirbhís atá ag rith go mall cheana féin, rud a chuireann an scéal níos measa .

Circuit Breaker go teoiriciúil

Is seachfhreastalaí é Circuit Breaker a rialaíonn sreabhadh na n-iarratas chuig críochphointe. Nuair a stopann an pointe seo ag obair nó, ag brath ar na socruithe sonraithe, má thosaíonn sé ag éirí níos moille, briseann an seachfhreastalaí an nasc leis an gcoimeádán. Déantar trácht ansin a atreorú chuig coimeádáin eile, go simplí mar gheall ar chothromú ualaigh. Fanann an nasc ar oscailt ar feadh fuinneog codlata áirithe, abair dhá nóiméad, agus ansin meastar é a bheith leath-oscailte. Cinneann iarracht ar an gcéad iarratas eile a sheoladh staid bhreise an naisc. Má tá gach rud ceart go leor leis an tseirbhís, filleann an nasc ar riocht oibre agus déantar é a dhúnadh arís. Má tá rud éigin cearr leis an tseirbhís fós, tá an nasc dícheangailte agus tá an fhuinneog codlata ath-chumasaithe. Seo an chuma atá ar léaráid staide Circuit Breaker simplithe:

Istio Circuit Breaker: coimeádáin lochtacha a dhíchumasú
Tá sé tábhachtach a thabhairt faoi deara anseo go dtarlaíonn sé seo go léir ag leibhéal ailtireacht an chórais, mar a déarfá. Mar sin, ag am éigin beidh ort d’iarratais a mhúineadh chun oibriú le Circuit Breaker, mar shampla luach réamhshocraithe a sholáthar mar fhreagra nó, más féidir, neamhaird a dhéanamh ar an tseirbhís a bheith ann. Baintear úsáid as patrún mórcheann chuige seo, ach tá sé lasmuigh de raon feidhme an ailt seo.

Circuit Breaker i gcleachtas

Mar shampla, reáchtálfaimid dhá leagan dár micrseirbhís molta ar OpenShift. Oibreoidh Leagan 1 go breá, ach in v2 cuirfimid moill isteach chun moilliú ar an bhfreastalaí a insamhladh. Chun na torthaí a fheiceáil, bain úsáid as an uirlis léigear:

siege -r 2 -c 20 -v customer-tutorial.$(minishift ip).nip.io

Istio Circuit Breaker: coimeádáin lochtacha a dhíchumasú
Dealraíonn sé go n-oibríonn gach rud, ach cén costas? Ar an gcéad amharc, tá infhaighteacht 100% againn, ach déan breathnú níos dlúithe - is é 12 soicind an t-uasré idirbhirt. Is léir gur bac é seo agus ní mór é a leathnú.

Chun seo a dhéanamh, úsáidfimid Istio chun deireadh a chur le glaonna ar choimeádáin mhoillithe. Seo an chuma atá ar an gcumraíocht chomhfhreagrach ag baint úsáide as Circuit Breaker:

Istio Circuit Breaker: coimeádáin lochtacha a dhíchumasú
Comharthaíonn an líne dheireanach leis an bparaiméadar httpMaxRequestsPerConnection gur cheart an nasc leis a dhínascadh agus tú ag iarraidh nasc eile - an dara ceann - a chruthú sa bhreis ar an gceann atá ann cheana féin. Ós rud é go n-samhlaíonn ár gcoimeádán seirbhís mhall, tiocfaidh cásanna den sórt sin chun cinn go tréimhsiúil, agus ansin cuirfidh Istio earráid 503 ar ais, ach is é seo a léireoidh an léigear:

Istio Circuit Breaker: coimeádáin lochtacha a dhíchumasú

Ceart go leor, tá Circuit Breaker againn, cad atá le teacht?

Mar sin, chuireamar múchadh uathoibríoch i bhfeidhm gan baint le cód foinse na seirbhísí féin ar chor ar bith. Ag baint úsáide as Circuit Breaker agus an nós imeachta Pool Ejection a thuairiscítear thuas, is féidir linn coimeádáin coscáin a bhaint as an linn acmhainne go dtí go dtiocfaidh siad ar ais go gnáth, agus seiceáil a stádas ag minicíocht shonraithe - inár sampla, is é seo dhá nóiméad (paraiméadar codlataWindow).

Tabhair faoi deara go bhfuil cumas feidhmchláir freagra a thabhairt ar earráid 503 fós ag leibhéal an chóid foinse. Tá go leor straitéisí ann chun Circuit Breaker a úsáid, ag brath ar an gcás.

Sa chéad phostáil eile: Labhróimid faoin rianú agus monatóireacht atá ionsuite cheana féin nó atá curtha go héasca le Istio, chomh maith le conas earráidí a thabhairt isteach sa chóras d'aon ghnó.

Foinse: will.com

Add a comment