该文章内容发布已经超过一年,请注意检查文章中内容是否过时。
本章节主要讲述如何配置dubbo,按照配置方式上分,可以分为:XML配置,properties方式配置,注解方式配置,API调用方式配置。 按照功能角度进行划分,可以分为Dubbo Provider和Dubbo Consumer。接下来章节中,分别对dubbo provider和Dubbo consumer进行讲解。
配置Dubbo Provider有4种方式:XML配置,properties方式配置,API调用方式配置,注解方式配置。
上面样例中,注意下dubbo schema的写法:
标签 | 用途 | 解释 |
---|---|---|
<dubbo:service/> | 服务配置 | 用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心 |
<dubbo:reference/> | 引用配置 | 用于创建一个远程服务代理,一个引用可以指向多个注册中心 |
<dubbo:protocol/> | 协议配置 | 用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受 |
<dubbo:application/> | 应用配置 | 用于配置当前应用信息,不管该应用是提供者还是消费者 |
<dubbo:module/> | 模块配置 | 用于配置当前模块信息,可选 |
<dubbo:registry/> | 注册中心配置 | 用于配置连接注册中心相关信息 |
<dubbo:monitor/> | 监控中心配置 | 用于配置连接监控中心相关信息,可选 |
<dubbo:provider/> | 提供方配置 | 当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选 |
<dubbo:consumer/> | 消费方配置 | 当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选 |
<dubbo:method/> | 方法配置 | 用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息 |
<dubbo:argument/> | 参数配置 | 用于指定方法参数配置 |
<dubbo:application name=“hello-world-app” />
用于指定应用名,这里需要保证应用名唯一,这个应用名在后续的console admin中可以在列表中显示,方便管理。
<dubbo:registry address=“multicast://224.5.6.7:1234” />
注册中心配置,和服务发现的具体机制有关系。可以是zookeeper地址,也可以eureka地址。上面这个是广播地址,在本地服务调用的测试过程中非常方便。
<dubbo:protocol name=“dubbo” port=“20880” />
这里是传输的协议和默认端口,一般不需要更改。
接下来重点讲解下<dubbo:service/>的配置。
属性名 | 说明 |
---|---|
version | 版本号 |
scope | 服务可见性, 值为:local 或者 remote,默认为remote |
actives | 最大的激活的请求数 |
async | 方法调用是否异步,默认为false |
cache | 服务缓存,可选值:lru/threadlocal/jcache |
callbacks | callback实例的限制 |
generic | 泛化调用,可以绕过 |
class | Service的实现的类名 |
connections | 这个服务里的连接数 |
delay | 发布服务延迟的毫秒数 |
executes | 服务执行的请求上限 |
retries | 超时重试次数 |
timeout | 调用超时时间 |
其他配置属性请参考xsd:http://dubbo.apache.org/schema/dubbo/dubbo.xsd
属性名 | 说明 |
---|---|
executes | 服务执行的请求上限 |
retries | 超时重试次数 |
timeout | 调用超时时间 |
其他属性,可以参考上面的xsd。
这里的覆盖关系包含了Provider和Consumer两端的配置,如果对consumer有疑问,可以参考后一章节的consumer章节之后再来理解。
如果公共配置很简单,没有多注册中心,多协议等情况,或者想多个 Spring 容器想共享配置,可以使用 dubbo.properties 作为缺省配置。
Dubbo 将自动加载 classpath 根目录下的 dubbo.properties,可以通过JVM启动参数 -Ddubbo.properties.file=xxx.properties 改变缺省配置位置。
将 XML 配置的标签名,加属性名,用点分隔,多个属性拆成多行
如果 XML 有多行同名标签配置,可用 id 号区分,如果没有 id 号将对所有同名标签生效
注意:
这种方式的配置和前面用xml配置的方式是一样的效果。
或者使用spring bean xml配置方式:
一般在spring应用中,不推荐使用这种方式。 具体的含义这里不做解释,可以通过github查看源码。
上面章节更多从配置角度出发,接下来通过一个完整的例子,来讲解下dubbo provider的完整使用。
这个例子中只有一个服务UserReadService,有一个方法 getUserById。 需要将这个服务通过Dubbo暴露给远程的服务。具体的步骤如下:
1.创建工程 如果本来已经有工程,可以忽略。创建一个spring boot工程,可以通过 https://start.spring.io/ 创建。 2.定义接口 定义接口:UserReadService
这个接口一般来说会放到独立的jar包里,作为client包。 其他应用要消费这个服务的时候,一般来说需要应用引用这个client包。(除了泛化调用) 3.实现接口 实现UserReadService, 当前实现部署在Provider的应用中。
4.Dubbo配置
Dubbo配置的其他方式可以参考上一章节的相关配置,或者使用集成dubbo spring boot starter方式。