zookeeper学习笔记(一)--快速入门与集群部署
一、分布式系统面临的挑战
-
什么是分布式
- 分布式的特点
- 分布式技术
- 分布式面临的问题
进程与进程之间
一、单体架构
- Jvm内部调用
- 单点故障
二、集群架构
-
分布式session问题》session center解决 redis
-
数据库
读写分离
降低主库的查询、业务:读多写少、主从同步
Proxy:mycat、altas、mysql-proxy
Jdbc:tddl、sharding-jdbc
换数据库
分库分表
不要把鸡蛋放在一个篮子里,本质:热点数据的问题
垂直/水平
Proxy:mycat、altas
Jdbc:tddl、sharding-jdbc
云数据库(Tidb pingcap)
三、服务化
周四:商品部门上新、会员部门改bug
上线步骤:开发、测试、预演、生产
还有问题 回滚 会员回滚
业务垂直
RPC:远程调用
框架:dubbo、motan(分布式)
如果更多的应用
调用之间更复杂了
排查bug问题:elk(分布式专题)
依赖配置也是个问题:分布式配置中心 disconf(zk) diamond(zk)(分布式专题)
消息中间件:异步、解耦、消峰
Kafka、rocketmq、activemq、rabbitmq
四、Zk在分布式系统如何应用
分布式配置中心
分布式job
服务注册于发现
存储数据的》mysql
xxl-job
五、Zookeeper的介绍
官方:
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
我的:
Yahoo开发开源、恭喜apache
动物管理员
四、Zookeeper搭建
一、单机模式
1、官网下载
2、上传
3、解压tar -zxvf xxx
4、修改conf mv zoo_sample.cfg zoo.cfg
5、启动
sh zkServer.sh
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.9/bin/../conf/zoo.cfg
Usage: zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
6、验证
sh zkServer.sh status |jps
- 连接
sh zkCli.sh
二、集群模式
1、修改zoo.cfg
2、指定myid服务号
集群角色介绍:
Leader:
Leader作为整个ZooKeeper集群的主节点,负责响应所有对ZooKeeper状态变更的请求。它会将每个状态更新请求进行排序和编号,以便保证整个集群内部消息处理的FIFO,写操作都走leader,zk里面leader只有一个
Follower :
Follower的逻辑就比较简单了。除了响应本服务器上的读请求外,follower还要处理leader的提议,并在leader提交该提议时在本地也进行提交。 另外需要注意的是,leader和follower构成ZooKeeper集群的法定人数,也就是说,只有他们才参与新leader的选举、响应leader的提议。 帮助leader处理读请求,投票权
Observer :
如果ZooKeeper集群的读取负载很高,或者客户端多到跨机房,可以设置一些observer服务器,以提高读取的吞吐量。Observer和Follower比较相似,只有一些小区别:首先observer不属于法定人数,即不参加选举也不响应提议;其次是observer不需要将事务持久化到磁盘,一旦observer被重启,需要从leader重新同步整个名字空间。 没有投票权利,可以处理读请求
zookeeper命令介绍:
部署一个分布式zk集群
connect host:port
get path [watch]
ls path [watch]
set path data [version]
rmr path
delquota [-n|-b] path
quit
printwatches on|off
create [-s] [-e] path data acl
stat path [watch]
close
ls2 path [watch]
history
listquota path
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path [version]
setquota -n|-b val path