Dubbo

149 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第28天,点击查看活动详情

1.核心概念

1.1.基础架构

  • 服务提供者 (Provider) :暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。
    • 服务消费者 (Consumer): 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

    • 注册中心 (Registry) :注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者

    • 监控中心 (Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

    • 调用关系说明:

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

1.2.admin管理

  • dubbo本身并不是一个服务软件。它其实是一个 jar 包能够帮你的 java 程序连接到z注册中心 (这里以Zookeeper为例) ,并利用 zookeeper 消费、提供服务。所以无需做额外操作。但是为了让用户更好的管理监控众多的dubbo服务,官方提供了一个可视化的监控程序,不过这个监控即使不装也不影响使用。 - 下载dubbo-admin github.com/apache/incu… 并修改 src\main\resources\application.properties 指定 zookeeper 地址,打包dubbo-admin,使用 cmd 命令窗口输入命令 mvn clean package -Dmaven.test.skip=true (需要配置maven环境变量),继而使用jar命令运行即可:java -jar dubbo-admin-0.0.1-SNAPSHOT.jar,默认端口为7001,账号密码默认为 root/root。 - 可以通过 dubbo-admin 控制中心进行手动服务治理,屏蔽,降级,修改权重,容错等配置优化服务。

2.Dubbo配置

2.1.配置覆盖

  • Dubbo支持采用虚拟机参数配置,dubbo.xml文件配置,以及dubbo.properties 文件配置,优先顺序为:

    1.  JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口。
    1.  XML 次之,如果在 XML 中有配置,则 dubbo.properties 中的相应配置项无效。
    1.  Properties 最后,相当于缺省值,只有 XML 没有配置时,dubbo.properties 的相应配置项才会生效,通常用于共享公共配置,比如应用名。
    
    对于 SpringBoot 来说,通常我们会在 application.properties 文件中对 dubbo 做配置,而该 properties 文件的优先级相当于 xml 文件的优先级,映射是相同的。
    
    • 对于Dubbo远程调用相关配置,覆盖关系如下:

      1. 方法级配置优先,接口级次之,全局配置再次之。
      2. 如果级别一样,则消费者设置优先,提供者次之。