使用apache ratis模拟了一些zk的功能
- 支持节点的创建、删除、查询等功能
- 支持节点的创建与删除事件的watch
支持的请求如下
server端运行ZookitsServerTest.start
client端运行ZookitsClientTest
ratis已经为我们解决了底层的分布式共识问题,对于上层应用者,只需要处理自身的逻辑即可,处理逻辑的入口就是状态机StateMachine
。例如本项目中,对状态机进行了重写,在状态机中对客户端请求的进行管理。
applyTransaction
:客户端发起的事务请求处理入口,一般为写请求query
:客户端发起的非事务请求处理入口,一般为读请求takeSnapshot
:对当前状态机进行快照,一般是事务数量达到一定的阈值就会触发
创建节点
client.sendRequest(
new CreateRequest()
.setPath(path)
);
删除节点
client.sendRequest(
new DeleteRequest()
.setPath(path)
);
监听节点删除事件
WatchRequest watchRequest = new WatchRequest();
watchRequest.setPath(path);
watchRequest.setType(WatchRequest.Type.DELETE);
watchRequest.setCallback(System.out::println);
client.callRequest(watchRequest);
ratis没有暴露对客户端session的管理 zk