2016-10-15 34 views
1

我使用SignalR在負載平衡器後面的多臺服務器託管。我將連接標識和用戶標識存儲在SQL Server的自定義數據庫表中。每次我都需要向選定的用戶發送通知。它在單服務器環境中工作正常。如何在不使用現有底板選項的情況下使用自定義數據庫表來擴展SignalR實施?如何實現SignalR向外擴展,而無需使用現有的背板選

+0

在您的方案 - 你可以把所有需要相互交談一臺服務器上的用戶? – Pawel

回答

0

我不知道什麼是您目前的實現,因爲它似乎是有點混合你的解釋。如果你在負載均衡器後面有多個服務器,這意味着你應用了一些技術(我認爲是這樣!)。但是你說它在單服務器環境中工作正常,但不在多個服務器中工作。讓我們來回顧一下是強制性的多臺服務器(橫向擴展)

  1. 實例之間的通信:這意味着,在一個實例中的任何消息,請在所有其他實例。經典實現是任何類型的隊列,SignalR支持Redis,您可以使用SQL Server,但它清楚了任何SQL解決方案的侷限性。天青有一個Redis的緩存作爲PaaS的

  2. 內存存儲:你通常在一臺服務器使用,但它是強制性的,以實現共享內存。同樣,Redis擁有共享內存解決方案,以防您有可用的服務器。沒有像Redis這樣的解決方案,沒有任何可能實現這一點。 同樣,較低性能的解決方案將是SQL中的MemStorage實現。

  3. 驗證:外掛式的現成實現安全的使用Cookie來存儲加密密鑰。但是一旦你有多臺服務器,每臺服務器都有其唯一的密鑰。要解決此問題,必須實施自己的DataProtector,以防使用此方法。

的例子是非常超出了這個解釋,大部分的代碼(不執行實際的方法,甚至模板)將採取幾頁。我建議你看看必須擴展你的應用程序的3個項目。

+0

能否請您至少添加源代碼或文章或約定製背板實現其它回答問題環節?我相信至少有幾件好事可以幫助問題啓動者。 – cassandrad

+0

我會添加一些可以導致理解概念的例子(最小)...我自己實現了一個完整的解決方案,但是有很多代碼。 –

+0

你可以提供一個鏈接到你的倉庫,然後,是嗎?這對其他人會很有幫助。 – cassandrad