如何知道是否有人在使坏?
|
ZXID有两部分组成:
ZXID的低32位是计数器,所以同一任期内,ZXID是连续的,每个结点又都保存着自身最新生效的ZXID,通过对比新提案的ZXID与自身最新ZXID是否相差“1”,来保证事务严格按照顺序生效的。 8、面试官:你提到了Leader,你知道Zookeeper的服务器有几种角色嘛?Zookeeper下Server工作状态又有几种呢? 「小菜鸡的我:」 Zookeeper 服务器角色 Zookeeper集群中,有Leader、Follower和Observer三种角色 「Leader」 Leader服务器是整个ZooKeeper集群工作机制中的核心,其主要工作: 事务请求的唯一调度和处理者,保证集群事务处理的顺序性 集群内部各服务的调度者 「Follower」 Follower服务器是ZooKeeper集群状态的跟随者,其主要工作:
「Observer」 Observer是3.3.0 版本开始引入的一个服务器角色,它充当一个观察者角色——观察ZooKeeper集群的最新状态变化并将这些状态变更同步过来。其工作:
Zookeeper下Server工作状态 服务器具有四种状态,分别是 LOOKING、FOLLOWING、LEADING、OBSERVING。
9、面试官:你说到服务器角色是基于ZooKeeper集群的,那你画一下ZooKeeper集群部署图吧?ZooKeeper是如何保证主从节点数据一致性的呢? 「小菜鸡的我:」
ZooKeeper集群部署图 ZooKeeper的Watcher机制主要包括客户端线程、客户端 WatcherManager、Zookeeper服务器三部分。 客户端向ZooKeeper服务器注册Watcher的同时,会将Watcher对象存储在客户端的WatchManager中。 当zookeeper服务器触发watcher事件后,会向客户端发送通知, 客户端线程从 WatcherManager 中取出对应的 Watcher 对象来执行回调逻辑。 Watcher特性总结
6、面试官:你对Zookeeper的数据结构都有一定了解,那你讲下Zookeeper的特性吧 「小菜鸡的我:(我背过书,啊哈哈)」 Zookeeper 保证了如下分布式一致性特性:
7、面试官:你刚提到顺序一致性,那zookeeper是如何保证事务的顺序一致性的呢? 「小菜鸡的我:(完蛋了这题不会)」 这道题可以看下这篇文章(本题答案来自该文章):聊一聊ZooKeeper的顺序一致性 需要了解事务ID,即zxid。ZooKeeper的在选举时通过比较各结点的zxid和机器ID选出新的主结点的。zxid由Leader节点生成,有新写入事件时,Leader生成新zxid并随提案一起广播,每个结点本地都保存了当前最近一次事务的zxid,zxid是递增的,所以谁的zxid越大,就表示谁的数据是最新的。
ZXID的生成规则如下: (编辑:平顶山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
