用户传入的服务器地址列表,首先会放入一个 ConnectStringParser 的对象,这个对象主要做2件事情:1.解析 chootPath,2.保存服务器地址列表。
HostProvider 的几个主要的方法 :
-
int size(); 不能返回0。
-
InetSocketAddress next(long spinDelay); 必须要有合法的返回值,不能返回 null或其他不合法的值。
-
void onConnected();必须返回已解析的 InetSocketAddress。ConnectStringParser中的并不是解析好的。
StaticHostProvider 是 HostProvider的默认实现,next 方法的主要做法是将服务器地址列表随机打散后拼成一个环形循环队列(一次性的),以后每次获取都是按照这次形成的环形队列访问。
设想:
1.动态变更的地址列表管理器
能定时从 DNS 或一个配置管理中心上解析出 Zookeeper 服务器地址列表。
2.同机房优先策略
跨机房网络传输延时比较大,可以考虑同机房优先策略。