ZK 从入门到放弃 入门篇

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: ZK 从入门到放弃 入门篇

写在前面

当公司的技术栈入坑分布式开发之后,必然不可获取的学习,是对ZK(Zookeeper)的学习与研究。ZK作为分布式开发中常用的一个组件,其重要性不言而喻。

在还没出现微服务的时间里,ZK独挑大梁,作为注册中心,实现服务之间的协调调度。随着微服务的兴起,才出现了一些其他的服务注册中心,如eureka、nacos等等。不管出现何种组件,ZK在实际的市场份额中,仍占有很大的比重,因此,学习ZK的必要性,不言而喻。


什么是Zookeeper

image.png

Zookeeper  简称ZK,是一种用于分布式应用程序的高性能协调服务,提供一种集中式信息存储服务,有着典型的特点。

  • 数据存储在内存中,就会有高性能的读取与存储
  • 类型文件系统的树形结构(文件和目录)
  • 高吞吐量
  • 低延迟
  • 集群高可靠

根据以上特点,ZK具有很多实际中使用的工作,常见的作用包括基于Zookeeper实现分布式统一配置中心、服务注册中心、分布式锁等

image.png

ZK,可以通过构建集群,来实现高可用。如上图所示,每一个Server称为Leader,然后每个Client是可以连接任何一个Server。ZK是一个C/S架构的组件。

何为分布式协调服务

谈到这个话题,就不得不去聊一下,技术架构的演进。技术架构,由传统的单体架构,发展到分布式架构。

以一个实例来说,有这样一个功能。一个电商网站,用户在线点击购买,然后系统完成下单,支付,出货逻辑。

在传统的单体架构中,应用独立部署,应用涵盖了前端展示页面、后端整个交互逻辑。整个系统的交互逻辑,都在单独的应用中实现。

image.png

相关的业务逻辑都在单体应用完成。

当架构演变为分布式架构之后,系统变得复杂,单体应用,按照一定规则,拆分成多个应用

image.png

业务逻辑,由多个应用完成。整个系统变得复杂,为了更好地实现业务逻辑,就需要有一个分布式协调员的角色出现。

同时呢,在单体应用架构中,对于多线程资源的竞争可以通过同步关键字或者加锁来实现,但是在分布式架构中,就变得复杂,如果需要实现分布式架构事务,也必然需要一个分布式协调员角色出现。

有了分布式协调这个前提,为了更好地实现这个职责,抽取服务中共性的部分,就形成了分布式协调服务。

Zookeeper的应用案例

说了这么多,那么目前来说Zookeeper都有哪些实际的应用案例呢?其实,是非常多的,我们来依次列举下。

Hbase:

作为一个大数据应用框架,其中使用Zookeeper进行Master选举,完成分布式服务间协调

Solr:

使用Zookeeper进行集群管理、Leader选举、配置管理

Dubbo:

Dubbo可谓是非常火的分布式应用框架,使用Zookeeper进行服务注册

Mycat:

分库分表中间件,使用Zookeeper进行集群管理、配置管理

Sharding-sphere:

分库分表客户端应用,使用Zookeeper进行集群管理、配置管理

Zookeeper的同类产品

Zookeeper有一些相似功能的同类产品,如Consul、Etcd、Doozer

它们有着基本相同的功能,其中Etcd是精简版的Zookeeper

Zookeeper的安装使用

Zookeeper的安装,非常简单,官网,有着很详细的文档。

下载

image.png

官网首页,点击下载页面,选择合适的版本、镜像进行下载,下载完毕,进行解压。

安装目录如下所示:

image.png

配置

进入conf文件夹,完成初始化配置

image.png

复制zoo.sample.cfg,创建新的文件zoo.cfg。如果自定义配置名字,需要在bin目录下环境命令内进行显式设置,如下所示

image.png

zoo.cfg 内配置参数,可以参考官方文档,https://zookeeper.apache.org/doc/r3.6.1/zookeeperAdmin.html#sc_configuration

启动

Zookeeper是C/S架构,因此分为服务端、客户端两部分。

进入bin目录

bin/zkServer.sh start

完成服务端应用启动

bin/zkCli.sh -server 127.0.0.1:2181

完成客户端连接

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
消息中间件 存储 Kafka
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建(下)
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建(下)
180 0
|
消息中间件 NoSQL 中间件
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建(上)
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建
340 0
|
IDE C# 开发工具
(MonoGame从入门到放弃-2) 初识MonoGame
(MonoGame从入门到放弃-2) 初识MonoGame
265 0
|
存储 分布式计算 Hadoop
Hadoop快速入门——第二章、分布式集群(第四节、搭建开发环境)(2)
Hadoop快速入门——第二章、分布式集群(第四节、搭建开发环境)
125 0
Hadoop快速入门——第二章、分布式集群(第四节、搭建开发环境)(2)
|
分布式计算 Hadoop
Hadoop快速入门——第二章、分布式集群(第四节、搭建开发环境)(1)
Hadoop快速入门——第二章、分布式集群(第四节、搭建开发环境)
96 0
Hadoop快速入门——第二章、分布式集群(第四节、搭建开发环境)(1)
|
存储 Dubbo 前端开发
ZK 从入门到放弃 入门篇
ZK 从入门到放弃 入门篇
153 0
ZK 从入门到放弃 入门篇
|
缓存 API Apache
小六六学Zookeeper(三)(上)
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820… 种一棵树最好的时间是十年前,其次是现在
171 0
|
Java API
Zookeeper入门看这篇就够了(2)
Zookeeper入门看这篇就够了
128 0
Zookeeper入门看这篇就够了(2)
|
存储 分布式计算 网络协议
Zookeeper入门看这篇就够了(1)
Zookeeper入门看这篇就够了
202 0
Zookeeper入门看这篇就够了(1)
|
算法 Java
小六六学Zookeeper(三)(下)
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820… 种一棵树最好的时间是十年前,其次是现在
146 0
下一篇
无影云桌面