Kev kuaj A / B yog siv nyob rau hauv cov ntaub ntawv uas muaj ob versions ntawm ib daim ntawv thov (feem ntau lawv yog visually txawv) thiab peb tsis 100% paub tseeb tias ib tug yuav txhim kho cov neeg siv. Yog li ntawd, peb khiav ob qho tib si ib txhij thiab sau metrics.
Txhawm rau xa qhov thib ob version ntawm frontend, yuav tsum tau ua kom pom qhov kev sim A / B, khiav cov lus txib hauv qab no:
$ kubectl apply -f resource-manifests/kube/ab-testing/sa-frontend-green-deployment.yaml
deployment.extensions/sa-frontend-green created
Kev xa tawm manifest rau ntsuab version txawv nyob rau hauv ob qhov chaw:
Daim duab yog raws li qhov sib txawv tag - istio-green,
Pods muaj ib daim ntawv lo version: green.
Vim tias ob qho kev xa tawm muaj daim ntawv lo app: sa-frontend, thov routed los ntawm kev pabcuam virtual sa-external-services rau kev pabcuam sa-frontend, yuav raug xa rov qab mus rau tag nrho nws cov xwm txheej thiab cov khoom thauj yuav raug faib los ntawm round-robin algorithm, uas yuav ua rau cov xwm txheej hauv qab no:
Cov ntaub ntawv thov tsis pom
Cov ntaub ntawv no tsis pom vim lawv muaj npe sib txawv hauv ntau hom ntawv thov. Cia peb nco ntsoov qhov no:
Qhov no txhais tau tias index.html, thov ib version ntawm cov ntaub ntawv zoo li qub, tuaj yeem xa los ntawm cov khoom sib npaug rau cov pods uas muaj qhov sib txawv, qhov twg, vim li cas, cov ntaub ntawv zoo li no tsis muaj nyob. Yog li ntawd, txhawm rau kom daim ntawv thov ua haujlwm, peb yuav tsum tau teeb tsa kev txwv: "tib lub version ntawm daim ntawv thov uas tau txais kev pabcuam index.html yuav tsum ua raws li kev thov tom ntej".
Peb yuav mus txog qhov ntawd nrog kev sib npaug hash-raws li load ntsuas (Kev sib xyaw Hash Loadbalancing)... Hauv qhov no kev thov los ntawm tib tus neeg siv khoom raug xa mus rau tib lub backend piv txwv, uas yog siv cov cuab yeej ua ntej - piv txwv li HTTP header. Ua tiav siv DestinationRules.
Txoj Cai Destination
Tom qab VirtualService xa ib daim ntawv thov mus rau qhov kev pabcuam uas xav tau, siv DestinationRules peb tuaj yeem txhais cov cai uas yuav raug siv rau cov tsheb thauj mus los rau qhov kev pabcuam no:
Kev tswj hwm tsheb nrog Istio cov peev txheej
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Qhov cuam tshuam ntawm Istio cov peev txheej ntawm kev khiav tsheb hauv network tau nthuav tawm ntawm no hauv txoj hauv kev uas yooj yim to taub. Kom meej meej, qhov kev txiav txim siab uas yuav xa qhov kev thov mus rau yog ua los ntawm Tus Neeg Sawv Cev hauv Ingress Gateway tau teeb tsa hauv CRD.
Nrog rau Txoj Cai Destination, peb tuaj yeem teeb tsa cov khoom sib npaug kom siv cov hashes zoo ib yam thiab xyuas kom meej tias cov kev pabcuam tib yam teb rau tib tus neeg siv. Cov kev teeb tsa hauv qab no tso cai rau koj ua tiav qhov no (destinationrule-sa-frontend.yaml):
Ua ntej kawm VirtualService ntxiv, cia peb tshem tawm "ntsuab version" ntawm daim ntawv thov thiab cov kev coj ua ntawm kev coj mus los los ntawm kev khiav cov lus txib hauv qab no:
Daim ntawv lo (label) txhais cov key-value khub uas piv txwv yuav tsum sib phim los ua ib feem ntawm cov subset.
Siv cov configuration nrog cov lus txib hauv qab no:
$ kubectl apply -f resource-manifests/istio/shadowing/sa-logic-subsets-destinationrule.yaml
destinationrule.networking.istio.io/sa-logic created
Tam sim no hais tias cov subsets tau txhais, peb tuaj yeem txav mus rau thiab teeb tsa VirtualService los siv cov cai rau kev thov rau sa-logic kom lawv:
... thiab peb yuav pom tam sim ntawd tias qee qhov kev thov ua rau ua tsis tiav:
$ while true; do
curl -i http://$EXTERNAL_IP/sentiment
-H "Content-type: application/json"
-d '{"sentence": "I love yogobella"}'
--silent -w "Time: %{time_total}s t Status: %{http_code}n"
-o /dev/null; sleep .1; done
Time: 0.153075s Status: 200
Time: 0.137581s Status: 200
Time: 0.139345s Status: 200
Time: 30.291806s Status: 500
VirtualServices pab kom canary rollouts: Hauv qhov no, peb tau txo qis qhov cuam tshuam ntawm cov teeb meem rau 20% ntawm cov neeg siv hauv paus. Zoo kawg! Tam sim no, nyob rau hauv txhua rooj plaub thaum peb tsis paub meej ntawm peb cov cai (nyob rau hauv lwm yam lus - ib txwm ...), peb yuav siv mirroring thiab canary rollouts.
Timeouts thiab rov sim dua
Tab sis kab laum tsis tas yuav xaus rau hauv cov cai. Hauv daim ntawv teev npe "8 Cov kev xav tsis zoo txog kev faib khoom siv"Hauv thawj qhov chaw yog qhov kev ntseeg yuam kev tias "lub network yog kev ntseeg siab." Hauv kev muaj tiag lub network tsis ntseeg tau, thiab vim li no peb xav tau sijhawm (lub sijhawm) thiab rov sim dua (retry).
Rau kev ua qauv qhia peb yuav txuas ntxiv siv tib qhov teeb meem version sa-logic (buggy), thiab peb yuav simulate lub unreliability ntawm lub network nrog random tsis ua hauj lwm.
Cia peb cov kev pabcuam nrog cov kab laum muaj 1/3 lub sijhawm ntawm kev siv sijhawm ntev los teb, 1/3 txoj hauv kev xaus nrog Internal Server yuam kev, thiab 1/3 txoj hauv kev ua tiav rov qab nplooj ntawv.
Txhawm rau txo qhov cuam tshuam ntawm cov teeb meem no thiab ua kom lub neej zoo dua rau cov neeg siv, peb tuaj yeem:
ntxiv ib lub sijhawm yog tias qhov kev pabcuam siv sijhawm ntev dua 8 vib nas this los teb,
Lub sijhawm rau kev thov yog teem rau 8 vib nas this;
Kev thov rov ua dua 3 zaug;
Thiab txhua qhov kev sim raug suav tias ua tsis tiav yog tias lub sijhawm teb dhau 3 vib nas this.
Qhov no yog qhov kev ua kom zoo dua vim tias tus neeg siv yuav tsis tas tos ntau dua 8 vib nas this thiab peb yuav ua peb qhov kev sim tshiab kom tau txais cov lus teb thaum tsis ua tiav, ua rau kom muaj kev vam meej.
Peb tab tom tham txog ob tus qauv tseem ceeb hauv microservice architecture uas tso cai rau koj kom ua tiav tus kheej rov qab (kev kho tus kheej) cov kev pab cuam.
Circuit Court Breaker("circuit breaker") siv los txiav cov lus thov tuaj rau qhov piv txwv ntawm qhov kev pabcuam uas suav tias tsis zoo thiab rov qab los thaum cov neeg thov kev thov raug xa rov qab mus rau qhov kev noj qab haus huv ntawm cov kev pabcuam ntawd (uas ua rau feem pua ββββntawm cov lus teb ua tiav). (Ceeb Toom: Cov lus piav qhia ntxaws ntxiv ntawm tus qauv tuaj yeem pom, piv txwv li, no.)
Bulkhead("kev faib") cais cov kev pabcuam tsis ua haujlwm los ntawm kev cuam tshuam rau tag nrho cov system. Piv txwv li, Kev Pabcuam B tau tawg thiab lwm qhov kev pabcuam (Kev Pabcuam B tus neeg siv khoom) ua rau kev thov rau Service B, ua rau nws tso nws lub pas dej thiab tsis tuaj yeem pabcuam lwm yam kev thov (txawm tias lawv tsis yog los ntawm Service B). (Ceeb Toom: Cov lus piav qhia ntxaws ntxiv ntawm tus qauv tuaj yeem pom, piv txwv li, no.)
Kuv yuav tshem tawm cov ntsiab lus ntawm kev siv cov qauv no vim tias lawv yooj yim nrhiav hauv cov ntaub ntawv raug cai, thiab kuv kuj xav qhia txog kev lees paub thiab kev tso cai, uas yuav tau tham hauv tshooj tom ntej ntawm tsab xov xwm.