64-分布式协调工具-ZooKeeper实现选举策略与哨兵机制

文章目录

        • 1. zookeeper实现master选举
        • 2. Zookeeper实现哨兵机制代码

1. zookeeper实现master选举

64-分布式协调工具-ZooKeeper实现选举策略与哨兵机制_第1张图片

2. Zookeeper实现哨兵机制代码
@Component
public class MyApplicationRunner implements ApplicationRunner {

	// 创建zk连接
	ZkClient zkClient = new ZkClient("127.0.0.1:2181");
	private String path = "/election";
	@Value("${server.port}")
	private String serverPort;

	public void run(ApplicationArguments args) throws Exception {
		System.out.println("项目启动完成...");
		createEphemeral();
		// 创建事件监听
		zkClient.subscribeDataChanges(path, new IZkDataListener() {

			// 节点被删除
			public void handleDataDeleted(String dataPath) throws Exception {
				// 主节点已经挂了,重新选举
				System.out.println("主节点已经挂了,重新开始选举");
				createEphemeral();
			}

			public void handleDataChange(String dataPath, Object data) throws Exception {

			}
		});

	}

	private void createEphemeral() {
		try {
			zkClient.createEphemeral(path, serverPort);
			ElectionMaster.isSurvival = true;
			System.out.println("serverPort:" + serverPort + ",选举成功....");
		} catch (Exception e) {
			ElectionMaster.isSurvival = false;
		}
	}

}

你可能感兴趣的:(笔记,分布式协调工具)