Dubbo
2021-02-22 11:17:28 0 举报
Dubbo
作者其他创作
大纲/内容
1、container负责启动、加载、运行provider2、provider启动时,向registry注册自己的服务3、cousumer启动时,向registry订阅自己的服务4、registry提供provider列表给consumer,实时推送变动情况5、consumer根据provider列表,按负载算法选一台provider调用6、monitor统计rpc的调用频次
future
Invoker
注册
Consumer
暴露一个服务,定义服务的元信息
根据interface/url得到invoker
<dubbo:provider/>ProviderConfig
属性继承
注册中心
RegistryProtocol
doLocalExport(Invoker)
export(Invoker)
export
ReferenceBean
6 填充future
ref
SpiExtensionFactory
Registry
Monitor
消费方缺省配置
网络
<dubbo:argument/>ArgumentConfig
worker线程池
解析XML过程
主线程
Dubbo结构及功能
server线程池
Protocol
<dubbo:reference/>ReferenceConfig
DubboBeanDefinitionParser
Dubbo集群容错配置<dubbo:consumer cluster=\"failover” retries=\"2\" forks=\"2\" />1、 Failover :当出现失败,重试其它服务器。 retries=“2” 来设置重试次数(不含第一次)。 幂等性操作使用,如读操作 2、 Failfast :快速失败,只发起一次调用,失败立即报错 非幂等性操作,如写操作3、 Failsafe :出现异常时,直接忽略 无关紧要的旁支操作,如打日志4、 Failback :后台记录失败请求,定时重发 后续专业处理5、 Forking :并行调用多个服务器,只要一个成功即返回 forks=“2” 来设置最大并行数Dubbo负载均衡配置<dubbo:consumer loadbalance=\"random\"/>1、 Random :按权重随机------根据weight值(服务方设置)来随机--\t2、 RoundRobin :轮询3、 LeastActive :最少活跃数(正在处理的数)\t慢的机器,收到的请求少
订阅
refer
1-2 请求发出
接口
Proxy生成代理
protocol
regUrl
dubboHttpRMI......
zk1
dubbo spi中的ioc
注册中心相关信息
根据Invoker信息做暴露
<dubbo:protocol/>ProtocolConfig
<dubbo:application/>ApplicationConfig
1-1 调用netty发请求
服务方缺省配置
服务端
统计
interface、url
消费端
refprotocol
AdaptiveExtensionFactory
List factories
将ref/interface/url信息包装到一个invoker对象中
client线程池
export()
url
subscribe逻辑
1、服务端:将ref/interface/url信息包装到一个invoker对象中,然后交给protocol按规格暴露2、消费端:protocol协议根据interface/url信息,生成一个invoker对象
客户端
<dubbo:method/>MethodConfig
<dubbo:consumer/>ConsumerConfig
Provider
当前应用信息
SpringExtensionFactory
5 将响应结果交给client线程池
zk2
2 get()阻塞等待
持有的Spring容器ctx在ServiceBean与ReferenceBean加载时注入
0.start
引用服务配置,用于创建一个远程服务代理
通知
方法配置
ExtensionFactory
register逻辑
ServiceBean
4-2 返回响应结果
refer()
Proxy
4-1 处理业务逻辑调用netty发送响应数据
Dubbo标签
配置提供服务的协议信息,协议由提供方指定,消费方被动接受
InterfaceObj
Container
Dubbo线程模型
Invoker refer(interface,url)
interface、URL
1、标签属性有继承关系,即:下层有设置则使用,未配置则沿用上一级的设置2、 timeout/retries/ loadbalance消费方未设置,则沿用服务方的设置。
7 唤醒解除阻塞
zk3
protocol的过程
<dubbo:registry/>RegistryConfig
DubboNamespaceHandler
方法参数配置
<dubbo:service/>ServiceConfig
RPC调用
3 交给server线程池执行
0 条评论
下一页