Yukarıdaki resim Tencent'in gri tonlu sürümüdür, sıradan kullanıcılar erişebilir, Alibaba Cloud sunucusuna erişilemiyor, ping normal ve çözünürlük IP de normal
Sadece erişilemez, Tencent'in gri tonlu sürümlerle oynamayı da sevdiği görülebiliyor...
1. Neden Gray Tonlu Sürüm
- İnternet servisleri sık sık değişir ve sürüm döngüleri kısa olur. Hız ve kaliteyi birleştirmek her zaman zordur.
- Gri tonlu yayıncılık, yayın riskini azaltabilir ve etki kapsamını azaltabilir.
- Çevrimdışı kendi kendine test için test bağımlılığını azaltın ve veri oluşturma maliyetini azaltın.
- Logları merkezi olarak izlemek ve tam olarak yayımlamak kullanışlıdır; Her katmanda yük dengelemenin rolü nedeniyle, tam bir çağrı bağlantısını takip etmek zordur.
- Gri Tonlu test hesaplarını kullanabilir, ardından test hesabı geçtikten sonra gerçek kullanıcı hesaplarını gri tonlama kullanarak yayıncılığın riskini ve etkisini daha da azaltabilirsiniz.
- Kolay geri dönüş.
Gri tonlu sürümlerle çözülemeyen sorunlar
Yukarıda bahsedilen "tolere edilebilir etki"nin geri alınabilir olması gerektiği vurgulanmalıdır; örneğin, API belirli bir süre çağrılamıyor, ancak onarımdan sonra başarılı şekilde çağrılabilir. Kullanıcı verilerinin (ürün bilgisi, sipariş bilgileri vb.) kalıcı olarak kaybedilmesi veya yok edilmesi katlanılamazdır. Bu nedenle, İnternet işletmelerinin mimarlarının, üretim sistemi bozuklukları (örneğin, kullanıcı verilerinin düzenli yedeklemesi, işlem günlükleri yazma vb.) nedeniyle kullanıcı verilerinin kaybı durumunda manuel müdahaleyle (örneğin bir saat ya da bir hafta önce) son haline getirmek sorumluluğudur.
İPUÇLARI Gerçek kullanıcıların verilerine zarar verme veya kaybetme riskini azaltmak için önce hesabınızın gri ton politikasını test edin.
2. Hangi etki bekleniyor? Değişiklik ne olursa olsun, belirli isteklerin gözlem ve doğrulama için bizim versiyonumuza (gri tonlu versiyon) yönlendirilmesini istiyoruz.
3. Gri tonlama stratejisi Aslında, taleplerin gri tonlu versiyonumuza (gri tonlama makinesi) yönlendirilmesi gereken şeydir. Bu genellikle iş dünyasıyla güçlü şekilde ilişkilidir. Örneğin, API'ler için genellikle aşağıdaki gereksinimler vardır:
Belirli kullanıcılar (örneğin, test hesapları) Belirli uygulamalar (örneğin, test uygulamaları veya partner uygulamaları) Belirli modüller ve arayüzler (sadece bazı arayüzler gri tonlama gerektirir, bu genellikle API konteynerlerinin bir modifikasiyasıdır ve çok önemli olmayan bazı API'ler gri tonlama testi için kullanılır.) ) Belirli makine (bazı istek IP'leri gri tonlu makineye iletilir) 4. Gri tonlama şemalarının tartışması Çözüm 1: Kod seviyesi üzerinde anlaşılan bayrakla değerlendirilir ve eski ile yeni dinamik olarak değiştirilir - Amazon'un yaklaşımı
Uygulama:
Anahtarı kodun içine göm, if-else kararı ver ve gri tonlama gerektiren makineler için anahtarı açık konuma getir, aksi takdirde kapalı olur. Her sürüm için iki versiyon vardır.
liyakat
Hızlı geri dönüş, sistemi yeniden yayınlayıp başlatmaya gerek yok. Eksiklik
Kod yazmaya eğilimli ol. Dallanan mantık karmaşıklık getirir. Bu yöntem, Alibaba'dayken yazar tarafından kullanıldı; mal veritabanını Oracle'dan MySql'ye geçirirken ve kontrol için bir durum değişkeni kullandım. Böylece sorunsuz göç etkisi elde edilir.
Seçenek 2: Ön sürüm makinesi - Alibaba'nın uygulaması
Aslında, bu gerçek anlamda gri tonlu değil. Çünkü bu ön sürüm makinesi dahili bir IP ve harici bir hizmeti yoktur. Doğrulama için alan bağlaması gereklidir. Ama veriler tamamen çevrimiçi. Yani temelde bazı belirli Grayscale kullanıcıları (gri tonlama makinesine erişimi olan kullanıcılar, dahili test kullanıcıları) için basit bir yaklaşımdır. Aslında, API tarafında da benzer bir yaklaşım var; bu Gamma ortamımızdır ve ayrıca dış işbirlikçi kullanıcıların testle işbirliği yapmasını kolaylaştırmak için Gamma makinesinin alan adını da sağlıyoruz.
liyakat
Basit Eksiklik
Bir makineyi boşa harcamak (bu, ön sürüm tamamlandıktan sonra üretim ortamına konabilir ve ön sürüm sırasında nginx'ten çıkarılabilir, ancak O&M desteği gereklidir.) ) Yeterince esnek değil IDL servisleri yalnızca erişim katmanı makineleri için kullanılabilir ve IDL servisleri ayrı olarak değerlendirilmelidir. Seçenek 3: SET dağıtımı
1. Hizmetlere göre izole olarak konuşlandırılın
Örneğin, mevcut API konteyner uygulamasında, dağıtımın detaylılığı API seviyesine ulaşılabilir ve ön uç önü nginx'e göre yönlendirilebilir. Mesela ne:
Mikro Alışveriş API Konteyneri: api.weigou.qq.com Pat API Container:api.paipai.com Yixun API Konteyneri: api.yixun.com Online alışveriş API Container:api.buy.qq.com Yukarıdakiler, büyük işletmeler düzeyinde izole bir dağıtımdır. Ayrıca modül seviyesine de geliştirilebilir; örneğin sanal hizmet e-ticaretinin API'si, Paipai'nin altında asılı bir alt iş modülüdür, ancak WeChat'e bağlı oldukları için ziyaret sayısı önemli ölçüde artmıştır; Paipai'nin diğer işletmelerini etkilememek ve diğer işletmelerden etkilenmemek için API, burada iki makineyi ayrı dağıtmak için tasarlanmıştır; nginx sanal API erişimini tüketecek şekilde yapılandırılabilir:
Sanal API Konteyneri: http://api.paipai.com/v2/virbiz
Bu şekilde, bir sürüm yayımladığımızda, önce en az iş hacmine sahip Yixun'u yayınlayabiliyoruz ve ardından diğer tüm platformları kullanmadan önce hiçbir sorun olmadığını gözlemleyebiliriz.
2. Kullanıcı izolasyonu ile dağıtma
Bu açık platformlar için çok uygun olmasa da, SNS gibi uygulama senaryoları için çok uygundur. Örneğin, QQ sistemi kullanıcı sayı segmentlerine göre birkaç kümeye bölünür ve her küme 100 milyon ardışık sayı içerir. En son QQ sayısının 1 milyara yakın olduğu varsayarsak, toplamda 10 küme vardır (Set 1'den Set 10'a). Bu şekilde, her seferinde yayınlayacak SET'lerden birini seçebilirsiniz ve yüksek seviyeli QQ genellikle çok önemli bir kullanıcı değildir, bu yüzden önce SET10 yayınlanır.
liyakat
İş hatları arasında minimum etkiyle izole dağıtım. Otomatik olarak gri tonlu yayıncılığı destekliyor. Eksiklik
Gri tonların granülerliği, izole dağıtımın granülerliğine bağlıdır ve genellikle büyüktür. Merkezi dağıtıma kıyasla makine israfı. Her iş hattının versiyonları tutarsız olabilir, bu da birleşik yönetim için uygun değildir. Belirli uygulama ve dağıtım maliyetleri vardır Şema 4: Dinamik yönlendirme
Yöntem: Yük dengesinin davranışını etkileyecek ve gri ton servisinin IP ve portunu gri ton politikasına göre geri döndürmesine izin verecek şekilde esnek olarak yapılandırılabilen bir gri ton politikası kullanın.
Arka ofis IDL ile servis gri tonları için uygundur.
liyakat
Esnek, kontrol edilebilir. Eksiklik
Mevcut yapılandırma merkezi ve L5'in kendisi belirli yönlendirme politikalarını dikkate almaz ve ölçeklenebilir değildir, bu yüzden bunların dışında geliştirilmesi gerekir. API'lerin meta veri kaynakları nispeten dağınıktır ve şu anda API ve IDL meta verileri, API seviyeleri ve frekans sınırları farklı veri kaynakları arasında dağıtılmıştır; şimdi gri tonlu yönlendirme veri kaynağı eklemek gereklidir.
Gri tonlu nginx+lua yayınlamanın genellikle üç yolu vardır: nginx çerezlere göre dağıtılır ve nginx ağırlık olarak atanır:
nginx+lua, ziyaretçinin IP adresine göre ayrım yapar; çünkü şirket bir IP adresi dışa aktarır ve web sitesi ya eski ya da yeni sürüme erişilir, bu da bu yöntem için uygun değildir nginx, ağırlığı uygulamak için basit olan ağırlıklara dayalı olarak atar; bu da kolayca uygulanabilir ve denenebilir nginx çerezlere göre bölünürken, gri tonlu kullanıcılara göre yayınlar
|