Wolverine 6.51 ile Marten projeksiyonlarını kesintisiz yeniden oluşturma
Wolverine 6.51, mavi-yeşil dağıtımlarda yeni sürümün düğümlerini yalnızca projeksiyonları arka planda yeniden oluşturmak için çalıştıran bir warm-up rolüyle geliyor. Marten ve Polecat'in versiyonlu projeksiyonları ve yan etki kapısıyla birlikte, trafik geçişi öncesi yeni okuma modellerinin hazır olmasını sağlıyor. Olay kaynaklı sistemlerde kesintisiz sürüm geçişi yapmak isteyen ekipler için pratik bir çözüm sunuyor.
Kilit noktalar
- Warm-up düğümünü Durability.NodeRole = NodeRole.Warmup ile ayarlayın; varsayılan rol NodeRole.Serving'dir.
- Warm-up düğümleri lider olmaz, abonelik çalıştırmaz ve yalnızca sürümü değişen projeksiyon ajanlarını alır.
- Marten projeksiyonunda Version değerini artırın; yeni sürüm kendi tablolarını ve ilerleme kaydını kullanır.
- Warm-up düğümlerini yük dengeleyicinin dışında tutun; sağlık kontrol uç noktaları yanıt vermeye devam etmelidir.
- Yeni sürümü dağıtmadan önce sunucu düğümlerinin role destekleyen Wolverine sürümüne yükseltildiğinden emin olun.
- Marten 9.39.1 ile gelen GateSideEffectsBehindPriorVersion, yeni sürümde geçmiş yan etkilerin yeniden tetiklenmesini engeller.
Wolverine 6.51 ile gelen warm-up düğüm rolü, olay kaynaklı sistemlerde projeksiyonların yeni sürümünü kullanıcılar fark etmeden hazırlamayı hedefliyor. Yeni sürümün düğümleri kümeye katılır, ancak mesaj işlemez, abonelik çalıştırmaz ve lider olmaz. Yalnızca sürümü değişen projeksiyon ajanlarını üstlenir ve bunları olay akışını takip ederek kendi ilerlemeleriyle yeniden oluşturur. Ajanlar, rebuild modunda çalıştığı için yan etkiler yayımlanmaz.
Bu yaklaşım, Marten'ın versiyonlu projeksiyonlarıyla birlikte çalışır: V2 ve V1 kendi tablolarını ve ilerleme kayıtlarını ayrı tutar. Geçiş tamamlandığında warm-up düğümler NodeRole.Serving ile yeniden başlatılıp yük dengeleyiciye alınır. Uygulamanın kendi arka plan servisleri, doğrudan HTTP trafiği ve InvokeAsync() çağrıları ise Wolverine'in kontrolünde değildir; bunları ayrıca kontrol etmek gerekir.
Gerçek dünyada kullanımı
- Yüz binlerce olay içeren, çok kiracılı bir olay kaynaklı sistemde okuma modelini yeniden kurup trafiği yeni sürüme kesintisiz geçirmek.
- Mesaj işleyen bir Wolverine servisinde yeni olay tipi ekleyen bir sürümde, eski düğümlerin bilinmeyen olayları atlamadan önce yeni projeksiyonları hazırlamak.
- Kubernetes üzerinde mavi-yeşil dağıtım yapan ve yeşil podları yalnızca hazır olduğunda yük dengeleyiciye alan ekipler.
Neden önemli
Olay kaynaklı sistemlerde projeksiyon değişikliği artık kesinti veya yarım kalmış okuma modeli anlamına gelmek zorunda değil. Ancak geçiş sırasında yan etkilerin ve ayrı sürüm tablolarının doğru yönetilmesi gerekir.
Benzer haberler
- Wolverine 6.51.3: durable inbox ve outbox sertleştirmesiWolverine releases23 Eki
- C# interface'lerinde collection dönüş tipleri: interface, view ve snapshot farkıNick Cosentino (Dev Leader)2 gün önce
- NebulaGraph'a .NET'ten idempotent toplu yükleme: VID ile çoğaltma sorunuDEV Community: #csharp3 gün önce