|
| 1 | +# Dubbo 配置 |
| 2 | + |
| 3 | +## 简介 |
| 4 | + |
| 5 | +### 配置方式 |
| 6 | + |
| 7 | +Dubbo 支持四中配置方式: |
| 8 | + |
| 9 | +- XML 配置 |
| 10 | +- 属性配置 |
| 11 | +- API 配置 |
| 12 | +- 注解配置 |
| 13 | + |
| 14 | +我认为根据自己实际需要去掌握配置方式即可,没必要全都了解。更多内容可以参考:[Dubbo 官方用户手册](https://dubbo.gitbooks.io/dubbo-user-book/) |
| 15 | + |
| 16 | +在这里,只记录我使用到的 xml 配置方式。 |
| 17 | + |
| 18 | +### 配置分类 |
| 19 | + |
| 20 | +所有配置项分为三大类 |
| 21 | + |
| 22 | +- 服务发现:表示该配置项用于服务的注册与发现,目的是让消费方找到提供方。 |
| 23 | + |
| 24 | +- 服务治理:表示该配置项用于治理服务间的关系,或为开发测试提供便利条件。 |
| 25 | + |
| 26 | +- 性能调优:表示该配置项用于调优性能,不同的选项对性能会产生影响。 |
| 27 | + |
| 28 | +所有配置最终都将转换为 URL 表示,并由服务提供方生成,经注册中心传递给消费方,各属性对应 URL 的参数,参见配置项一览表中的 "对应URL参数" 列。 |
| 29 | + |
| 30 | +> **注意** |
| 31 | +> |
| 32 | +> 只有 group,interface,version 是服务的匹配条件,三者决定是不是同一个服务,其它配置项均为调优和治理参数。 |
| 33 | +> |
| 34 | +> **URL 格式** |
| 35 | +> |
| 36 | +> `protocol://username:password@host:port/path?key=value&key=value` |
| 37 | +
|
| 38 | +## xml 配置 |
| 39 | + |
| 40 | +### provider.xml 示例 |
| 41 | + |
| 42 | +```xml |
| 43 | +<?xml version="1.0" encoding="UTF-8"?> |
| 44 | +<beans xmlns="http://www.springframework.org/schema/beans" |
| 45 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| 46 | + xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" |
| 47 | + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> |
| 48 | + <dubbo:application name="hello-world-app" /> |
| 49 | + <dubbo:registry address="multicast://224.5.6.7:1234" /> |
| 50 | + <dubbo:protocol name="dubbo" port="20880" /> |
| 51 | + <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoServiceLocal" /> |
| 52 | + <dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" /> |
| 53 | +</beans> |
| 54 | +``` |
| 55 | + |
| 56 | +所有标签都支持自定义参数,用于不同扩展点实现的特殊配置,如: |
| 57 | + |
| 58 | +```xml |
| 59 | +<dubbo:protocol name="jms"> |
| 60 | + <dubbo:parameter key="queue" value="your_queue" /> |
| 61 | +</dubbo:protocol> |
| 62 | +``` |
| 63 | + |
| 64 | +或: |
| 65 | + |
| 66 | +```xml |
| 67 | +<beans xmlns="http://www.springframework.org/schema/beans" |
| 68 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| 69 | + xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" |
| 70 | + xmlns:p="http://www.springframework.org/schema/p" |
| 71 | + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> |
| 72 | + <dubbo:protocol name="jms" p:queue="your_queue" /> |
| 73 | +</beans> |
| 74 | +``` |
| 75 | + |
| 76 | +### 配置之间的关系 |
| 77 | + |
| 78 | + |
| 79 | + |
| 80 | +| 标签 | 用途 | 解释 | |
| 81 | +| ---------------------- | ------ | ---------------------------------------- | |
| 82 | +| `<dubbo:service/>` | 服务配置 | 用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心 | |
| 83 | +| `<dubbo:reference/>` | 引用配置 | 用于创建一个远程服务代理,一个引用可以指向多个注册中心 | |
| 84 | +| `<dubbo:protocol/>` | 协议配置 | 用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受 | |
| 85 | +| `<dubbo:application/>` | 应用配置 | 用于配置当前应用信息,不管该应用是提供者还是消费者 | |
| 86 | +| `<dubbo:module/>` | 模块配置 | 用于配置当前模块信息,可选 | |
| 87 | +| `<dubbo:registry/>` | 注册中心配置 | 用于配置连接注册中心相关信息 | |
| 88 | +| `<dubbo:monitor/>` | 监控中心配置 | 用于配置连接监控中心相关信息,可选 | |
| 89 | +| `<dubbo:provider/>` | 提供方配置 | 当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选 | |
| 90 | +| `<dubbo:consumer/>` | 消费方配置 | 当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选 | |
| 91 | +| `<dubbo:method/>` | 方法配置 | 用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息 | |
| 92 | +| `<dubbo:argument/>` | 参数配置 | 用于指定方法参数配置 | |
| 93 | + |
| 94 | +### 配置覆盖关系 |
| 95 | + |
| 96 | +以 timeout 为例,显示了配置的查找顺序,其它 retries, loadbalance, actives 等类似: |
| 97 | + |
| 98 | +- 方法级优先,接口级次之,全局配置再次之。 |
| 99 | +- 如果级别一样,则消费方优先,提供方次之。 |
| 100 | + |
| 101 | +其中,服务提供方配置,通过 URL 经由注册中心传递给消费方。 |
| 102 | + |
| 103 | + |
| 104 | + |
| 105 | +建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置。 |
| 106 | + |
| 107 | +理论上 ReferenceConfig 的非服务标识配置,在 ConsumerConfig,ServiceConfig, ProviderConfig 均可以缺省配置。 |
| 108 | + |
| 109 | +## 资料 |
| 110 | + |
| 111 | +[Dubbo 配置](https://dubbo.gitbooks.io/dubbo-user-book/configuration/) |
| 112 | + |
| 113 | +[Dubbo 官方 schema 配置参考手册](https://dubbo.gitbooks.io/dubbo-user-book/references/xml/introduction.html) |
0 commit comments