本文目標是設計高可用,易伸縮的rediscache集群方案,需求:
1. 總體架構
2. keeper
負責在zookeeper中註冊維護redis例項的資訊。keeper和redis位於同一臺機器,keeper通過local host位址訪問它維護的redis例項。
2.1. 啟動
keeper啟動過程的輸入:
keeper啟動完成的工作:
2.2. redis例項故障的檢測與轉移
故障轉移耗**估:
2.3 水平擴容的過程
水平擴容十分簡便,過程如下
3.client
3.1 資料分片
通過一致性雜湊演算法,在client端實現資料分片。
3.2 動態容錯
client訪問redis例項的過程可以分為三步:
可能在上述的第1步之後,第3步之前發生redis集群的動態變化,導致redis例項訪問失敗。此時需要進行重試訪問,超過一定次數之後,向上層返回錯誤。具體流程圖如下所示:
**:
session 集群方案
背景 假設某個 是由多台伺服器提供服務,nginx採用輪詢機制做負載均衡,那麼同乙個ip訪問該 時,請求就可能會被分配到不同的伺服器上,如果session沒有實現共享,就會出現重複登陸授權的情況。session 集群主要有兩個方案 session 複製和session共享 session 複製 是指...
Memcache 集群方案
一 偽集群方案 最常見的做法 memcache安裝後,在一台機器或多台機器上啟動多個例項,客戶端配置memcache節點的ip,port即可。由客戶端實現分布式快取效果,其實是偽集群。memcache節點之間不通訊,無資料備份,負載均衡由客戶端實現,存在單點故障。客戶端可設定故障恢復和故障轉移機制。...
websocket (java)集群方案
redis 用來存使用者與伺服器的關係 redis可以任意替換為一種儲存形式 伺服器 a 會訂閱topic 為 websocket a 的訊息 伺服器 b 會訂閱topic 為 websocket b 的訊息 kafka 用來接收推送訊息 替換為任意一種mq 如果使用者1需要給使用者3傳送資訊,如果...