Skip to content

Latest commit

 

History

History
 
 

SpringCloud-Zookeeper

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Zookeeper一些学习记录:

  1. zookeeper HA 实现主备切换原博文地址
    主要实现思路:
    avatar

    1.1 启动server时注册一个临时的有序的子节点(注意,一定要是临时有序的),将自己注册的子节点保存在一个全局变量中

    1.2 获取父节点下所有的子节点,排序,然后将自己的节点与最小子节点比较,如果相等则成为主机,不相等则等待。

    1.3 实现Watcher接口,当父节点发生变化时,执行上两个步骤

  2. zookeeper HA 实现负载均衡原博文地址
    主要实现思路:

    2.1 注册:首先你需要确定一个父节点,在这里父节点的名称暂且就叫/parentNode;
    每个server端启动时首先向zk的集群的父节点/parentNode下去注册一个临时的子节点,
    这样当有N台server时,注册的子节点就是/parentNode/server1、/parentNode/server2.........、/parentNode/serverN。
    节点的数据就存每台server的ip 与port,这样你服务端不管是用rmi协议还是http协议,都可以向这个服务器发送请求了。

    2.2 获取服务列表:在Client端实现轮询分发的功能,实现Watcher接口,这会让你实时的监控服务端的变化。
    首先去获取父节点/parentNode下所有的子节点,得到之前存的ip与port,然后将这些列表缓存到一map中,
    这里就叫serverUrlCacheMap。由于实现了Watcher接口,当父节点发生变化时zk 的集群会通知Client端,
    此时Client端只要重新获取父节点下所有子节点的数据,重新缓存即可

    2.3 轮询分发:定义一个全局变量index ,每次发起请求时,直接去serverUrlCacheMap中获取这个编号的URL,
    然后发送给server,就可达到轮询分发的功能。

  3. zookeeper 的EPHEMERAL节点机制实现服务集群的陷阱原博文地址