dubbo入门
rpc远程调用框架
服务治理
集群容错机制
负载均衡
动态配置
服务治理
路由策略
1、 结构
生产者:提供接口
消费者:调用接口
注册中心:负载均衡,容错机制,路由,服务治理
监控中心:监控
2、 流程
1、注册到zk:zk创建节点,节点名称-节点值(服务器IP+port)
2、订阅:watch事件通知
3、监控中心:记录调用的次数及每次调用的状态
zookeeper基础
分布式协调工具
发布订阅watcher:监控节点的变化
负载均衡
分布式通知
master选举:主备 投票机制 ping机制 心跳检测
zk分布式锁:redis分布式锁不同、
分布式配置中心:
1、 zk应用场景
1、数据发布订阅(配置中心)
2、命名服务
3、master选举
4、集群管理
5、分布式队列
6、分布式锁
2、 zk结构
树形结构
节点:名称、内容(节点信息)
节点类型:
持久节点:断开时仍然存在节点
临时节点:节点存在时,断开时去除
持久顺序节点:节点编号
临时顺序节点:
节点watcher:
节点事件通知
3、 zk实现分布式队列
入队:创建顺序节点
出队:消费者取出所有节点,移除最小号节点
4、 window安装zk
解压,修改配置文件
启动服务端
启动客户端
命令行:
查看所有节点:ls /
创建(持久)节点:create /name content
修改节点内容:set /name content-update
创建子节点:create /name/name2 content2
可视化工具
开启,配置zk地址:
zookeeper
在linux下安装配置
结构:类似于linux的树形结构
znode:
名称唯一
节点类型:持久、顺序、临时、临时顺序
zk指令:
操作节点
有序性
可复制
快速(内存)
session会话机制:
分配客户端id
发送心跳保持会话有效
会话请求顺序FIFO
数据结构:
节点数据:状态、配置、位置
节点元数据
数据大小限制:1M
节点类型:
持久节点:
- 即使在创建该特定znode的客户端断开连接后,持久节点仍然存在。默认情况下,除非另有说明,否则所有znode都是持久的。
临时节点:
- 客户端活跃时,临时节点就是有效的。当客户端与ZooKeeper集合断开连接时,临时节点会自动删除。因此,只有临时节点不允许有子节点。如果临时节点被删除,则下一个合适的节点将填充其位置。临时节点在leader选举中起着重要作用。
顺序节点:
顺序节点可以是持久的或临时的。当一个新的znode被创建为一个顺序节点时,ZooKeeper通过将10位的序列号附加到原始名称来设置znode的路径。例如,如果将具有路径 /myapp 的znode创建为顺序节点,则ZooKeeper会将路径更改为 /myapp0000000001 ,并将下一个序列号设置为0000000002。如果两个顺序节点是同时创建的,那么ZooKeeper不会对每个znode使用相同的数字。顺序节点在锁定和同步中起重要作用。这个计数器对于父znode是惟一的。计数器的格式为%010d——即填充为0(0)的10位数字(计数器采用这种格式是为了简化排序),即“<路径> 0000000001”。注意:用于存储下一个序列号的计数器是由父节点维护的带符号int(4字节),当增加到2147483647之后计数器将溢出(导致名称“<path>-2147483648”)。
临时顺序节点
watch监听机制:
在znodes设置watch,监听znode变化
* 监听数据变更
* 监听子节点变化
锁特点:
排他性:只有一个线程能获取到
阻塞性:其他未抢到的线程阻塞,直到锁释放出来,再抢。
可重入性:线程获得锁后,后续是否可重复获取该锁。
zookeeper锁:
阻塞性,jdk栅栏
可重入性,计数器实现
dubbo
zookeeper下载:
https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/
解压配置config:
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/log
配置环境:
vi /etc/profile
export ZOOKEEPER=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER/bin
source /etc/profile
启动服务:
zkServer.sh start
zkServer.sh status
启动客户端:
zkCli.sh