Zookeeper隐藏通道问题
使用Zookeeper最容易犯的错误便是隐藏通道问题,
什么是隐藏通道问题呢
如上图,隐藏通道问题即,客户端c1操作了Zookeeper,然后通知客户端c2读取Zookeeper中的状态,但是c2客户端读取Zookeeper状态时,c1对Zookeeper的操作还没有及时的更新,所以此时c2读取的Zookeeper状态是错误的
隐藏通道问题造成的原因:
C1直接向C2发送通知
解决方法:
使用Zookeeper进行所有涉及Zookeeper状态的通信;
如上图的情况,可以使C2在Zookeeper节点设置监视点来替代从C1接收消息,通过监视点可以知道Zookeeper状态的改变,从而消除隐藏通道问题。