Dubbo 简介

Dubbo 的工作原理

  • 轻量级Java容器通过main函数初始化Spring上下文,根据服务提供者配置的XML文件将服务按照指定协议发布,完成服务的初始化工作
  • 服务提供者根据配置的服务注册中心地址连接服务注册中心,将服务提供者信息发布到服务注册中心
  • 消费者根据服务消费者XML配置文件的服务引用信息,连接注册中心,获取指定的地址等路由信息。
  • 服务注册中心根据服务订阅关系,动态地向指定消费者推送服务地址信息
  • 消费者调用远程服务时,根据路由策略,从本地缓存的服务提供者地址列表中选择一个服务提供者,然后根据协议类型建立链路,跨进程调用服务提供者(非本地路由优先策略时)。

Dubbo 架构的主要质量属性

  • 连通性

    1. 注册中心负责服务地址的注册和查找,相当于目录服务,服务提供这和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。
    2. 监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示。
    3. 服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心。
    4. 注册中心,服务提供者,服务消费者三者之间均以长连接,监控中心除外。
    5. 注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送时间通知消费者。
    6. 注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表。
    7. 注册中心和监控中心都是可选的,服务消费者可以直连服务提供者。
  • 健壮性

    1. 监控中心宕掉不影响使用,质丢失部分采样数据。
    2. 数据库宕掉后,组册中心仍能通过缓存提供服务列表查询,但不能注册新服务。
    3. 注册中心对等集群,任意一台宕掉后,将自动切换到另一台
    4. 注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通信。
    5. 服务提供者无状态,任意一台宕掉后,不影响使用。
    6. 服务提供者全部宕掉,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复。
  • 伸缩性

    1. 注册中心对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心。
    2. 服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者。
  • 扩展性

    1. 微内核+插件式设计,平等对待第三方:youchajianguanlirongqigoucheng微内核,其他外围功能都通过插件的方式实现,平等对待第三方,使用者可以替换平台的默认实现,也可以通过插件扩展新的功能。
    2. 管道设计,服务调用前后提供拦截面(类AOP切面):通过服务调用前拦截,时候通知的方式,开放服务调用拦截面给框架使用者,用于功能扩展,Dubbo自身的大多数功能,也基于Filter拦截实现。
    3. 原子化扩展点,最大化复用和扩展:扩展点是单个功能的抽象,只负责完成意见事,例如序列化框架扩展点,用于扩展Dubbo默认提供的序列化方式。

你可能感兴趣的:(JAVA)