3

Web uygulamamız, sık sık sorgulanan verilerin her istek için veritabanından (SQL Server) yüklenmesi gerekmeyecek şekilde çıktıyı geliştirmek için bellek içi önbelleğe alma (Uygulama Veri Önbelleği) kullanır. Potansiyel olarak, bir web-çiftliğinde konuşlandırılacak, böylece tüm düğümlerin önbelleklerini senkronize etmek zorunda kalmanın klasik problemini çözmeliyiz. Yani ihtiyacımız olan bir dağıtılmış önbellek.SinyalR Backplane, dağıtılmış bir önbellek oluşturmak için kullanılabilir mi?

Hazır çözümler, NCache ve REDIS (ve muhtemelen daha fazlası). Ancak, bir Windows Hizmetine (ve tarayıcı istemcilerine) veri setimizdeki değişiklikleri iletmek için SignalR Backplane kullanıyor olduğumuzdan, dağıtılmış bir önbellek uygulamak için kullanılıp kullanılamayacağını merak ediyorum.

Böyle yaparsanız, mevcut veri kümesindeki değişiklik iletilerinizi (daha fazla veya daha az) yeniden kullanırız, ancak önbelleği geçersiz kılmak için web uygulamasında kendilerine abone oluruz. Üst kısım, yeni bir kütüphane/teknolojiyi tanıtmamız gerekmiyor.

Sanırım en büyük sorularım şunlar: Mantıklı mı? Ve, hiçbir olayın kaybolan önbelleklerle sonuçlandığından emin olmamanız için yeterince güvenilir olannumaralı Sinyal R Arkaplan'ı mı? Yoksa bu mimari yanlış kullanım mı?

+0

Burada ilgili ve daha ayrıntılı bir soru sordum: http://stackoverflow.com/questions/36239434/how-reliable-is-signalr-backplane – Dejan

cevap

1

Signalr, statik olmayan gerçek zamanlı çözüm içindir.

Çözümünüzde, bir hizmette veri seçecek ve bir başka hizmete arka plan tarafından gönderileceksiniz. Sonra ne ? Muhtemelen bunu hafızaya kaydedeceksiniz. Hizmetlerden biri yeniden başlatıldığında ne olur? Veri yok olacak. Bu problemle asla redis ile karşılaşmayacaksınız. Ek olarak, bu veriler için yerel belleğinizi tüketeceksiniz.

Ayrıca son kullanma tarihini nasıl yöneteceksiniz? Ayrıca bu önbellek sistemini sinyal ile uygulamak için çaba sarfedeceksiniz.

Bunun için sinyal arka panelini kullanmanızı önermiyorum. Redis veya smilar teknolojilerine sadık kalın.

+1

Bir hizmetten diğerine veri göndermiyorum. Sadece * zaten * veri ile değiştirilen olayları gönderen bir sistemden yararlanmak istiyorum. Sadece bir tane daha abone olacaktı: web uygulamasının kendisi, önbelleğini ne zaman temizleyeceğini biliyor. Neden mesaj dağıtmak için başka bir teknolojiye ihtiyaç duyduğunuzu söylediğinizden emin değilim? SignalR bunu yapıyor. – Dejan

+0

Bir backplane veya signalr Backplane? Olarak signalr hakkında konuşuyor musunuz? Sunuculara gönderilen istemcilere veya istemcilere mesaj gönderme. Yani bir sunucuda istemcilere mesaj gönderirsiniz, ancak diğer sunucu istemcilerini almak istiyorsanız bu mesajın sinyali arka plana ihtiyaç duyar. Bunu söylemek istedim. Ancak, bir arka plan olarak signalr hakkında konuşuyorsanız, bu sizin sorunuzla ilgili değildir. –

+0

Burada açıklandığı gibi SignalR Backplane hakkında konuşuyorum: http://www.asp.net/signalr/overview/performance/scaleout-with-sql-server. Anlayışımda, iletileri ayrı (IIS veya Windows Hizmeti) işlemlerinde yaymamı sağlıyor. – Dejan

İlgili konular