ZK 从入门到放弃 入门篇

发布于: 21 小时前
ZK 从入门到放弃 入门篇

写在前面

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

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

什么是Zookeeper

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

  • 数据存储在内存中,就会有高性能的读取与存储

  • 类型文件系统的树形结构(文件和目录)

  • 高吞吐量

  • 低延迟

  • 集群高可靠

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

何为分布式协调服务

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

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

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

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

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

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

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的安装,非常简单,官网,有着很详细的文档。

下载

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

安装目录如下所示:

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

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

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

完成客户端连接

发布于: 21 小时前 阅读数: 5
用户头像

小隐乐乐

关注

学会思考,才是进步的一大本质要求 2017.04.28 加入

公众号:进阶架构师 作者

评论

发布
暂无评论
ZK 从入门到放弃 入门篇