2012-10-02 61 views
0

我使用SignalR我的ASP.NET應用程序。我的應用程序需要的是按下從各種服務器更新的組數據。根據SignalR文檔,這是我的責任。這意味着我需要使用外部服務器/服務來收集來自一個或多個服務器的數據,並且我可以從一個地方查詢這些數據。SignalR和Memcached的持久集團數據

我首先想到的是MemCached是最好的候選人,因爲它速度很快,我需要放在那裏的數據是不穩定的。問題是我需要存儲集合,例如:集合A與用戶ID,所以我可以將集合A與2000個用戶標識和集合B與40,000個標識。問題是我需要更新這個集合並很快刪除並插入id。我擔心,因爲這些命令將從多個服務器啓動,並且我可能需要讀取整個集合並在任一Web服務器上對其進行更新,所以數據將不一致。 Web服務器A可能會更新數據,但服務器B將在服務器A完成更新之前讀取數據。有一個併發衝突。

我正在尋找在我的ASP.NET 4.5應用程序中實現這種策略的最佳方式。我認爲這可能是使用內存數據庫或確保數據完整性的選擇。

我想問你什麼是我的問題的最佳解決方案。

下面是我的一點改進的例子:

  • memcached服務器 - 存儲集合(如集合A,B,C,d),每個集合存儲用戶ID,它可以是成千上萬的ID和甚至多得多。

  • Web服務器 - 我安裝了SignalR的Amazon EC2 Web服務器。可以在負載平衡器後面。這些服務器需要訪問memcached服務器,並按集合名稱(例如「Collection_23」)獲取完整的集合項目。他們需要能夠刪除項目(用戶標識)並添加項目。所有這些應該儘可能快。

我希望我解釋自己的權利。謝謝。

回答

3

或者,你可以使用Redis,像Memcached的一切都從內存服務。除了簡單的鍵值數據存儲之外,Redis還具有許多其他功能;對於您的具體情況,您可能使用Redis transactions,這可確保數據的一致性。

+0

而且已經有一個Redis的Redis消息存儲提供程序位於:https://github.com/SignalR/SignalR.Redis –