zookeeper c api连接管理问题

背景:使用zookeeper3.4.8   的 c api写了一个客户端来测试zookeeper集群

在测试到其中一个点的时候,遇到一些困惑:

假如zookeeper集群启动了三个zookeeper实例,对应ip端口分别是:host1:port1,host2:port2,host3:port3

然后在客户端侧,调用zookeeper_init的时候,也需要提供一个ip列表。

问题就在如何配置这个ip列表:

1,假如我配置这个IP列表为host1:port1,host2:port2,host3:port3, 那么启动多个客户端,整个跑起来都正常。各个客户端会根据某个负载均衡的算法连接到不同的zookeeper实例上面。并且停掉某一个zookeeper服务,客户端能继续正常运行(切换连接到其它zookeeper服务)。

2,假如我配置这个ip列表为:host1:port1。 那么当我将host1:port1对应的zookeeper服务停到(这时还有两个zookeeper服务在正常运行),客户端就会断开连接,并且不会自动切换连接到其它zookeeper服务。客户端就会进入异常状态。


上面的问题可以总结为:在zookeeper3.4.8版本里面,客户端必须要静态配置所有zookeeper服务节点ip端口, 客户端才能更好地做容灾服务。

但是这个静态配置就破坏了分布式的思维,例如假如我现在需要对zookeeper集群扩容(从三个实例扩容到五个实例)。那么我需要更改所有客户端的ip端口静态配置并且重启客户端。

对于客户端而言,最理想的状态是,不需要关心集群里面的实现细节,也不需要关心集群的实例个数。


不过对于上面问题,在zookeeper3.5版本后,已经有提供相关api实现了。详细见https://issues.apache.org/jira/browse/ZOOKEEPER-762






收集的其它一些相关文章:

Zookeeper开发常见问题

http://tech.uc.cn/?p=1189

zookeeper c 客户端使用情景分析(1.整体框架)

http://tech.uc.cn/?p=974

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值