Dubbo
2020-06-16 10:07:36 0 举报
AI智能生成
Dubbo
作者其他创作
大纲/内容
负载均衡策略
泛化调用原理?
注册中心
注册中心技术选型?
一致性协议
Paxos
按公示问题数可分为
Basic Paxos
Muti Paxos
为了提高效率
角色
Proposer
Acceptor
Learner
ZAB
在Leader选举时节点状态<br>
LOOKING
Leader选举阶段
OBSERVING
不参与投票
FOLLOWING
参与投票
LEADING
ZAB协议的四个阶段
1. 选举阶段
2. 发现阶段
3. 同步阶段
只有当Quorum都同步完成,准Leader才会成为真正的Leader
4. 广播阶段
基于Java的ZAB实现
1. Fast Leader Election
2. Recovery Phase 崩溃恢复,需要解决一下2个问题
保证示例1. Leader产生了proposal,发给Follower之后,只有自己COMMIT。新Leader必须保证这个P也必须COMMIT
保证示例2. Leader产生了Proposal,在宕机之前没有Follower看到这个Proposal。则该Server恢复之后也必须丢失这个P
3. Broadcast Phase 消息广播
简化的2PC
简单的2PC不能处理Leader失效的情况,因此增加了Recovery模式
选举步骤
投票
接受选票
处理选票
统计
QA
1. Paxos和Zab的区别?Zab相比Paxos有什么优点?
Paxos的一致性达不到Zab要求看,Paxos不关心请求之间的逻辑顺序
2. ZK可以通过增加节点,提升集群性能吗?
3. Raft和ZAB之间的区别?
文献
ZooKeeper学习第七期--ZooKeeper一致性原理
zab paper
Raft
文献
Raft 一致性算法论文译文
寻找一种易于理解的一致性算法(扩展版)
架构
服务暴露过程
流程图
文献
dubbo剖析:一 服务发布<br>
过程
1. 通过NamespaceHandlerSupport和DubboBeanDefintionParser实现配置文件解析ServiceBean<br><br>2. 通过监听Spring事件触发服务发布过程<br><br>3. 遍历注册中心URL,暴露远程服务,JavassistProxyFactory创建Invoker;<br><br>4. 通过RegistryProtocol将Invoker发布成Dubbo服务;<br><br>5. 最终有ServiceConfig维护所有发布的Exporter与服务URL到本地内存
服务引用
流程图
文献
Dubbo原理和源码解析之服务引用
dubbo剖析:二 服务引用
过程
1、引用配置及配置初始化<br>该部分以Spring配置及ReferenceBean为入口,主要在ReferenceConfig中进行。<br><br>ReferenceConfig依赖RegistryProtocol完成了 "服务引用者注册"、"服务提供者订阅"和"Invoker创建" 的工作;<br>ReferenceConfig依赖JavassistProxyFactory完成了 "代理对象生成" 的工作;<br><br>2、注册中心订阅 & Invoker生成与获取<br>该部分主要由RegistryDirectory和FailfastCluster实现。<br><br>通过ReferenceConfig调用RegistryDirectory的subscribe方法,触发了对服务提供者url的订阅及监听,在监听过程中RegistryDirectory借助DubboProtocol完成了Invoker的创建工作,并保存了服务引用url和Invoker的关系;<br>通过ReferenceConfig调用FailfastCluster的join方法,完成了对Invoker对象的获取;<br><br><br>3、生成代理对象<br>该部分主要由JavassistProxyFactory完成。<br><br>以ReferenceConfig调用JavassistProxyFactory的getProxy方法为入口,传入Invoker;<br>新创建了InvokerInvocationHandler,并使用dubbo自己的动态代理工具Proxy最终生成代理对象T ref;
SPI
和JDK SPI的区别?
微内核+插件
容错机制
failover
如果出现故障,则重试备份操作模式
failfast
如果出现故障,则立即报错
failsafe
如果出现故障,则可以忽略
failback
故障切换之后,如果主要操作模式恢复,则自动从备份操作模式恢复主要操作模式
forking
0 条评论
下一页