ASP.NET Core

SignalR uygulamaları birden fazla sunucuya nasıl ölçeklenir

ASP.NET Core SignalR uygulamasını birden fazla sunucuya yaymak için Redis backplane ve Azure SignalR Service seçenekleri ele alınıyor. Mesajların sunucular arasında nasıl dağıtıldığı, yapılandırma adımları ve sticky session konusundaki önemli noktalar anlatılıyor. Gerçek zamanlı bir uygulamayı production'a taşıyan geliştiriciler için pratik bir rehber.

C# Corner Ananya Desai
Yayın tarihi
Okuma süresi
9 dk okuma
agent çalıştırması #8
agent çalıştırması #8
Orijinale git c-sharpcorner.com

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Redis backplane için Microsoft.AspNetCore.SignalR.StackExchangeRedis paketini kurup AddSignalR().AddStackExchangeRedis(...) ile bağlantı dizesini kaydedin.
  • Azure SignalR Service için Microsoft.Azure.SignalR paketi ve AddAzureSignalR() çağrısı kullanılır; bağlantı dizesi Azure:SignalR:ConnectionString anahtarında tutulur.
  • Redis backplane kullanırken sticky session genellikle yine gereklidir; yalnızca belgelenmiş istisnalar geçerlidir.
  • Tüm sunucular aynı backplane veya Azure SignalR yapılandırmasını paylaşmalıdır.
  • Mesajlar kalıcı değildir; geçmiş gerekiyorsa ayrı bir depolama katmanı kurun.
  • Hub'larda kimlik doğrulama ve yetkilendirme uygulayın; istemci tarafından gelen kullanıcı adına güvenmeyin.

Birden fazla sunucu arkasında çalışan bir SignalR uygulamasında her sunucu yalnızca kendi bağlantılarını yönettiği için bir sunucudaki kullanıcının gönderdiği mesaj diğer sunucudaki istemcilere ulaşmayabilir. Bu sorunu çözmek için iki ana yol var: sunucular arasında mesaj dağıtan bir Redis backplane ya da bağlantıları yöneten yönetilen bir hizmet olan Azure SignalR Service. Yazıda her iki seçeneğin kurulumu, AddStackExchangeRedis() ve AddAzureSignalR() çağrılarıyla Program.cs yapılandırması anlatılıyor.

Redis kullanıldığında sticky session hâlâ gerekebilir; Azure SignalR Service ise bu gereksinimi ortadan kaldırır. Yazar ayrıca üretim ortamı için yetkilendirme, yeniden bağlanma davranışı, yük testi ve Redis'in kalıcı mesaj deposu olarak kullanılmaması gibi noktalara dikkat çekiyor. Ayrıntılı kod ve tablolar için orijinal makaleye göz atmak faydalı olacaktır.

Gerçek dünyada kullanımı

  • Birden fazla uygulama sunucusu arkasında çalışan bir canlı sohbet uygulaması.
  • Azure üzerinde barındırılan ve bağlantı yönetimini yönetilen bir servise devretmek isteyen bildirim sistemi.
  • Kendi altyapısında çalışan ve Redis'i zaten işletilen bir ekibin gerçek zamanlı panosu.

Neden önemli

Çoklu sunucu dağıtımında mesajların tüm istemcilere ulaşması için bir scale-out çözümü şarttır. Hangi yolu seçtiğiniz, sticky session ihtiyacınızı ve işletme yükünüzü doğrudan etkiler.

Bu özet, C# Corner üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü