Jou ferye yo fini epi nou tounen ak dezyèm pòs nou an nan seri Istio Service Mesh.
Sijè jodi a se Circuit Breaker, ki tradui nan jeni elektrik Ris vle di "disjoncteur sikwi", nan langaj komen - "disjoncteur sikwi". Se sèlman nan Istio machin sa a pa dekonekte yon kous kout oswa twò chaje, men resipyan defo.
Ki jan sa a ta dwe travay depreferans
Lè Kubernetes jere mikwosèvis yo, pou egzanp nan platfòm OpenShift la, yo otomatikman monte ak desann depann sou chaj la. Paske mikwosèvis yo kouri nan gous, ka gen plizyè ka nan yon mikwosèvis kontenè sou yon pwen final, ak Kubernetes pral dirije demann ak balans chaj ant yo. Ak - depreferans - tout bagay sa yo ta dwe travay parfe.
Nou sonje ke mikwosèvis yo piti ak efemèr. Efemèr, ki isit la vle di fasilite nan parèt ak disparèt, souvan souzèstime. Nesans ak lanmò yon lòt egzanp yon mikwosèvis nan yon gous se bagay ki byen espere, OpenShift ak Kubernetes okipe sa a byen, ak tout bagay ap travay byen - men ankò nan teyori.
Ki jan li vrèman travay
Koulye a, imajine ke yon egzanp espesifik nan yon mikwosèvis, se sa ki, yon veso, te vin pa ka itilize: swa li pa reponn (erè 503), oswa, sa ki pi dezagreyab, li reponn, men twò dousman. Nan lòt mo, li vin glitchy oswa li pa reponn a demann, men li pa otomatikman retire nan pisin lan. Ki sa ki ta dwe fè nan ka sa a? Pou reesye? Èske mwen ta dwe retire li nan konplo a routage? Ak ki sa "twò dousman" vle di - konbyen li nan nimewo, ak ki moun ki detèmine yo? Petèt jis bay li yon ti repo epi eseye ankò pita? Si wi, konbyen pita?
Ki sa ki ekspilsyon pisin nan Istio
Ak isit la Istio vini nan sekou a ak machin pwoteksyon Circuit Breaker li yo, ki tanporèman retire resipyan ki defo nan pisin resous routage ak balanse chaj, mete ann aplikasyon pwosedi ekspilsyon pisin lan.
Sèvi ak yon estrateji deteksyon outlier, Istio detekte gous koub ki soti nan liy epi retire yo nan pisin resous la pou yon kantite tan espesifik, yo rele yon fenèt dòmi.
Pou montre ki jan sa ap travay nan Kubernetes sou platfòm OpenShift la, ann kòmanse ak yon ekran mikrosèvis k ap travay nòmalman apati egzanp nan depo a.
Lè w pare pou yon aksidan
Anvan ou fè Pool Ejection, ou bezwen kreye yon règ routage Istio. Ann di nou vle distribye demann ant gous nan yon rapò 50/50. Anplis de sa, nou pral ogmante kantite resipyan v2 soti nan youn a de, tankou sa a:
oc scale deployment recommendation-v2 --replicas=2 -n tutorial
Koulye a, nou mete yon règ routage pou trafik distribye ant gous nan yon rapò 50/50.
Men ki rezilta règ sa a sanble:
Ou ka jwenn fòt ak lefèt ke ekran sa a se pa 50/50, men 14:9, men sou tan sitiyasyon an ap amelyore.
Fè yon glitch
Koulye a, ann enfim youn nan de resipyan v2 yo pou nou gen yon resipyan v1 ki an sante, yon veso v2 ki an sante ak yon veso v2 ki defo:
Ranje glitch la
Se konsa, nou gen yon veso ki defo, epi li lè pou ekspilsyon pisin. Sèvi ak yon konfigirasyon trè senp, nou pral eskli veso sa a ki echwe nan nenpòt plan routage pou 15 segonn nan espwa ke li pral retounen nan yon eta an sante (swa rekòmanse oswa retabli pèfòmans). Men sa konfigirasyon sa a sanble ak rezilta travay li yo:
Kòm ou ka wè, veso v2 ki echwe a pa itilize ankò pou demann routage paske li te retire nan pisin lan. Men, apre 15 segonn li pral otomatikman retounen nan pisin lan. Aktyèlman, nou jis te montre kouman Pool Ejection travay.
Ann kòmanse bati achitekti
Pool Ejection, konbine avèk kapasite siveyans Istio a, pèmèt ou kòmanse bati yon kad pou ranplase otomatikman veso ki defo pou diminye, si se pa elimine, D 'ak echèk.
NASA gen yon sèl deviz byen fò - Echèk se pa yon opsyon, otè a ki konsidere kòm direktè vòl la.
Istio, jan nou te ekri pi wo a, aplike konsèp disjoncteurs, ki te pwouve tèt li byen nan mond fizik la. Epi menm jan yon disjoncteurs elèktrik fèmen yon seksyon pwoblèm nan yon sikwi, Istio a lojisyèl Circuit Breaker ouvè koneksyon ki genyen ant yon kouran demann ak yon veso pwoblèm lè gen yon bagay ki mal ak pwen final la, pou egzanp, lè sèvè a te fè aksidan oswa te kòmanse. ale dousman.
Anplis, nan dezyèm ka a gen sèlman plis pwoblèm, depi fren yo nan yon sèl veso pa sèlman lakòz yon kaskad nan reta nan sèvis yo jwenn aksè nan li epi, kòm yon rezilta, diminye pèfòmans nan sistèm nan kòm yon antye, men tou, jenere repete. demann nan yon sèvis ki deja ralanti, ki sèlman agrave sitiyasyon an.
Circuit Breaker nan teyori
Circuit Breaker se yon prokurasyon ki kontwole koule nan demann nan yon pwen final. Lè pwen sa a sispann travay oswa, depann sou anviwònman yo espesifye, kòmanse ralanti, prokurasyon an kraze koneksyon an ak veso a. Lè sa a, trafik yo redireksyon nan lòt resipyan, tou senpleman akòz balans chaj. Koneksyon an rete louvri pou yon fenèt dòmi bay, di de minit, ak Lè sa a, yo konsidere kòm mwatye louvri. Yon tantativ pou voye demann kap vini an detèmine eta a plis nan koneksyon an. Si tout bagay anfòm ak sèvis la, koneksyon an retounen nan kondisyon travay epi ankò vin fèmen. Si gen yon bagay mal toujou ak sèvis la, koneksyon an dekonekte epi fenèt dòmi an re-pèmèt. Men ki jan yon dyagram eta disjoncteurs senplifye sanble:
Li enpòtan sonje isit la ke tout bagay sa yo rive nan nivo a, se konsa pale, achitekti sistèm. Se konsa, nan kèk pwen ou pral oblije anseye aplikasyon ou yo travay ak Circuit Breaker, tankou bay yon valè default nan repons oswa, si sa posib, inyore egzistans lan nan sèvis la. Yo itilize yon modèl bulkhead pou sa, men li depase sijè ki abòde lan atik sa a.
Circuit Breaker nan pratik
Pou egzanp, nou pral kouri de vèsyon mikwosèvis rekòmandasyon nou an sou OpenShift. Vèsyon 1 ap travay byen, men nan v2 nou pral bati nan yon reta pou simulation ralentissement sou sèvè a. Pou wè rezilta yo, sèvi ak zouti a
siege -r 2 -c 20 -v customer-tutorial.$(minishift ip).nip.io
Tout bagay sanble travay, men a ki pri? Nan premye gade, nou gen 100% disponiblite, men pran yon gade pi pre - dire maksimòm tranzaksyon an se otan ke 12 segonn. Sa a se klèman yon kou boutèy e li bezwen elaji.
Pou fè sa, nou pral sèvi ak Istio pou elimine apèl pou ralanti veso yo. Men sa konfigirasyon ki koresponn lan sanble lè l sèvi avèk Circuit Breaker:
Dènye liy lan ak paramèt httpMaxRequestsPerConnection siyal ke koneksyon an ta dwe dekonekte lè w ap eseye kreye yon lòt - yon dezyèm - koneksyon anplis youn ki deja egziste. Depi veso nou an simule yon sèvis ralanti, sitiyasyon sa yo pral parèt detanzantan, ak Lè sa a, Istio pral retounen yon erè 503, men sa a se syèj la pral montre:
OK, nou gen Circuit Breaker, kisa kap vini?
Se konsa, nou aplike fèmen otomatik san yo pa manyen kòd sous sèvis yo tèt yo ditou. Sèvi ak Circuit Breaker ak pwosedi ekspilsyon pisin ki dekri pi wo a, nou ka retire veso fren yo nan pisin resous la jiskaske yo retounen nan nòmal, epi tcheke estati yo nan yon frekans espesifye - nan egzanp nou an, sa a se de minit (paramèt sleepWindow).
Remake byen ke kapasite yon aplikasyon pou reponn a yon erè 503 toujou fikse nan nivo kòd sous la. Gen anpil estrateji pou itilize Circuit Breaker, tou depann de sitiyasyon an.
Nan pwochen pòs la: Nou pral pale sou trase a ak siveyans ki deja entegre oswa fasil ajoute nan Istio, osi byen ke fason yo entansyonèlman prezante erè nan sistèm nan.
Sous: www.habr.com