Codis 由4部分組成:
1. Codis Proxy (codis-proxy)
2. Codis Dashboard (codis-config)
3. Codis Redis (codis-server, 基於redis-2.8.21修改, 增加一些命令)
4.ZooKeeper
功能概述
1. codis-proxy 是客戶端連接的 Redis 代理服務, codis-proxy 本身實現了 Redis 協議, 表現得和一個原生的 Redis 沒什麼區別 (就像 Twemproxy), 對於一個業務來說, 可以部署多個 codis-proxy, codis-proxy 本身是無狀態的.
2. codis-config 是 Codis 的管理工具, 支持包括, 添加/刪除 Redis 節點, 添加/刪除 Proxy 節點, 發起數據遷移等操作. codis-config 本身還自帶了一個 http server, 會啓動一個 dashboard, 用戶可以直接在瀏覽器上觀察 Codis 集羣的運行狀態. dashboard 可以同時開啓多個. dashboard具有ha的功能, 如果開啓ha, 則自動做主從切換.
3. codis-server 是 Codis 項目維護的一個 Redis 分支, 基於 2.8.21 開發, 加入了 slot 的支持和原子的數據遷移指令. Codis 上層的 codis-proxy 和 codis-config 只能和這個版本的 Redis 交互才能正常運行.
4. Codis 依賴 ZooKeeper 來存放數據路由表和 codis-proxy 節點的元信息, codis-config 發起的命令都會通過 ZooKeeper 同步到各個存活的 codis-proxy.
5. Codis 支持按照 Namespace 區分不同的產品, 擁有不同的 product name 的產品, 各項配置都不會衝突.
6. Zookeeper Codis將集羣信息和狀態保存到Zookeeper. codis-config和codis-ha都基於zookeeper實現 主從選舉, 以實現無單點, 高可用!
參考 https://github.com/CodisLabs/codis/blob/release3.2/doc/tutorial_zh.md