codis3与codis2 zookeeper路径注册兼容

来源:互联网 发布:曲无忆捏脸数据 编辑:程序博客网 时间:2024/06/14 08:24

codis3与codis2 zookeeper路径注册兼容

首先看一段$GOPATH/src/github.com/CodisLabs/codis/config/proxy.toml中的注释:

# Set jodis address & session timeout#   1. jodis_name is short for jodis_coordinator_name, only accept "zookeeper" & "etcd".#   2. jodis_addr is short for jodis_coordinator_addr#   3. proxy will be registered as node:#        if jodis_compatible = true (not suggested):#          /zk/codis/db_{PRODUCT_NAME}/proxy-{HASHID} (compatible with Codis2.0)#        or else#          /jodis/{PRODUCT_NAME}/proxy-{HASHID}jodis_name = "zookeeper"jodis_addr = "10.0.50.140:2181"jodis_timeout = "20s"jodis_compatible = true   

从注释中可以知道,codis2中proxy在zk中注册的路径为/zk/codis/db_{PRODUCT_NAME}/proxy-{HASHID},而在codis3中注册路径为/jodis/{PRODUCT_NAME}/proxy-{HASHID},如果想要codis3兼容codis2必须设置jodis_compatible = true,除此之外还有一个不同就是注册的proxy节点信息格式也不一致

codis2节点信息(/zk/codis/db_{PRODUCT_NAME}/proxy/{HASHID})

{    "addr": "10.0.50.139:19000",    "admin": "10.0.50.139:11080",    "start": "2017-03-03 12:14:29.697945725 +0800 CST",    "state": "online",    "token": "aecd105ab1e30fc15846ec6dab06f68d"}  

codis3节点信息(/codis3/{PRODUCT_NAME}/proxy/proxy-{HASHID})

{    "id": 1,    "token": "fef134d865b564254897b90fb4bd01c9",    "start_time": "2017-05-11 19:16:32.062864035 +0800 CST",    "admin_addr": "10.0.50.140:11080",    "proto_type": "tcp4",    "proxy_addr": "10.0.50.140:19000",    "jodis_path": "/jodis/codis-baichuan/proxy-fef134d865b564254897b90fb4bd01c9",    "product_name": "codis-baichuan",    "pid": 896,    "pwd": "/home/xiaoju/gopath/src/github.com/CodisLabs/codis",    "sys": "Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux",    "hostname": "localhost.localdomain",    "datacenter": ""}   

jodis(codis3)节点信息(/jodis/{PRODUCT_NAME}/proxy-{HASHID})

{    "addr": "10.0.50.140:19000",    "admin": "10.0.50.140:11080",    "start": "2017-05-11 19:16:32.062864035 +0800 CST",    "state": "online",    "token": "fef134d865b564254897b90fb4bd01c9"}

注:通过实践证明时机当jodis_compatible = true时,注册地址不是/zk/codis/db_{PRODUCT_NAME}/proxy-{HASHID},而是/zk/codis/db_{PRODUCT_NAME}/proxy/{HASHID}

总结:当在codis3环境想要使用codis2格式的proxy节点信息时,我们可以:(1)jodis_compatible = true,使用/zk/codis/db_{PRODUCT_NAME}/proxy路径下的节点;
(2)jodis_compatible = false,使用/jodis/{PRODUCT_NAME}下的节点信息

0 0