与Linux的区别及架构
1、与Linux的区别
- 树形结构,第一级节点是/节点
- 类似于文件系统
-
Linux
有目录和文件之分
- 目录:
不存内容
,允许有下一级 - 文件:
存储内容
,但是没有下一级
- 目录:
-
Zookeeper
只有节点,不分目录和文件
- 节点:Znode,文件节点
可以存储内容,也允许有下一级节点
-
2、Zookeeper的架构
- 本质:Zookeeper实际是一个
文件系统
- 通过读写文件实现上面的功能
- 功能
统一服务
:将共享的配置存储在Zookeeper中分布式锁
:将工作状态的生成的文件存储在zookeeper中进行选举命名服务
:将新的命名创建一个文件在zookeeper中
- 区别:与别的文件系统有什么 不一样
- 只用于存储一些
关键性
的数据 - 每个文件节点存储的容量
不能超过1M
- 类似于Linux的文件系统结构,
从/开始
- 只用于存储一些
- Zookeeper是专门为分布式的架构去提供服务的?
- 如何保证Zookeeper不宕机?
- Zookeeper自己本身也是分布式,而且是主从架构
- Zookeeper中所有的节点是
公平节点
:每个节点上存储的数据是一模一样的 - Zookeeper要保证自身任何一台机器宕机了,Zookeeper照样能提供服务
- 如果我们将一个文件拆分成三份,每台机器存了一份,如果有一台机器宕机了,这个文件只剩2/3了,就丢失了一部分,就无法提供一致性服务
- Zookeeper中所有的节点是
- 主:leader
- 广播:就是同步操作
将要写入的数据同步给其他所有的follower节点
- 保证Zookeeper分布式集群中每一台机器上存储的内容是一模一样
- 只要同
步超过半数
,这次写入就成功了 - 失败:所有节点全部没有写入
- 接客
- 负责接收客户端的读和写的请求
只有leader能写
- 广播:就是同步操作
- 从:Follower
- 接客:负责接收和处理客户端的读的请求
将写的请求必须转发给leader节点
- 接客:负责接收和处理客户端的读的请求
- 问题:如果leader节点宕机了,就没有节点能实现将数据写入zookeeper
- zookeeper自己能给自己选举
- 如果leader故障
- 所有的Follower会重新选举一个新的leader出来
3、为什么zookeeper要做分布式的?
- 为了避免zookeeper的一台机器宕机,其他的zookeeper的节点照样可以提供服务
- 如果zookeeper只做一台,一旦宕机故障,zookeeper就失效了,所有依赖于zookeeper的分布式服务就失效了