• Dubbo架构原理


    什么是Dubbo?

      Dubbo是一个RPC远程调用  分布式服务治理 框架. 是Alibaba开源分布式服务框架

    Dubbo能做什么?

       负载均衡、容错、降级、路由规则、自动注册服务

           

    节点角色说明:

      Provider: 暴露服务的服务提供方。 

      Consumer: 调用远程服务的服务消费方。 

      Registry: 服务注册与发现的注册中心

      Container:服务器容器

      Monitor: 统计服务的调用次调和调用时间的监控中心

    调用关系说明【重点】:

       1、服务容器负责启动,加载,运行服务提供者。 
       2、服务提供者在启动时,向注册中心注册己提供的服务。 
       3、服务消费者在启动时,向注册中心订阅自己所需的服务。 
       4、注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。 
       5、服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。 
       6、服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

    Dubbo的总体架

      如图所示:

          

      Dubbo框架设计一共划分了10个层,最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层。图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口, 位于中轴线上的为双方都用到的接口。
      下面,结合Dubbo官方文档,我们分别理解一下框架分层架构中,各个层次的设计要点:

    1. 服务接口层(Service):该层是与实际业务逻辑相关的,根据服务提供方和服务消费方的业务设计对应的接口和实现
    2. 配置层(Config):对外配置接口,以ServiceConfig和ReferenceConfig为中心,可以直接new配置类,也可以通过spring解析配置生成配置类。
    3. 服务代理层(Proxy):服务接口透明代理,生成服务的客户端Stub和服务器端Skeleton,以ServiceProxy为中心,扩展接口为ProxyFactory。
    4. 服务注册层(Registry):封装服务地址的注册与发现,以服务URL为中心,扩展接口为RegistryFactory、Registry和RegistryService。可能没有服务注册中心,此时服务提供方直接暴露服务。
    5. 集群层(Cluster):封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心,扩展接口为Cluster、Directory、Router和LoadBalance。将多个服务提供方组合为一个服务提供方,实现对服务消费方来透明,只需要与一个服务提供方进行交互。
    6. 监控层(Monitor):RPC调用次数和调用时间监控,以Statistics为中心,扩展接口为MonitorFactory、Monitor和MonitorService。
    7. 远程调用层(Protocol):封将RPC调用,以Invocation和Result为中心,扩展接口为Protocol、Invoker和Exporter。Protocol是服务域,它是Invoker暴露和引用的主功能入口,它负责Invoker的生命周期管理。Invoker是实体域,它是Dubbo的核心模型,其它模型都向它靠扰,或转换成它,它代表一个可执行体,可向它发起invoke调用,它有可能是一个本地的实现,也可能是一个远程的实现,也可能一个集群实现。
    8. 信息交换层(Exchange):封装请求响应模式,同步转异步,以Request和Response为中心,扩展接口为Exchanger、ExchangeChannel、ExchangeClient和ExchangeServer。
    9. 网络传输层(Transport):抽象mina和netty为统一接口,以Message为中心,扩展接口为Channel、Transporter、Client、Server和Codec。
    10. 数据序列化层(Serialize):可复用的一些工具,扩展接口为Serialization、 ObjectInput、ObjectOutput和ThreadPool。

    协议支持

      Dubbo支持多种协议,如下所示:

      • Dubbo协议
      • Hessian协议
      • HTTP协议
      • RMI协议
      • WebService协议
      • Thrift协议
      • Memcached协议
      • Redis协议

    SpringCloud与Dubbo区别?


    相同点:
      dubbo与springcloud都可以实现RPC远程调用。

      dubbo与springcloud都可以使用分布式、微服务场景下。

    区别:
      dubbo有比较强的背景,在国内有一定影响力。

      dubbo使用zookeeper或redis作为作为注册中心

      springcloud使用eureka作为注册中心

      dubbo支持多种协议,默认使用dubbo协议。

      Springcloud只能支持http协议。

      Springcloud支持zuul网关,支持分布式配置中心,而dubbo都不支持

      Springcloud是一套完整的微服务解决方案。

    来源于:https://www.cnblogs.com/steven520213/p/7606598.html

        https://blog.csdn.net/itcats_cn/article/details/82633818

  • 相关阅读:
    Request的方法演示
    Request内置对象
    Servlet运行机制
    Servlet生命周期
    Servlet概念与配置
    http协议
    数据库连接池
    代码管理git托管到码云(github)开源中国
    事务
    类的执行先后顺序
  • 原文地址:https://www.cnblogs.com/JonaLin/p/12714569.html
Copyright © 2020-2023  润新知