2012-07-31 27 views
0

我一直在閱讀,擴展Redis的正確方法是添加一個單獨的實例(即使在同一臺機器上也可以,因爲CPU密集型)。我想知道的是,是否有任何現有的組件可以方便輪詢/寫入/讀取,類似於Mongos,這樣我就可以調用它並正確地將其寫入/讀取到其中一個底層實例。我意識到,我上面代表的東西比較複雜,但不想通過編寫自己的代理等來重新發明輪子來處理這個問題。使用兩個Redis實例 - 類似於Mongos

任何建議/技巧,等將不勝感激。

感謝,

小號

回答

1

該方法將工作的縮放讀,但不能寫爲Redis的是尚未與Redis的集羣釋放。

對於負載均衡讀取,任何TCP負載平衡器都應該正常工作,如Balance。我把它鏈接起來,因爲它是基於軟件的,並且很容易設置和使用。當然,如果你有一個硬件負載平衡器,你可以在那裏做,或者使用任何其他基於軟件的負載平衡器。

另一種選擇是在客戶端代碼中實現循環法,但我寧願自己不這樣做。 Redis集羣發佈後,連接到哪個服務器並不重要。

爲了平衡寫入,您需要走分解數據的路線,這在IMO的Craigslist's Redis usgae頁面描述得相當好。如果你認爲你需要走這條路線,我建議先採取JZ所需的路線並提前做底層設置。理想情況下,一旦redis-cluster準備就緒,應該儘可能少地進行代碼更改以轉移到爲您處理它的集羣。

如果你想有一個單一的IP來處理讀取和多重分片寫上你可能會需要編寫一個「代理」自己,或者把代碼在你寫的客戶端代碼大師寫爲好。另外,this proxy announcement可能會持有你所需要的,但我沒有看到有關路由寫入的任何信息。

最後,我想你需要測試和驗證你實現它之前,真正需要的是寫縮放。我發現,如果我全部讀取一個或多個從服務器,並讓從服務器管理磁盤持久性,寫入的性能通常不是問題。

+0

謝謝@TheRealBill非常有幫助我很欣賞它。 – scarpacci 2012-07-31 16:51:11