Redis 集群解決方案 Codis
https://github.com/wandoulabs/codis
Codis 是一個(gè)分布式 Redis 解決方案, 對(duì)于上層的應(yīng)用來(lái)說(shuō), 連接到 Codis Proxy 和連接原生的 Redis Server 沒(méi)有明顯的區(qū)別 (不支持的命令列表), 上層應(yīng)用可以像使用單機(jī)的 Redis 一樣使用, Codis 底層會(huì)處理請(qǐng)求的轉(zhuǎn)發(fā), 不停機(jī)的數(shù)據(jù)遷移等工作, 所有后邊的一切事情, 對(duì)于前面的客戶端來(lái)說(shuō)是透明的, 可以簡(jiǎn)單的認(rèn)為后邊連接的是一個(gè)內(nèi)存無(wú)限大的 Redis 服務(wù).
Codis 由四部分組成:
Codis Proxy (codis-proxy)
Codis Manager (codis-config)
Codis Redis (codis-server)
ZooKeeper
codis-proxy 是客戶端連接的 Redis 代理服務(wù), codis-proxy 本身實(shí)現(xiàn)了 Redis 協(xié)議, 表現(xiàn)得和一個(gè)原生的 Redis 沒(méi)什么區(qū)別 (就像 Twemproxy), 對(duì)于一個(gè)業(yè)務(wù)來(lái)說(shuō), 可以部署多個(gè) codis-proxy, codis-proxy 本身是無(wú)狀態(tài)的.
codis-config 是 Codis 的管理工具, 支持包括, 添加/刪除 Redis 節(jié)點(diǎn), 添加/刪除 Proxy 節(jié)點(diǎn), 發(fā)起數(shù)據(jù)遷移等操作. codis-config 本身還自帶了一個(gè) http server, 會(huì)啟動(dòng)一個(gè) dashboard, 用戶可以直接在瀏覽器上觀察 Codis 集群的運(yùn)行狀態(tài).
codis-server 是 Codis 項(xiàng)目維護(hù)的一個(gè) Redis 分支, 基于 2.8.13 開(kāi)發(fā), 加入了 slot 的支持和原子的數(shù)據(jù)遷移指令. Codis 上層的 codis-proxy 和 codis-config 只能和這個(gè)版本的 Redis 交互才能正常運(yùn)行.
Codis 依賴 ZooKeeper 來(lái)存放數(shù)據(jù)路由表和 codis-proxy 節(jié)點(diǎn)的元信息, codis-config 發(fā)起的命令都會(huì)通過(guò) ZooKeeper 同步到各個(gè)存活的 codis-proxy.
Codis 支持按照 Namespace 區(qū)分不同的產(chǎn)品, 擁有不同的 product name 的產(chǎn)品, 各項(xiàng)配置都不會(huì)沖突.
目前 Codis 已經(jīng)是穩(wěn)定階段,目前豌豆莢已經(jīng)在使用該系統(tǒng)。
架構(gòu):
特性:
自動(dòng)平衡
使用非常簡(jiǎn)單
圖形化的面板和管理工具
支持絕大多數(shù) Redis 命令,完全兼容 twemproxy
支持 Redis 原生客戶端
安全而且透明的數(shù)據(jù)移植,可根據(jù)需要輕松添加和刪除節(jié)點(diǎn)
提供命令行接口
RESTful APIs
安裝:
Install go
go get github.com/wandoulabs/codis
cd codis
./bootstrap.sh
make gotest
cd sample
follow instructions in usage.md
界面截圖:
Dashboard
Migrate
Slots
posted on 2014-11-09 09:28 paulwong 閱讀(2534) 評(píng)論(0) 編輯 收藏 所屬分類: 性能優(yōu)化 、REDIS