开启掘金成长之旅!这是我参与「掘金日新计划 · 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远程调用相关配置,覆盖关系如下:
- 方法级配置优先,接口级次之,全局配置再次之。
- 如果级别一样,则消费者设置优先,提供者次之。
-