Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 16269|Antwoord: 0

Grijstintenrelease van internetproductrelease

[Link kopiëren]
Geplaatst op 09-03-2017 15:48:27 | | | |


De bovenstaande afbeelding is de grayscale-release van Tencent, gewone gebruikers kunnen erbij komen, de Alibaba Cloudserver is niet toegankelijk, de ping is normaal en de resolutie-IP is ook normaal

Het is gewoon ontoegankelijk, het is te zien dat Tencent ook graag speelt met grijswaarden-releases...

1. Waarom Grayscale Release
  • Internetdiensten veranderen vaak en de releasecycli zijn kort. Snelheid en kwaliteit zijn altijd moeilijk te combineren.
  • Grijswaardenpublicatie kan het risico van publiceren verminderen en de omvang van de impact verkleinen.
  • Verminder de afhankelijkheid van testen en verlaag de kosten van dataconstructie voor offline zelftesten.
  • Het is handig om logs centraal te monitoren en volledig te publiceren. Door de rol van load balancing op elke laag is het moeilijk om een volledige oproepverbinding te volgen.
  • Je kunt grijswaarden testaccounts gebruiken, en daarna echte gebruikersaccounts grijs tonen nadat het testaccount is geslaagd om het risico en de impact van publicatie verder te verminderen.
  • Makkelijk terugrollen.
Problemen die niet opgelost kunnen worden door grijswaardenreleases

Het moet worden benadrukt dat de hierboven genoemde "tolerable impact" herstelbaar moet zijn; bijvoorbeeld, de API kan een bepaalde periode niet worden aangeroepen, maar na reparatie kan deze succesvol worden aangeroepen. Het permanente verlies of vernietigen van gebruikersgegevens (zoals productinformatie, bestelgegevens, enz.) is ondraaglijk. Daarom is het de verantwoordelijkheid van de architecten van internetondernemingen om de verloren gebruikersgegevens te herstellen naar een recente staat (zoals een uur geleden tot een week geleden) door handmatige interventie in het geval van verlies van gebruikersgegevens door productiesysteemproblemen (zoals regelmatige back-ups van gebruikersgegevens, het schrijven van operatielogboeken, enz.).

TIPS Test eerst het grijswaardenbeleid van je account om het risico te verminderen dat je de gegevens van echte gebruikers beschadigt of verliest.

2. Welk effect wordt verwacht?
Ongeacht de wijziging willen we dat specifieke verzoeken worden doorgestuurd naar onze versie van de wijziging (grijswaardige versie) voor observatie en validatie.

3. Grijstintenstrategie
In feite is het de vraag die naar onze grijstintenversie (grijstintenmachine) gerouteerd moet worden. Dit hangt vaak sterk samen met het bedrijfsleven. Voor API's zijn er bijvoorbeeld doorgaans de volgende vereisten:

