jodis

本文介绍了阅读Jodis代码的心得,Jodis作为Codis的数据源封装,利用Zookeeper监控Codis Proxy并实现负载均衡。在使用中发现Jodis监听的节点存在与Codis Proxy实际行为不一致的情况,导致在未手动添加Proxy的admin地址到dashboard时,连接可能不可用。建议改进监听路径以解决此问题。
摘要由CSDN通过智能技术生成

今天读了下jodis的代码。
配合codis使用的。
其主要着眼点是数据源,对jedispool做了封装。
通过zookeeper上注册的codis proxy个数创建相应个数的jedispool封装为RoundRobinJedisPool,并监听节点的变化,proxy的地址会传回来,可以及时增删配置的jedispool。
但不能根据proxy自定义的配置除host,port之外的其他jedispool配置。

然后每次获取连接的时候就可以做负载均衡了,依次轮询所有jedispool拿连接。

自己封装codis的客户端时可以参考这个思路。


Update:

jodis监听的节点,参见保存在zookeeper的jodis目录下节点数据,再看源码的CodisProxyInfo类,可以知道其监听的是/codis3/codis-demo/jodis。
但这里应该监听的是/codis3/codis-demo/proxy。
proxy在启动后,除非在codis的dashboard界面手动加入此proxy配置的admin地址,否则proxy会一直waiting online。
但/codis3/codis-demo/jodis路径下会新增这个proxy的信息,虽然jodis的源码中判断了proxy是否online,但是就测试来看即使没有在dashboard手动加入此proxy的admin,注册在jodis路径下的proxy信息中的state值仍未onlien,这样判断就失效了。
这样造成的结果是:

Caused by: java.util.NoSuchElementExcepti
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值