https://github.com/wandoulabs/codis
Codis 是一個分布式 Redis 解決方案, 對于上層的應(yīng)用來說, 連接到 Codis Proxy 和連接原生的 Redis Server 沒有明顯的區(qū)別 (不支持的命令列表), 上層應(yīng)用可以像使用單機(jī)的 Redis 一樣使用, Codis 底層會處理請求的轉(zhuǎn)發(fā), 不停機(jī)的數(shù)據(jù)遷移等工作, 所有后邊的一切事情, 對于前面的客戶端來說是透明的, 可以簡單的認(rèn)為后邊連接的是一個內(nèi)存無限大的 Redis 服務(wù).
Codis 由四部分組成:
Codis Proxy (codis-proxy)
Codis Manager (codis-config)
Codis Redis (codis-server)
ZooKeeper
codis-proxy 是客戶端連接的 Redis 代理服務(wù), codis-proxy 本身實現(xiàn)了 Redis 協(xié)議, 表現(xiàn)得和一個原生的 Redis 沒什么區(qū)別 (就像 Twemproxy), 對于一個業(yè)務(wù)來說, 可以部署多個 codis-proxy, codis-proxy 本身是無狀態(tài)的.
codis-config 是 Codis 的管理工具, 支持包括, 添加/刪除 Redis 節(jié)點, 添加/刪除 Proxy 節(jié)點, 發(fā)起數(shù)據(jù)遷移等操作. codis-config 本身還自帶了一個 http server, 會啟動一個 dashboard, 用戶可以直接在瀏覽器上觀察 Codis 集群的運行狀態(tài).
codis-server 是 Codis 項目維護(hù)的一個 Redis 分支, 基于 2.8.13 開發(fā), 加入了 slot 的支持和原子的數(shù)據(jù)遷移指令. Codis 上層的 codis-proxy 和 codis-config 只能和這個版本的 Redis 交互才能正常運行.
Codis 依賴 ZooKeeper 來存放數(shù)據(jù)路由表和 codis-proxy 節(jié)點的元信息, codis-config 發(fā)起的命令都會通過 ZooKeeper 同步到各個存活的 codis-proxy.
Codis 支持按照 Namespace 區(qū)分不同的產(chǎn)品, 擁有不同的 product name 的產(chǎn)品, 各項配置都不會沖突.
目前 Codis 已經(jīng)是穩(wěn)定階段,目前豌豆莢已經(jīng)在使用該系統(tǒng)。
架構(gòu):

特性:
安裝:
界面截圖:
Dashboard
Migrate
Slots