Dubbo架构分层
地址管理
容错 failover (retry) failback(恢复) failsafe(日志审计) failfast(报错) fork(同时请求多个) broadcast
负载均衡 随机 轮询 一致性hash 最少使用
监控 amdin
注册中心有几种
Simple Redis Zk Multicast
配置优先级 method >interface>全局 消费者>提供者
zk注册中心的原理
生成应用的持久节点 在interface 下面生成永久节点 (consumer provider route...)
provider启动时上报元数据信息到zk
consumer启动时监听节点数据
url的总线设计 协议:ip+port +版本
熔断: MOCK
协议 : dubbo 单一长连接 小数据量 大并发 消费者远远大于提供者
优雅停机:
消费者,提供者
启动netty 写到 zk
NameSpaceHandler BeanDefinitionParse 转化为BD servicebean(initializingBean (afterPropertiesSet)) serviceconfig export doexport doexportUrls doExportUrl1protocol proxyFactory(javaassistProxyFactory) dubboPrototol.export Exchanger headerExchanger Transporter
referencebean referenceconfig
protocol 得到refer 获取invoker对象 然后转化为代理对象,订阅zk的节点 把zk节点的comsumer写上 过程中使用LB
proxy serviceProxy
---------------------
registry directory (可以获取多个invoker) LB(从中选一个Invoker调用)
cluster
----------------------
protocol protocol$adaptive
invoker 一个可调用的service抽象
---------------netty ----
Exchange
export
transport netty mina
serializable json/hession2
服务注册过程
服务发布过程
@SPI ExtendLoader.getExtentionloader.getExtendsion()
@Adaptive
一个接口 多个实现 spi配置默认实现
线程模型:
业务线程 200
io线程 核数+1
线程池:
浙公网安备 33010602011771号