1. zookeeper实现master选举
2. Zookeeper实现哨兵机制代码
@Component
public class MyApplicationRunner implements ApplicationRunner {
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;
}
}
}