Imaginea de mai sus este versiunea în tonuri de gri a Tencent, utilizatorii obișnuiți o pot accesa, serverul Alibaba Cloud nu poate fi accesat, ping-ul este normal, iar rezoluția IP-ului este de asemenea normală
Este pur și simplu inaccesibil, se vede că Tencent preferă să se joace și cu lansarea în tonuri de gri...
1. De ce lansarea în tonuri de gri
- Serviciile de internet se schimbă frecvent, iar ciclurile de lansare sunt scurte. Viteza și calitatea sunt întotdeauna greu de combinat.
- Publicarea în scară de gri poate reduce riscul publicării și poate diminua amploarea impactului.
- Reducerea dependenței de testare și reducerea costurilor de construcție a datelor pentru auto-testarea offline.
- Este convenabil să monitorizezi centralizat jurnalele și să le publici integral. Din cauza rolului echilibrării încărcării la fiecare strat, este dificil să urmărești o legătură completă a apelurilor.
- Poți folosi conturi de test Grayscale, apoi conturi reale de utilizator în grayscale după ce testul trece pentru a reduce și mai mult riscul și impactul publicării.
- O revenire ușoară.
Probleme care nu pot fi rezolvate prin lansări în tonuri de gri
Trebuie subliniat că "impactul tolerabil" menționat mai sus trebuie să fie recuperabil, de exemplu, API-ul nu poate fi apelat pentru o perioadă de timp, dar după reparare poate fi apelat cu succes. Pierderea sau distrugerea permanentă a datelor utilizatorilor (cum ar fi informații despre produse, comenzi etc.) este intolerabilă. Prin urmare, este responsabilitatea arhitecților întreprinderilor de Internet să repare datele pierdute de utilizator la o stare recentă (de exemplu acum o oră până acum o săptămână) prin intervenție manuală în cazul pierderii datelor utilizatorilor cauzate de probleme ale sistemului de producție (cum ar fi backup-ul regulat al datelor utilizatorului, scrierea jurnalelor de operațiuni etc.).
SFATURI Testează mai întâi politica de nuanțe de gri a contului tău pentru a reduce riscul de a deteriora sau pierde datele utilizatorilor reali.
2. Ce efect este așteptat? Indiferent de schimbare, dorim ca cereri specifice să fie direcționate către versiunea noastră a modificării (versiunea în tonuri de gri) pentru observare și validare.
3. Strategia în scară de gri De fapt, este ceea ce cereri ar trebui direcționate către versiunea noastră în tonuri de gri (mașina în tonuri de gri). Acest lucru este adesea strâns legat de afaceri. De exemplu, pentru API-uri, există în general următoarele cerințe:
Utilizatori specifici (de exemplu, conturi de test) Aplicații specifice (de exemplu, aplicații de test sau aplicații partenere) Module și interfețe specifice (doar unele interfețe necesită tonuri de gri, care este în general o modificare a containerelor API, iar unele API-uri care nu sunt foarte importante sunt folosite pentru testarea în tonuri de gri). ) Mașină specifică (unele IP-uri de cerere sunt redirecționate către mașina în tonuri de gri) 4. Discuție despre schemele în tonuri de gri Soluția 1: Nivelul codului este judecat după steagul convenit, iar vechiul și noul sunt schimbate dinamic - abordarea Amazon
Implementare:
Îngroapă comutatorul în cod, fă o judecată if-else și setează comutatorul pe activ pentru mașinile care necesită tonuri de gri, altfel este dezactivat. Există două versiuni pentru fiecare lansare.
merit
Rollback rapid, nu e nevoie să republici și să repornești sistemul. Neajuns
Fii înclinat spre cod. Logica ramificată aduce complexitate. Această metodă a fost folosită de autor când eram în Alibaba, schimbând baza de date a bunurilor de la Oracle la MySQL și folosind o variabilă de stare pentru control. Astfel se obține efectul unei migrații line.
Opțiunea 2: Mașina pre-lansare - Practica Alibaba
De fapt, nu este în adevăratul sens al tonului de gri. Pentru că această mașină pre-lansare este un IP intern și nu are serviciu extern. Legarea domeniului este necesară pentru verificare. Dar datele sunt complet online. Așadar, este practic o abordare simplă pentru unii utilizatori specifici de Scală de Gri (utilizatori care au acces la mașina de scară de gri, utilizatori de testare internă). De fapt, există o abordare similară pe partea de API, care este mediul nostru Gamma, și oferim și numele de domeniu al mașinii Gamma pentru a facilita cooperarea utilizatorilor externi cooperanți cu testarea.
merit
Simplu Neajuns
Risipește o mașină (aceasta poate fi pusă în mediul de producție după finalizarea pre-lansării și eliminată din nginx în timpul pre-lansării, dar este necesar suport O&M.) ) Nu suficient de flexibil Serviciile IDL pot fi folosite doar pentru mașinile de tip strat de acces, iar serviciile IDL trebuie luate în considerare separat. Opțiunea 3: Implementarea SET
1. Desfășurare izolată în funcție de servicii
De exemplu, în practica actuală a containerelor API, granularitatea implementării poate fi atinsă până la nivelul API-ului, iar front-end-ul se înaintează conform nginx. De exemplu:
Container API Micro Shopping: api.weigou.qq.com Pat API Container:api.paipai.com Yixun API Container: api.yixun.com API de cumpărături online Container:api.buy.qq.com Cele de mai sus reprezintă o implementare izolată la nivel de afaceri mari. De asemenea, poate fi rafinat la nivel de modul, cum ar fi API-ul comerțului electronic cu servicii virtuale, care este un sub-modul de afaceri aflat sub Paipai, dar deoarece sunt conectate la WeChat, numărul vizitelor a crescut semnificativ, pentru a evita afectarea celorlalte afaceri ale Paipai, iar pentru a evita să fie afectate de alte afaceri, API-ul de aici este pentru a implementa două mașini separat pentru acestea, nginx poate fi configurat pentru a consuma accesul la API-ul virtual:
Container API virtual: http://api.paipai.com/v2/virbiz
Astfel, când lansăm o versiune, putem alege mai întâi Yixun cu cel mai mic volum de afaceri de publicat, apoi să observăm că nu există nicio problemă înainte de a folosi toate celelalte platforme.
2. Implementare prin izolare a utilizatorului
Aceasta nu este foarte potrivită pentru platforme deschise, dar este foarte potrivită pentru scenarii de aplicații precum SNS. De exemplu, sistemul QQ este împărțit în mai multe seturi în funcție de segmentele de număr de utilizatori, iar fiecare set conține 100 de milioane de numere consecutive. Presupunând că cel mai recent număr QQ este aproape de 1 miliard, există în total 10 seturi (de la setul 1 la setul 10). Astfel, poți alege unul dintre SET-uri de publicat de fiecare dată, iar QQ de nivel înalt nu este adesea un utilizator foarte important, așa că SET10 va fi lansat primul.
merit
Implementare izolată cu impact minim pe toate liniile de business. Suportă automat publicarea în tonuri de gri. Neajuns
Granularitatea scalei de gri depinde de granularitatea desfășurării izolate, care este în general mare. Risipă de mașini comparativ cu implementarea centralizată. Versiunile fiecărei linii de afaceri pot fi inconsistente, ceea ce nu favorizează managementul unificat. Există anumite costuri de implementare și implementare Schema 4: Rutarea dinamică
Metodă: Folosiți o politică în tonuri de gri care poate fi configurată flexibil pentru a influența comportamentul balansului de încărcare și pentru a permite returnarea IP-ului și portului serviciului în scară de gri conform politicii în scală de gri.
Potrivit pentru servicii în tonuri de gri cu IDL în back-office.
merit
Flexibil, controlabil. Neajuns
Centrul actual de configurare și L5 în sine nu iau în considerare politici de rutare specificate și nu sunt scalabile, așa că trebuie dezvoltate în afara acestora. Sursele de metadate ale API-urilor sunt relativ dispersate, iar în prezent metadatele API și IDL, nivelurile API și limitele de frecvență sunt distribuite între surse de date diferite, iar acum este necesară adăugarea unei surse de date de rutare în scală de gri.
În general, există trei moduri de a publica nginx+lua în tonuri de gri: nginx este distribuit conform cookie-urilor, iar nginx este atribuit în funcție de greutate:
nginx+lua se distinge în funcție de adresa IP a vizitatorului, deoarece compania exportă o adresă IP, iar site-ul va fi accesat fie la versiunea veche, fie la cea nouă, care nu este potrivită pentru această metodă Nginx asignează greutăți pe baza ponderilor, ceea ce este simplu de implementat și poate fi încercat nginx se împarte pe baza cookie-urilor, iar grayscale publică pe baza utilizatorilor
|