溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

codis有什么用

發(fā)布時間:2021-11-22 14:43:41 來源:億速云 閱讀:122 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)codis有什么用的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1.  Codis簡介

Codis 是一個分布式 Redis 解決方案, 對于上層的應(yīng)用來說, 連接到Codis Proxy 和連接原生的 Redis Server 沒有明顯的區(qū)別 (不支持的命令列表), 上層應(yīng)用可以像使用單機的 Redis 一樣使用, Codis 底層會處理請求的轉(zhuǎn)發(fā), 不停機的數(shù)據(jù)遷移等工作, 所有后邊的一切事情, 對于前面的客戶端來說是透明的, 可以簡單的認為后邊連接的是一個內(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 項目維護的一個 Redis 分支, 基于 2.8.21 開發(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)品, 各項配置都不會沖突.

2.  Codis架構(gòu)

3.  Codis部署

安裝centos服務(wù)器3臺:192.168.92.136,192.168.92.138,192.168.92.138

3.1.部署架構(gòu)

codis有什么用

3.2.部署角色

3.2.1.  Zookeeper集群

192.168.92.136:2181

192.168.92.137:2181

192.168.92.138:2181

3.2.2.  Codis-config

192.168.92.136:18078

3.2.3.  Codis-proxy

192.168.92.137:19000

192.168.92.138:19000

3.2.4.  Codis-server

192.168.92.137:7000、192.168.92.137:7001(主、從)

192.168.92.138:7000、192.168.92.138:7001(主、從)

3.3.部署

3.3.1.  關(guān)閉防火墻和selinux(略)

3.3.2.  安裝jdk(略)

codis有什么用

3.3.3.  安裝zookeeper

3.3.3.1.     下載zookeeper

下載地址:http://zookeeper.apache.org/releases.html

3.3.3.2.     解壓zookeeper

tar xf zookeeper-3.4.6.tar.gz  -C /usr/local/

codis有什么用

3.3.3.3.     編輯zookeeper文件
  • 配置文件存放在$ZOOKEEPER_HOME/conf/目錄下,將zoo_sample.cfg文件名稱改為zoo.cfg

mv zoo_sample.cfg zoo.cfg

codis有什么用

  • 編輯zoo.cfg: vizoo.cfg,添加節(jié)點

server.1=192.168.92.136:2888:3888

server.2=192.168.92.137:2888:3888

server.3=192.168.92.138:2888:3888

  • 修改data路徑:dataDir=/var/lib/zookeeper

codis有什么用

  • 在data路徑下添加myid文件,內(nèi)容存放pid,與server.x一致

codis有什么用

3.3.3.4.     啟動zookeeper

執(zhí)行:./bin/zkServer.sh start

codis有什么用

3.4.安裝go

3.4.1.  下載go

地址:http://golangtc.com/static/go/go1.4.2.linux-amd64.tar.gz

3.4.2.  解壓go

tar xf go1.4.2.linux-amd64.tar.gz -C/usr/local/

codis有什么用

3.4.3.  添加go環(huán)境變量

vi /etc/profile,添加如下

GOROOT=/usr/local/go

GOPATH=/usr/local/go/work

codis有什么用

source /etc/profile

codis有什么用

3.5.安裝Development Tool,git

yum install -y “Development Tool

yum install –y git

3.6.安裝codis

3.6.1.  下載編譯codis

    go get -u-d github.com/wandoulabs/codis

codis有什么用

cd $GOPATH/src/github.com/wandoulabs/codis

./bootstrap.sh

codis有什么用

make gotest

codis有什么用

3.6.2.  編輯config.ini文件

修改zookeeper地址和dashboard地址:vi config.ini

codis有什么用

codis有什么用

codis有什么用

每個proxy的proxy_id必須不同

3.6.3.  啟動dashboard

mkdir log

./bin/codis-config-c config.ini -L ./log/dashboard.log dashboard &

codis有什么用

3.6.4.  初始化solts

./bin/codis-config -c config.ini slot init –f

codis有什么用

3.6.5.  啟動codis-server

  • 啟動master:mkdir 7000

cp extern/redis-2.8.21/redis.conf 7000/

修改port、bind、maxmemory:vi 7000/redis.conf

codis有什么用

codis有什么用

codis有什么用

啟動:./bin/codis-server 7000/redis.conf

codis有什么用

  • 啟動slave: mkdir 7001

cp extern/redis-2.8.21/redis.conf 7001/

修改port、bind、maxmemory:vi 7001/redis.conf

codis有什么用

codis有什么用

codis有什么用

啟動:./bin/codis-server 7001/redis.conf

codis有什么用

3.6.6.  添加redis server group

./bin/codis-config -cconfig.ini server add 1 192.168.92.137:7000 master

codis有什么用

./bin/codis-config -c config.ini server add1 192.168.92.137:7001 slave

codis有什么用

192.168.92.138節(jié)點啟動redis如上

3.6.7.   設(shè)置server group 服務(wù)的 slot范圍

./bin/codis-config -c config.ini slotrange-set 0 600 1 online

./bin/codis-config -c config.ini slotrange-set 601 1023 2 online

codis有什么用

3.6.8.  啟動 codis-proxy

bin/codis-proxy -c config.ini -L ./log/proxy.log  --cpu=1 --addr=0.0.0.0:19000--http-addr=0.0.0.0:11000 &

codis有什么用

3.6.9.  瀏覽器訪問

http://192.168.92.136:18087/admin/

codis有什么用

codis有什么用

4.  數(shù)據(jù)遷移

將group_1的solt:599,600遷移到group_2

codis有什么用

4.1.命令行遷移方式

執(zhí)行:bin/codis-config -c config.ini slot migrate 599 600 2 --delay=10

4.2.Dashboard遷移方式

codis有什么用

codis有什么用

5.  Auto Rebalance

Codis 支持動態(tài)的根據(jù)實例內(nèi)存, 自動對slot進行遷移, 以均衡數(shù)據(jù)分布.

要求:

  • 所有的codis-server都必須設(shè)置了maxmemory參數(shù)

  • 所有的 slots 都應(yīng)該處于 online 狀態(tài), 即沒有遷移任務(wù)正在執(zhí)行

  • 所有 server     group 都必須有 Master

5.1.命令行方式:

$ bin/codis-config slot rebalance

5.2.Dashboard方式

codis有什么用

6.  HA

當一個group的master掛掉的時候,codis不會自動的將某個slave升級成master

該工具會在檢測到master掛掉的時候?qū)⑵湎戮€并選擇其中一個slave提升為master繼續(xù)提供服務(wù)

