主从选举
实现思路
- 节点尝试创建主节点的临时节点
- 创建成功,则为主节点
- 创建失败,则启动对主节点的监听,并getdata主节点信息
- 监听节点监听到主节点发生的下线情况,则重新进行选举
实现代码
依赖
Apache的zk客户端
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.5</version>
</dependency>
逻辑封装
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.ZooKeeper;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Objects;
/**
* @author Xi Peng
* @Description 都去监控主节点版本
* @createTime 2022年09月27日 14:51:00
*/
public class ZkSelectionUtilsV2 {
private ZooKeeper zooKeeper;
private int index;
public static final String ZK_SERVER_PATH = "127.0.0.1:2181";
public static final String LEADER_PREFIX = "/testPath";
public static fin