20240302-1-ZooKeeper面试题(三)

21. 集群最少要几台机器,集群规则是怎样的?

集群规则为 2N+1 台,N>0,即 3 台。

22. 集群支持动态添加机器吗?

其实就是水平扩容了,Zookeeper 在这方面不太好。两种方式:第 62 页 共 485 页全部重启:关闭所有 Zookeeper 服务,修改配置之后启动。不影响之前客户端的会话。

逐个重启:在过半存活即可用的原则下,一台机器重启不影响整个集群对外提供服务。这是比较常用的方式。3.5 版本开始支持动态扩容。

23. Zookeeper 对节点的 watch监听通知是永久的吗?为什么

不是永久的?

不是。官方声明:一个 Watch 事件是一个一次性的触发器,当被设置了 Watch的数据发生了改变的时候,则服务器将这个改变发送给设置了 Watch 的客户端,以便通知它们。

为什么不是永久的,举个例子,如果服务端变动频繁,而监听的客户端很多情况下,每次变动都要通知到所有的客户端,给网络和服务器造成很大压力。

一般是客户端执行 getData("/节点 A",true),如果节点 A 发生了变更或删除,客户端会得到它的 watch 事件,但是在之后节点 A 又发生了变更,而客户端又没有设置 watch 事件,就不再给客户端发送。

在实际应用中,很多情况下,我们的客户端不需要知道服务端的每一次变动,我只要最新的数据即可。
24. Zookeeper 的 java 客户端都有哪些?

java 客户端:zk 自带的 zkclient 及 Apache 开源的 Curator。

25. chubby 是什么,和 zookeeper 比你怎么看?

chubby 是 google 的,完全实现 paxos 算法,不开源。zookeeper 是 chubby的开源实现,使用 zab 协议,paxos 算法的变种。

26. 说几个 zookeeper 常用的命令。

常用命令:ls get set create delete 等。

27. ZAB 和 Paxos 算法的联系与区别?

相同点:

1、两者都存在一个类似于 Leader 进程的角色,由其负责协调多个 Follower 进程的运行

2、Leader 进程都会等待超过半数的 Follower 做出正确的反馈后,才会将一个提案进行提交

3、ZAB 协议中,每个 Proposal 中都包含一个 epoch 值来代表当前的 Leader周期,Paxos 中名字为 Ballot

不同点:

ZAB 用来构建高可用的分布式数据主备系统(Zookeeper),Paxos 是用来构建分布式一致性状态机系统。

28. Zookeeper 的典型应用场景

Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员可以使用它来进行分布式数据的发布和订阅。

通过对 Zookeeper 中丰富的数据节点进行交叉使用,配合 Watcher 事件通知机制,可以非常方便的构建一系列分布式应用中年都会涉及的核心功能,如:

1、数据发布/订阅

2、负载均衡

3、命名服务

4、分布式协调/通知

5、集群管理

6、Master 选举

7、分布式锁

8、分布式队列

相关推荐
March.s4 小时前
Kubernetes 全景导览:从部署演进到云原生底座
云原生·kubernetes·dubbo
熊出没5 小时前
云原生架构落地实践:Kubernetes 生产级配置与 Service Mesh 流量治理
云原生·架构·kubernetes·istio
xianyuCcCcCCCcc10 小时前
Ceph 分布式存储:核心架构与集群部署
分布式·ceph·架构
真上帝的左手11 小时前
10. 软件设计&架构-分布式文件存储系统
分布式·架构·应用架构
CCblandy12 小时前
一致性哈希到底省了多少搬迁?本机实测 3 轮:取模 6→7 搬 85.8%,V=128 只搬 14.3%,虚拟节点太少会被倾斜骗
后端·python·云原生·性能优化·架构
code_slave(码畜)12 小时前
微服务架构落地:OpenFeign 服务远程调用 + 线程池隔离架构实战 —— 超时控制、重试机制、线程池隔离,防雪崩
spring boot·spring cloud·微服务·云原生·架构·openfeign
涵美女程序猿13 小时前
ChatCut online 剪微服务熔断测试录屏:仪表盘告警、降级日志与恢复时刻怎样对应
程序人生·微服务·云原生·架构·电脑
古城小栈13 小时前
Docker Compose 云原生的底座
docker·云原生·容器
分布式存储与RustFS15 小时前
训练集放在 RustFS 上,怎么像本地盘一样快?用 Curvine 加一层 POSIX 缓存
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
easy_coder15 小时前
Kubernetes 三大探针:Startup、Liveness 与 Readiness
云原生·容器·kubernetes