go get github.com/ngaut/codis-ha

cd /usr/local/go/work/src/github.com/ngaut/codis-ha

go build

./codis-ha--codis-config=192.168.92.136:18087 --productName=test &

codis有什么用

7.  Jodis客戶端

使用循環(huán)調(diào)度策略方式多個proxy

<>
    <>com.wandoulabs.jodis</>
    <>jodis</>
    <>0.1.2</>
</>
JedisResourcePool jedisPool = RoundRobinJedisPool(, 30000, , JedisPoolConfig());
(Jedis jedis = jedisPool.getResource()) {
    jedis.set(, );
    String value = jedis.get();
    System..println(value);
}

8.  Codis不支持的命令

Command Type

Command Name

Keys

KEYS


MIGRATE


MOVE


OBJECT


RANDOMKEY


RENAME


RENAMENX


SCAN



Strings

BITOP


MSETNX



Lists

BLPOP


BRPOP


BRPOPLPUSH



Pub/Sub

PSUBSCRIBE


PUBLISH


PUNSUBSCRIBE


SUBSCRIBE


UNSUBSCRIBE



Transactions

DISCARD


EXEC


MULTI


UNWATCH


WATCH



Scripting

SCRIPT



Server

BGREWRITEAOF


BGSAVE


CLIENT


CONFIG


DBSIZE


DEBUG


FLUSHALL


FLUSHDB


LASTSAVE


MONITOR


RESTORE


SAVE


SHUTDOWN


SLAVEOF


SLOWLOG


SYNC


TIME



Codis Slot

SLOTSCHECK


SLOTSDEL


SLOTSINFO


SLOTSMGRTONE


SLOTSMGRTSLOT


SLOTSMGRTTAGONE


SLOTSMGRTTAGSLOT

9.  Codis半支持的命令

需要將以下key放入同一slot才能支持,方式采用{},如key為“bar{zap}”,則只會對zap進行hash

Command Type

Command Name

Lists

RPOPLPUSH

Sets

SDIFF


SINTER


SINTERSTORE


SMOVE


SUNION


SUNIONSTORE

Sorted Sets

ZINTERSTORE


ZUNIONSTORE

HyperLogLog

PFMERGE

Scripting

EVAL


EVALSHA

10.  附錄

10.1.修改dashboard端口號

 1.修改config文件

dashboard_addr=192.168.92.136:19001

 2.啟動命令變更為:

./bin/codis-config -cconfig.ini -L ./log/dashboard.log dashboard --addr=192.168.92.136:19001 &

codis有什么用

codis有什么用

感謝各位的閱讀!關(guān)于“codis有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI