Zookeeper隐藏通道问题

使用Zookeeper最容易犯的错误便是隐藏通道问题,
什么是隐藏通道问题呢Zookeeper隐藏通道问题
如上图,隐藏通道问题即,客户端c1操作了Zookeeper,然后通知客户端c2读取Zookeeper中的状态,但是c2客户端读取Zookeeper状态时,c1对Zookeeper的操作还没有及时的更新,所以此时c2读取的Zookeeper状态是错误的

隐藏通道问题造成的原因
C1直接向C2发送通知

解决方法
使用Zookeeper进行所有涉及Zookeeper状态的通信;
如上图的情况,可以使C2在Zookeeper节点设置监视点来替代从C1接收消息,通过监视点可以知道Zookeeper状态的改变,从而消除隐藏通道问题。