🏷️ 相关标签
🎬 相关推荐
💬 网友评论
目标
ZooKeeper 是用来做什么的?
之前没有ZK,为什么会诞生 ZK?
凭直觉:
ZooKeeper 是用于简化分布式应用开发的,对开发者屏蔽一些分布式应用开发过程中的底层细节
ZooKeeper 对外暴露简单的 API,用于支持分布式应用开发
ZooKeeper 在提供上述功能的同时,其还是一个 高性能、高可用、高可靠的分布式集群
上面说这么多,总结一下,ZK 能解决分布式应用开发的问题,ZK 能很好的解决问题。到这一步,疑问就更多了:
分布式应用开发,有哪些常见问题?ZK 是如何屏蔽这些底层细节的?
ZooKeeper 对外暴露了那些 API?这些 API 如何支持分布式应用开发的?这些 API 还能简化吗?API 的语义性怎么样?
ZooKeeper 自身是一个高性能、高可用、高可靠的分布式集群,那有个简单的问题:
高性能是指什么?ZooKeeper 为了达到高性能,做了哪些工作?
高可用?
高可靠?
为什么有 ZooKeeper
一个应用程序,涉及多个进程协作时,业务逻辑代码中混杂有大量复杂的进程协作逻辑。
上述多进程协作逻辑,有 2 个特点:
处理复杂
处理逻辑可重用
因此,考虑将多进程协作的共性问题拎出,作为基础设施,让 RD 更加专注业务逻辑开发,即:
ZooKeeper 就是上述多进程协作基础服务的一种。
ZooKeeper 的特点
ZooKeeper 有几个简单特点:
ZooKeeper 的 API:从 文件系统 API 得到的启发,提供简单的 API
ZooKeeper 运行在专用服务器上,跟业务逻辑分离,保证了高容错性和可扩展性
ZooKeeper 是存储设施,但特别注意
ZK上存储的数据聚焦为:协作数据(元数据),而不是应用数据,应用数据有自己的存储方案,例如 HDFS 等
ZK 本质上,可以看作一种特殊的 FS
特别说明:
应用数据和元数据,由于使用场景不同,对一致性和持久性的要求有差异, 因此,架构设计、数据治理过程中,应将 2 类数据独立看待、独立存储。
ZooKeeper 的使命
ZK 要解决的核心问题:
ZK 目标:简化分布式应用开发中,多进程协作问题。为分布式应用,提供高效、可靠的分布式协调服务(基础服务),例如:
统一的命名服务
分布式锁
进程崩溃检测
Leader 选举
配置管理:配置变更时,及时下发到各个 Client。 一个简单的问题:多进程的协作是什么?尼玛呀,有完没完,啥问题你都有,面对这个掉咋天的脑壳,还是回答一下。
多进程协作,整体分为 2 类:
协作:多进程需要一同处理某些事情,一些进程采取行动是的其他进程能够正常工作,例如:主从结构,M 向 S 分配任务,S 才会执行,否则 S 就保持空闲状态
竞争:两个进程不能同时工作,一个进程必须等待另个进程执行完毕,例如:主从结构,M 节点失效后,很多 S 都想成为 M,这时,就需要互斥锁,只有第一个获得锁的 S 成为 M
特别说明:
不跨网络协作:多进程,可以在同一台物理主机上,同步原语很方便(比如管道、共享内存、消息队列、信号量)
跨网络协作:多进程,分布在不同的物理主机上,ZK 关注这一类
跨网络多进程协作,进程通信,基本思路有 2 个:
消息机制:通过网络,直接信息交换,多消息传递算法,实现同步原语
共享存储:利用外部共享存储,实现多进程协作,要求共享存储提供有序访问,ZK 采用这种方式
真实系统中,跨网络通信,有几个共性问题:
消息延迟:由于网络原因,后发送先到达
处理器性能:由于系统调度原因,消息到达后,延迟处理
时钟偏移:不同
cp磕到元白,抖音推荐过来的,看着评分挺高就加入了书架。开篇用大量的笔墨交代了安史之乱的大背景,那些经历了安史之乱的诗人,后来的仕途好像都不怎么样。如“秋水芙蕖,倚风自笑”的王维、颠沛流离,凄凄惨惨,“诗是吾家事”的杜甫、不羁的赌徒李白、同患难共进退的刘柳、做梦都要梦到彼此的最佳灵魂伴侣元白、人如其诗一样飘渺摇摆的李商隐、日本僧人圆仁……随着朝代的兴衰交替,他们的一生也如这时代一样,漂泊浮沉,起起落落。如书中所言“人竭尽全力的追求与命运漫不经心的指向总是南辕北辙。”(这不仅是李白的人生,是杜甫王维的人生,是那个年代也是当代许多人的人生。)国家不幸诗家幸,赋到沧桑句便工。幸还是不幸呢
“推理剧集,主要是针对与犯罪有关的难解之谜,有逻辑地、徐徐加以破解的过程,是以趣味为主旨的一种影视。”
每篇都很精彩,都不是典型的犯罪,看的过程我就在想,或许推理剧集不一定要重点在犯罪,不是为了追求“真相”,而是为了探寻的那个过程,剧集家给我们看的只是其中一个“真相”。