Specifieke gebruikers (bijv. testaccounts)
Specifieke apps (bijvoorbeeld testapps of partnerapps)
Specifieke modules en interfaces (alleen sommige interfaces hebben grijswaarden nodig, wat doorgaans een aanpassing is van API-containers, en sommige API's die niet erg belangrijk zijn, worden gebruikt voor grijswaardentesten). )
Specifieke machine (sommige verzoek-IP's worden doorgestuurd naar de grijstintenmachine)
4. Bespreking van grijswaardenschema's
Oplossing 1: Het codeniveau wordt beoordeeld aan de hand van de afgesproken vlag, en oud en nieuw worden dynamisch omgewisseld - Amazons aanpak

Implementatie:

Begraven de schakelaar in de code, maak een of-else-oordeel en zet de schakelaar aan voor machines die grijswaarden vereisen, anders staat hij uit. Er zijn twee versies voor elke release.

verdienen

Snelle rollback, geen noodzaak om het systeem opnieuw te publiceren en opnieuw op te starten.
gebrek

Wees geneigd naar de code.
Vertakkende logica brengt complexiteit met zich mee.
Deze methode werd door de auteur gebruikt toen ik bij Alibaba werkte, waarbij ik de database van goederen van Oracle naar MySQL overschakelde en een statusvariabele gebruikte voor controle. Hierdoor wordt het effect van een soepele migratie bereikt.

Optie 2: Pre-release machine - Alibaba's praktijk

In feite is dit geen grijstinten in de ware zin. Omdat deze pre-release machine een interne IP is en geen externe dienst heeft. Domeinbinding is vereist voor verificatie. Maar de data is volledig online. Het is dus in wezen een eenvoudige aanpak voor sommige specifieke gebruikers van grijswaarden (gebruikers die toegang hebben tot de grijswaardenmachine, interne testgebruikers). Er is zelfs een vergelijkbare aanpak aan de API-kant, namelijk onze Gamma-omgeving, en we geven ook de domeinnaam van de Gamma-machine om externe coöperatieve gebruikers te helpen samen te werken aan tests.

verdienen

Simpel
gebrek

Waste a machine (dit kan na de pre-release in de productieomgeving worden geplaatst en tijdens de pre-release uit nginx worden verwijderd, maar O&M-ondersteuning is vereist). )
Niet flexibel genoeg
IDL-diensten kunnen alleen worden gebruikt voor access layer-machines, en IDL-services moeten apart worden beschouwd.
Optie 3: SET-uitrol

1. Inzet in isolatie volgens diensten

Bijvoorbeeld, in de huidige praktijk van API-containers kan de granulariteit van de implementatie worden bereikt tot API-niveau, en de front-end forwards volgens nginx. Zoals wat:

Micro Shopping API Container: api.weigou.qq.com
Pat API Container:api.paipai.com
Yixun API Container: api.yixun.com
Online winkel-API Container:api.buy.qq.com
Bovenstaande is een geïsoleerde implementatie op het niveau van grote bedrijven. Het kan ook verder worden verfijnd tot moduleniveau, zoals de API van virtuele dienst e-commerce, een subbedrijfsmodule die onder Paipai hangt, maar omdat ze verbonden zijn met WeChat, is het aantal bezoeken aanzienlijk toegenomen, om te voorkomen dat Paipai andere bedrijven beïnvloedt worden, en om te voorkomen dat andere bedrijven worden beïnvloed, is de API hier bedoeld om twee machines apart voor hen uit te rolden; nginx kan worden geconfigureerd om de virtuele API-toegang te onttrekken:

Virtuele API-container: http://api.paipai.com/v2/virbiz

Op deze manier kunnen we, wanneer we een versie uitbrengen, eerst Yixun kiezen met het kleinste zakelijke volume om te publiceren, en vervolgens observeren dat er geen probleem is voordat we alle andere platforms gebruiken.

2. Deployen door gebruikersisolatie

Dit is niet erg geschikt voor open platforms, maar wel zeer geschikt voor toepassingsscenario's zoals SNS. Het QQ-systeem is bijvoorbeeld verdeeld in verschillende sets volgens gebruikersnummersegmenten, en elke set bevat 100 miljoen opeenvolgende nummers. Aangenomen dat het laatste QQ-getal dicht bij 1 miljard ligt, zijn er in totaal 10 verzamelingen (Set 1 tot Set 10). Op deze manier kun je telkens één van de SETS kiezen om te publiceren, en high-level QQ is vaak geen erg belangrijke gebruiker, dus wordt SET10 als eerste uitgebracht.

verdienen

Geïsoleerde implementatie met minimale impact over bedrijfslijnen heen. Automatisch ondersteuning voor grijswaardenpublicatie.
gebrek

De granulariteit van grijstinten hangt af van de granulariteit van de geïsoleerde deployment, die over het algemeen groot is.
Verspilling van machines vergeleken met gecentraliseerde implementatie.
De versies van elke businesslijn kunnen inconsistent zijn, wat niet bevorderlijk is voor een uniforme beheer.
Er zijn bepaalde implementatie- en implementatiekosten
Schema 4: Dynamische routering

Methode: Gebruik een grijswaardenbeleid dat flexibel kan worden geconfigureerd om het gedrag van de load balance te beïnvloeden en het toe te staan het IP en de poort van de grijswaardendienst terug te geven volgens het grijswaardenbeleid.

Geschikt voor servicegrijswaarden met backoffice IDL.

verdienen

Flexibel, beheersbaar.
gebrek

Het huidige configuratiecentrum en L5 zelf houden geen rekening met gespecificeerde routeringsbeleid, en zijn niet schaalbaar, dus ze moeten buiten deze regels worden ontwikkeld.
De metadatabronnen van API's zijn relatief verspreid, en momenteel zijn API- en IDL-metadata, API-niveaus en frequentielimieten verspreid over verschillende databronnen, waardoor het nu nodig is om een grijswaardenrouteringsdatabron toe te voegen.




Er zijn over het algemeen drie manieren om grijswaarden nginx+lua te publiceren, nginx wordt verdeeld volgens cookies, en nginx wordt toegewezen op basis van gewicht:
nginx+lua maakt onderscheid op basis van het IP-adres van de bezoeker, omdat het bedrijf een IP-adres exporteert en de website wordt benaderd met zowel de oude als de nieuwe versie, die niet geschikt is voor deze methode
nginx wijst gewichten toe op basis van gewichten, wat eenvoudig te implementeren is en geprobeerd kan worden
nginx splitst op basis van cookies, en grayscale publiceert op basis van gebruikers





Vorig:Javascrip{filter}t window.print() stelt de printstijl en inhoud in
Volgend:Laten we het hebben over grijstintenpublicatie en monitoring van achtergronddiensten
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com