ZK出现:zxid 0x02 our last zxid is 0x0 client must try another server

ZK出现:zxid 0x02 our last zxid is 0x0 client must try another server_第1张图片

现象:Refusing session request for client /ip:30538 as it has seen zxid 0x5009678d0 our last zxid

       拒绝来自zkCli的请求,因为其携带的事务ID(zxid)  > zkServer的事务ID.

解决方法:重启所有客户端(例如用到zookeeper的web项目).

原因:在重启ZK的时候,曾经删除过数据目录,这样造成zkid存在问题。客户端记录的是某个id,而服务端重启之后并且删除数据目录之后,id编号从0x0开始。

    Zookeeper的zxid会由于状态的变更主键递增1,为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。这在选举的时候启动至关重要。

    所以一旦客户端的id比服务端大,服务端是拒绝连接的。

问题:事务id由谁分配?一个时刻内一台client 与server之间只有一个吗?zk集群内同步吗?保存在哪?

你可能感兴趣的:(ZK出现:zxid 0x02 our last zxid is 0x0 client must try another server)