带你进入zookeeper的世界
先说一点废话
- 如果要完全掌握一个技术,我觉得一本书都不够讲清楚的,甚至可能在我写文章的过程中会发现用词不准,或者误导广大群众了,那么大可以吐槽给我
- 前两天因为我们小组(大佬分享的,我还是个小白)做了技术分享,我的一个同事说不知道讲的什么是什么,觉得听不懂,好难啊,我有感而发做了个思路图给她,以便于她能更快的学会,那么我可以分享给更多的想要学会一门技术的人,何乐而不为?
- 分享的同时与我而言=复盘+进一步学习,毕竟每次看都会有收获
学习思路
我喜欢用图来表达问题,这样可以使得逻辑清晰,话不多说,先看一张小白的思维导图,更清楚的了解了我个文章的内容。
是什么?
了解一个基本的概念,然后一步一步深入剖析它到底是什么?
ZooKeeper is a centralized service for maintaining configuration
information, naming, providing distributed synchronization, and
providing group services. All of these kinds of services are used in
some form or another by distributed applications. Each time they are
implemented there is a lot of work that goes into fixing the bugs and
race conditions that are inevitable. Because of the difficulty of
implementing these kinds of services, applications initially usually
skimp on them, which make them brittle in the presence of change and
difficult to manage. Even when done correctly, different
implementations of these services lead to management complexity when
the applications are deployed.
ZooKeeper是一个集中的服务,用于维护配置信息、命名、提供分布式同步和提供组服务。所有这些类型的服务都以某种形式被分布式应用程序使用。每次实现它们时,都有大量的工作要做,以修复不可避免的bug和竞争条件。由于实现这类服务的困难,应用程序最初通常会忽略它们,这使得它们在发生变化时变得脆弱,难以管理。即使操作正确,这些服务的不同实现在部署应用程序时也会导致管理复杂性。
就是伟大的人类用了一种可以和计算机说话的语言创造出来的一个软件系统,这个软件系统解决了一些麻烦。
从几个不同的层面去了解zookeeper
架构层
源码层(待更)
怎么去看源码(跟入职一家公司看公司代码一样)
用了哪些牛皮的算法
用了什么数据模型
用了啥设计模式
为什么?
产生的历史背景,为什么要造一个动物园出来
相对于开发在⼀台计算机上运⾏的单个程序,如何让⼀个应⽤中多个 独⽴的程序协同⼯作是⼀件⾮常困难的事情。开发这样的应⽤,很容易让
很多开发⼈员陷⼊如何使多个程序协同⼯作的逻辑中,最后导致没有时间 更好地思考和实现他们⾃⼰的应⽤程序逻辑;又或者开发⼈员对协同逻辑
关注不够,只是⽤很少的时间开发了⼀个简单脆弱的主协调器,导致不可 靠的单⼀失效点。
怎么办?
如何使用它(如何部署,如何调用接口),以及用它来解决什么问题(应用场景)
应用层面(待更)
怎么安装?
如何配置?
如何调用接口?
常见使用场景?
- 数据发布和订阅
- 负载均衡
- 命名服务
- 分布式协调/通知
- 集群管理
- Master选举
- 分布式锁
- 分布式队列