Redis 叢集解決方案 Codis 2.0 釋出

發表於2015-08-05

Codis 是一個分散式 Redis 解決方案, 對於上層的應用來說, 連線到 Codis Proxy 和連線原生的 Redis Server 沒有明顯的區別, 上層應用可以像使用單機的 Redis 一樣使用, Codis 底層會處理請求的轉發, 不停機的資料遷移等工作, 所有後邊的一切事情, 對於前面的客戶端來說是透明的, 可以簡單的認為後邊連線的是一個記憶體無限大的 Redis 服務。

Codis 2.0 釋出,主要改進:

  • 重新設計 request dispatcher,現在 pipeline 和 mget/mset requests 都比之前快很多!

  • Codis-server (forked redis) 升級至 2.8.21,包含上流 Redis 的 bug 修復,還有優化,比如更低的記憶體消耗和更快的遷移。

  • 優化 zk 連線,現在更穩定

  • 遷移(和自動均衡)任務現在儲存在 zk,儀表盤重啟的時候將會繼續。

  • 支援 Redis AUTH 命令

  • 更多配置選項,請看 sample/config.ini

更多改進內容請看發行說明

Codis 由四部分組成:

  • Codis Proxy (codis-proxy)  是客戶端連線的 Redis 代理服務, codis-proxy 本身實現了 Redis 協議, 表現得和一個原生的 Redis 沒什麼區別 (就像 Twemproxy), 對於一個業務來說, 可以部署多個 codis-proxy, codis-proxy 本身是無狀態的。

  • Codis Manager (codis-config) 是 Codis 的管理工具, 支援包括, 新增/刪除 Redis 節點, 新增/刪除 Proxy 節點, 發起資料遷移等操作. codis-config 本身還自帶了一個 http server, 會啟動一個 dashboard, 使用者可以直接在瀏覽器上觀察 Codis 叢集的執行狀態

  • Codis Redis   (codis-server) 是 Codis 專案維護的一個 Redis 分支, 基於 2.8.13 開發, 加入了 slot 的支援和原子的資料遷移指令. Codis 上層的 codis-proxy 和 codis-config 只能和這個版本的 Redis 互動才能正常執行

  • ZooKeeper。Codis 依賴 ZooKeeper 來存放資料路由表和 codis-proxy 節點的元資訊, codis-config 發起的命令都會通過 ZooKeeper 同步到各個存活的 codis-proxy

Codis 支援按照 Namespace 區分不同的產品, 擁有不同的 product name 的產品, 各項配置都不會衝突.

目前 Codis 已經是穩定階段,目前豌豆莢已經在使用該系統。

相關文章