分布式架构专题—分布式协调服务 zookeeper

本文详细介绍了ZooKeeper,一种分布式的协调服务,探讨了其在集群管理中的作用,包括数据一致性、选举机制及分布式应用的实现。同时,涵盖了CAP理论、BASE理论,并提供了单机与集群环境下的安装指南。

前言:

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户

中心化和去中心化:

分布式架构里面,很多的架构思想采用的是:当集群发生故障的时候,集群中的人群会自动“选举”出一个新的领导,最典型的是:zookeeper/etcd。

典型的 CAP/BASE 理论:

CAP 理论:

C:(一致性 Consistency):所有的节点上的数据时刻保持一致

A:(可用性 Avaliable):每个请求都能够收到一个响应,无论响应成功或者失败。

P:(分区容错 Partition-tolerance):表示系统出现脑裂之后,可能导致默写server与集群中的其他机器失去联系。

CAP 理论仅适用于Nosql场景,不适用于数据库系统,或者原子读写。

BASE 理论:

基于CAP理论,CAP理论并不适用于数据库事务(因为更新一些错误的数据而导致数据出现紊乱,无论什么样的数据库高可用方案都是徒劳),虽然XA 事务虽然可以保证数据库在分布式系统下的ACID特性,但是会带来性能方面的影响。

eBay 尝试了一种完全不同的套路,放宽了对事务的ACID的要求,提出了BASE理论

Basically avaliable 分片:数据库采用分片模式,把100W的用户数据分布在5个实例上,如果破坏了其中一个实例,还可以保证80%的用户可以访问数据库。

soft-state 软状态:在基于client/server模式的系统中,server端是否有状态,决定了系统是否具备良好的水平扩展,负载均衡,故障恢复等特性。server端承诺会维护 client 端状态数据,这个状态仅仅维持一小段时间,这段时间以后,server端就会丢失这个状态,恢复正常状态。

Eventually consistent:数据的最终一致性。

初步认识zookeeper:

zookeeper 是一个开源的分布式协调服务,是由雅虎创建的,基于google chubby。

是什么:是一个分布式数据一致性的解决方案。

能做什么:数据的发布/订阅(配置中心:disconf),负载均衡(dubbo利用zookeeper机制实现的),命名服务,master 选举(kafka,Hadoop,HBASE),分布式队列,分布式锁。

zookeeper 的特性:

顺序一致性:同一个客户端搭起的事务请求,最终会严格按照顺序被应用到zookeeper中。

原子性:所有的事务请求的处理结果在整个集群中的所有机器上的应用情况是一致的,也就是说,要么整个集群中的所有的机器都成功应用了某一个事务,要么都不应用。

可靠性:一旦服务器成功应用了某一个事务数据,并且对客户端做了响应,那么这个数据在整个集群中一定是同步并且保留下来的。

实时性:一旦一个事务被成功应用,客户端就能够立即从服务器读取到事务变更后的最新数据状态;(zookeeper 仅仅保证在一定时间内,近实时)

单机环境下 安装zookeeper:

1.下载zookeeper 的安装包。

https://archive.apache.org/dist/zookeeper/stable/

2.解压 zookeeper  :

解压:tar -zxvf zookeeper-3.5.5.tar.gz   

3.进入zookeeper-3.5.5:cd zookeeper-3.5.5/

进入 conf 目录下:cd conf/

复制一份 zoo_sample.cfg:cp zoo_sample.cfg  zoo.cfg

进入 zoo.cfg:vim zoo.cfg

进入bin目录中:cd ../bin/
有很多shell脚本

4.启动zookeeper: sh zkServer.sh xxx

看到很多命令,键入:sh zkServer.sh start 进行启动

5.连接zookeeper:sh zkCli.sh -server localhost:2181 (2181 zookeeper 默认端口号)

集群环境下安装zookeeper:

zookeeper 集群,包含三种角色:leader/follower/observer

Leader:接收所有Follower 的提案请求并统一协调发起提案的投票,负责与所有的Follower 进行内部的数据交换(同步);

Follower:直接为客户端服务并参与提案的投票,同时与Leader 进行数据交换(同步);

Observer:直接为客户端服务单并不参与提案的投票,同时也与Leader 进行数据交换(同步)。

搭建集群:

比如以下三台机器:

192.168.11.129

192.168.11.131

192.168.11.135

分别在三台机器中安装zookeeper并解压,进行启动测试,此处省略。

第一步:修改配置文件 zoo.cfg

vim zoo.cfg 

加入:

server.1=192.168.11.129:2181:3181

server.2=192.168.11.131:2181:3181

server.3=192.168.11.135:2181:3181

进行配置。

既:server.id=host:port:port  且 id不能重复,id 的取值范围是:1~255,用id来标识该机器再集群中的机器序列。

2181 代表zookeeper的端口号;后续客户端连接到zookeeper服务端需要这个端口号,zookeeper各个服务节点之间通信的一个端口号。

3181代表leader选举端口号;

server.x 代表集群中每台机器

第二步:创建myid.

dataDir:表示数据文件存储的目录,如:快照,事务日志。

在每一个服务器的dataDir 目录下创建一个myid的文件,文件就一行数据,数据内容是每台机器对应的serverID的数字。

第三步:启动zookeeper。

 

 

未完结,待续。。。

关于 阿里云盘CLI。仿 Linux shell 文件处理命令的阿里云盘命令行客户端,支持JavaScript插件,支持同步备份功能,支持相册批量下载。 特色 多平台支持, 支持 Windows, macOS, linux(x86/x64/arm), android, iOS 等 阿里云盘多用户支持 支持备份盘,资源库无缝切换 下载网盘内文件, 支持多个文件或目录下载, 支持断点续传和单文件并行下载。支持软链接(符号链接)文件。 上传本地文件, 支持多个文件或目录上传,支持排除指定文件夹/文件(正则表达式)功能。支持软链接(符号链接)文件。 同步备份功能支持备份本地文件到云盘,备份云盘文件到本地,双向同步备份保持本地文件和网盘文件同步。常用于嵌入式或者NAS等设备,支持docker镜像部署。 命令和文件路径输入支持Tab键自动补全,路径支持通配符匹配模式 支持JavaScript插件,你可以按照自己的需要定制上传/下载中关键步骤的行为,最大程度满足自己的个性化需求 支持共享相册的相关操作,支持批量下载相册所有普通照片、实况照片文件到本地 支持多用户联合下载功能,对下载速度有极致追求的用户可以尝试使用该选项。详情请查看文档多用户联合下载 如果大家有打算开通阿里云盘VIP会员,可以使用阿里云盘APP扫描下面的优惠推荐码进行开通。 注意:您需要开通【三方应用权益包】,这样使用本程序下载才能加速,否则下载无法提速。 Windows不第二步打开aliyunpan命令行程序,任何云盘命令都有类似如下日志输出 如何登出和下线客户端 阿里云盘单账户最多只允许同时登录 10 台设备 当出现这个提示:你账号已超出最大登录设备数量,请先下线一台设备,然后重启本应用,才可以继续使用 说明你的账号登录客户端已经超过数量,你需要先登出其他客户端才能继续使用,如下所示
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值