最近准备面试啊,希望总结一下去年使用zookeeper的经历。翻翻以前的接口文档,发现都记得很清楚,连版本记录都有,所以写个博客也是一件很简单的事。
基于zookeeper实现了北上广三级的异地容灾模块,实际业务逻辑很简单,但是由于是使用c++开发,暂时没有很好的zookeeper的c接口库,所以所有代码都是亲写,亲测啊。
工程描述:下级节点,例如北京下的某分公司,去连接上级节点,例如北京的某总公司,如果上级节点宕机,可以切换到上级的另一个服务器,可能是北京的,当然如果北京的节点宕机了,就请求连接上海的,或者上海的节点宕机,就连接广州的,如果连接过程中,北京的节点恢复,会自动连接网络延迟最低的节点。
假设总公司是1级,下面的市分公司是2级,区是三级。。。。。。
目标:秒级切换,保证服务的高可用。
程序说明:两个程序:一个register程序,一个monitor程序。
节点示例:
- 永久节点:bj,sh,gz
- bj的服务器在bj目录下建brokerinfo的顺序节点,节点的值为服务器的ip,port。
1. 注册函数