zookeeper客户端如何选服务器

使用zk时需要为客户端配置zk服务器的地址,类似192.168.0.1:2181,192.168.0.1:2182,192.168.0.1:2183(/apps/x)(后面可以加上应用的隔离命名空间,只有该应用可以访问该空间下的所有znode)
zk底层是用HostProvider实现的,可以自己是先HostProvider,但是要满足三要素:

  1. next()方法必须要有合法的返回值,不能有null。
  2. next()方法必须返回已解析的InetSocketAddress对象。
  3. size()方法不能返回0

zk对HostProvider的默认实现StaticHostProvider的实现方式:

  1. 将地址打散,随机形成一个地址环,取地址时循环取,该操作只有在初始化时完成。
  2. 设置currentIndex和lastIndex,初始值-1相等。取地址是,currentIndex向前进1,如果发现两个值相等,则等待spinDelay毫秒时间。
    整个过程类似round robin 的调度策略。

其他策略

  1. 动态变更的地址列表管理。
    自定义一个HostProvider,定时从DNS或者配置管理中心上解析出zk的地址列表,如果该列表变更,则更新到serverAddresses集合中,下次调用next()时自然生效。
  2. 实现同机房优先策略。
    将地址按照机房维度划分,每次取先取同机房的循环列表。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值