标签:数据同步 数据 zab 通知 消息 永久 工作 分享 内容
量大,服务器压力大。需要用到分布式,集群。
问题1:三台机器,一个请求如何落到一台机器上?如何协调工作
问题2:集群如何选取leader?
问题3:既然是分布式,集群,一个请求只能有一台机器接接收并处理,其他机器如何同步消息?
问题4:同时竞争资源如何让一个机器执行?
问题1:三台机器,一个请求如何落到一台机器上?
zookeeper 解决了各服务之间协调工作的内容如下图:
问题2:集群如何选取leader?
1 leader-follower-observer
2 leader选取 :?有哪些算法?
问题3:既然是分布式,集群,一个请求只能有一台机器接接收并处理,其他机器如何同步消息?
3 数据同步怎么办?事务请求走leader,非事务走所有节点,增删改有leader节点处理,处理完同步到非leader;使用了节点zab协议(原子广播协议):数据同步,leader选取,原子广播。
zookeeper:文件类型的树形目录结构
有序节点:顺序递增
持久化节点:永久存储
临时节点:回话结束即删除节点,不能有字节点,存在冲突:比如 临时节点下在建立了持久节点怎么办,如果在建立个临时节点,生命周期不一样怎么办?
树形结构: 每个节点是 key-value
zookeeper 应用:
1分布式锁:(节点抢占,顺序节点)
1 节点抢占 :同级节点是唯一的(同时创建同一个节点,多个应用创建肯定只有一个成功),失败的节点怎么办?
watcher:客户端可以监控某一个节点的变化 监听方式3中:get exists getchildren 设置监控: get /mic true 对mic 节点监控 监控删除事件
如 app2可以watcher app1新建的节点事件,如果app1新建的节点有修改会给所有监控对象app2,app3发通知(只触发一次,如果失败则丢掉事件)会发生 惊群问题?会触发所有节点
2 顺序节点:创建顺序节点,最小节点获取锁 1 2 3 ;2监控1 3监控2 ,每个节点监控上一个节点
2 服务注册:
各个服务通信:rpc协议远程过程服务调用
rpc 协议有 hession,dubbo,webservice 框架
服务直接通信用到:序列化/反序列化,反射
标签:数据同步 数据 zab 通知 消息 永久 工作 分享 内容
原文地址:https://www.cnblogs.com/fanBlog/p/9720047.html