Zookeeper基础学习(一):概述篇

Zookeeper概述

相信有过微服务经验的同学一定听说过Zookeeper、Nacos等注册中心、配置中心的大名,从今天开始系统认真学习一下Zookeeper的基本原理;
首先抛出几个问题,这也是解决Zookeeper这类中间件到底解决了什么问题的关键:

  1. Zookeeper是什么?
  2. Zookeeper能做什么?

Zookeeper是什么?

根据官网文档的介绍:

ZooKeeper: A Distributed Coordination Service for Distributed Applications

翻译过来的话便是Zookeeper是一个针对分布式应用的分布式协调程序。Zookeeper是一个集群的管理者,将简单易用的接口提供给用户;可以理解为所有注册到服务中心的服务们的管理者;

Zookeeper能做什么?

我在项目中使用到Zookeeper的地方一般是作为dubbo等RPC框架的注册中心,但是Zookeeper的功能远不止这么点,按照大神们的总结来看,Zookeeper一般有以下用途:

  1. 命名服务
  2. 配置管理
  3. 集群管理
  4. 分布式锁
  5. 队列管理

在后续的博客中,会根据每一种用途针对JavaAPI进行详细的讲解。

Zookeeper的设计特点

Zookeeper的特点有以下:

Zookeeper的设计特点并不复杂,Zookeeper允许通过一个共享的层次命名空间进行相互协调,其存储架构类似于一个文件系统,此命名空间由在Zookeeper中称为znode的数据寄存器存储。并且Zookeeper中的znode都是直接在内存中进行操作的,所以效率很高。

Zookeeper是可复制的,Zookeeper与其协调的分布式进程一致,是可复制的(图片来自Apache Zookeeper官网);
在这里插入图片描述
关于Zookeeper的复制详情,将会在讲述完Zookeeper的用途之后进行博客讲解。

Zookeeper是严格有序的,Zookeeper是通过事务ID(zxid)保证事务的顺序一致性的,具体内容后期分析;

Zookeeper是快速的,尤其是读为主的业务中;

而如果用简介的语言可以表述成以下特点:

  1. 顺序一致性:从同一客户端发起的事务请求最终会严格地按照顺序被应用到Zookeeper中;
  2. 原子性:所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的;
  3. 单一系统映像:无论客户端连接到哪一个Zookeeper服务器上,其服务端数据模型都是一致的;
  4. 可靠性:一旦一次更改请求被应用,更改结果便会持久化,直到被下一次更改覆盖;

Zookeeper的命名空间以及数据模型的设计

Zookeeper数据节点称为znode,其可以看做是一个树,每一层不仅可以有子节点,同时还可以自己存储数据(图片来自PrettyZoo,一个常用的Zookeeper可视化工具);在这里插入图片描述
下图是官方网站示例:
在这里插入图片描述

关于znode后续的内容,将会在后续博客中讲解。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值