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

  线程池: 

 

posted @ 2020-04-21 14:47  嘤嘤怪  阅读(506)  评论(0编辑  收藏  举报