概述
Zookeeper概述
相信有过微服务经验的同学一定听说过Zookeeper、Nacos等注册中心、配置中心的大名,从今天开始系统认真学习一下Zookeeper的基本原理;
首先抛出几个问题,这也是解决Zookeeper这类中间件到底解决了什么问题的关键:
- Zookeeper是什么?
- Zookeeper能做什么?
Zookeeper是什么?
根据官网文档的介绍:
ZooKeeper: A Distributed Coordination Service for Distributed Applications
翻译过来的话便是Zookeeper是一个针对分布式应用的分布式协调程序。Zookeeper是一个集群的管理者,将简单易用的接口提供给用户;可以理解为所有注册到服务中心的服务们的管理者;
Zookeeper能做什么?
我在项目中使用到Zookeeper的地方一般是作为dubbo等RPC框架的注册中心,但是Zookeeper的功能远不止这么点,按照大神们的总结来看,Zookeeper一般有以下用途:
- 命名服务
- 配置管理
- 集群管理
- 分布式锁
- 队列管理
在后续的博客中,会根据每一种用途针对JavaAPI进行详细的讲解。
Zookeeper的设计特点
Zookeeper的特点有以下:
Zookeeper的设计特点并不复杂,Zookeeper允许通过一个共享的层次命名空间进行相互协调,其存储架构类似于一个文件系统,此命名空间由在Zookeeper中称为znode的数据寄存器存储。并且Zookeeper中的znode都是直接在内存中进行操作的,所以效率很高。
Zookeeper是可复制的,Zookeeper与其协调的分布式进程一致,是可复制的(图片来自Apache Zookeeper官网);
关于Zookeeper的复制详情,将会在讲述完Zookeeper的用途之后进行博客讲解。
Zookeeper是严格有序的,Zookeeper是通过事务ID(zxid)保证事务的顺序一致性的,具体内容后期分析;
Zookeeper是快速的,尤其是读为主的业务中;
而如果用简介的语言可以表述成以下特点:
- 顺序一致性:从同一客户端发起的事务请求最终会严格地按照顺序被应用到Zookeeper中;
- 原子性:所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的;
- 单一系统映像:无论客户端连接到哪一个Zookeeper服务器上,其服务端数据模型都是一致的;
- 可靠性:一旦一次更改请求被应用,更改结果便会持久化,直到被下一次更改覆盖;
Zookeeper的命名空间以及数据模型的设计
Zookeeper数据节点称为znode,其可以看做是一个树,每一层不仅可以有子节点,同时还可以自己存储数据(图片来自PrettyZoo,一个常用的Zookeeper可视化工具);
下图是官方网站示例:
关于znode后续的内容,将会在后续博客中讲解。
最后
以上就是忐忑西装为你收集整理的Zookeeper基础学习(一):概述篇Zookeeper概述Zookeeper的设计特点的全部内容,希望文章能够帮你解决Zookeeper基础学习(一):概述篇Zookeeper概述Zookeeper的设计特点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复