ZK 从入门到放弃 入门篇

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 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实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
5月前
|
消息中间件 Java 网络安全
JAVAEE分布式技术之Zookeeper的第一次课
JAVAEE分布式技术之Zookeeper的第一次课
537 0
|
5月前
|
存储 消息中间件 网络协议
深入浅出Zookeeper(一):概览
Zookeeper最早是起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多软件系统都需要依赖一个系统来协同。但是这样的系统往往都存在单点问题。基于这个背景,雅虎的开发者开发了Zookeeper——一个通用无单点问题的分布式协同服务系统。
72 1
|
消息中间件 存储 Kafka
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建(下)
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建(下)
174 0
|
消息中间件 NoSQL 中间件
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建(上)
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建
321 0
|
JavaScript C# 开发工具
(MonoGame从入门到放弃-1) MonoGame环境搭建
(MonoGame从入门到放弃-1) MonoGame环境搭建
351 0
|
SQL 关系型数据库 分布式数据库
citus实战系列之一入门篇
citus是一款基于PostgreSQL的开源分布式数据库,自动继承了PostgreSQL强大的SQL支持能力和应用生态(不仅仅是客户端协议的兼容还包括服务端扩展和管理工具的完全兼容)。 和其他类似的基于PostgreSQL的分布式方案,比如GreenPlum,PostgreSQL-XL,PostgreSQL-XC相比,citus最大的不同在于citus是一个PostgreSQL扩展而不是一个独立的代码分支。
8692 0
|
存储 Dubbo 前端开发
ZK 从入门到放弃 入门篇
ZK 从入门到放弃 入门篇
144 0
ZK 从入门到放弃 入门篇
|
Java API
Zookeeper入门看这篇就够了(2)
Zookeeper入门看这篇就够了
123 0
Zookeeper入门看这篇就够了(2)
|
存储 分布式计算 网络协议
Zookeeper入门看这篇就够了(1)
Zookeeper入门看这篇就够了
197 0
Zookeeper入门看这篇就够了(1)
Zookeeper入门看这篇就够了(3)
Zookeeper入门看这篇就够了
120 0
下一篇
无影云桌面