前言:
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
其核心部分包含:
1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
其主要特性包含:
(1) 连通性:
-
注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小
-
监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示
-
服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销
-
服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销
-
注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外
-
注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者
-
注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表
-
注册中心和监控中心都是可选的,服务消费者可以直连服务提供者
(2) 健状性:
-
监控中心宕掉不影响使用,只是丢失部分采样数据
-
数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务
-
注册中心对等集群,任意一台宕掉后,将自动切换到另一台
-
注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯
-
服务提供者无状态,任意一台宕掉后,不影响使用
-
服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复
(3) 伸缩性:
-
注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心
-
服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者
想要使用一个服务框架,首先得对它的基础内容做一定的了解,下面我们来了解一下dubbo在XML配置文件中各标签以及配置属性的含义
<dubbo:application/> 应用配置信息,不管是提供者还是消费者。XML解析所对应的bean为com.alibaba.dubbo.config.ApplicationConfig
可配置的属性有:
标签 | 属性名称 | 对应URL参数 | 类型 | 在此标签中是否必填 | 缺省值 | 此标签具有什么作用 | 对应的属性名称配置描述 | 兼 容 性( 供 参 考) |
name | application | string | 必填 |
| 服务治理 | 当前应用名称,用于注册中心计算应用间依赖关系,注意:消费者和提供者应用名不要一样,此参数不是匹配条件,你当前项目叫什么名字就填什么,和提供者消费者角色无关,比如:kylin应用调用了morgan应用的服务,则kylin项目配成kylin,morgan项目配成morgan,可能kylin也提供其它服务给别人使用,但kylin项目永远配成kylin,这样注册中心将显示kylin依赖于morgan | 1.0.16以上版本 | |
organization | organization | string | 可选 |
| 服务治理 | 组织名称(BU或部门),用于注册中心区分服务来源,此配置项建议不要使用autoconfig,直接写死在配置中,比如china,intl,itu,crm,asc,dw,aliexpress等 | 2.0.0以上版本 | |
organization | organization | string | 可选 |
| 服务治理 | 用于服务分层对应的架构。如,intl、china。不同的架构使用不同的分层。 | 2.0.7以上版本 | |
environment | environment | string | 可选 |
| 服务治理 | 应用环境,如:develop/test/product,不同环境使用不同的缺省值,以及作为只用于开发测试功能的限制条件 | 2.0.0以上版本 | |
owner | owner | string | 可选 |
| 服务治理 | 应用负责人,用于服务治理,请填写负责人公司邮箱前缀 | 2.0.5以上版本 |
<dubbo:registry/>注册中心配置信息,可以配置多个,递增配置条目即可。XML解析对应的bean为com.alibaba.dubbo.config.RegistryConfig
可配置的属性有:
标签 | 属性名称 | 对应URL参数 | 类型 | 在此标签中是否必填 | 缺 省 值 | 此标签具有什么作用 | 对应的属性名称配置描述 | 兼 容 性( 供 参 考) |
id |
| string | 可选 |
| 配置关联 | 注册中心引用BeanId,可以在<dubbo:service registry="">或<dubbo:reference registry="">中引用此ID | 1.0.16以上版本 | |
address | string | 必填 |
| 服务发现 | 注册中心服务器地址,如果地址没有端口缺省为9090,同一集群内的多个地址用逗号分隔,如:ip:port,ip:port,不同集群的注册中心,请配置多个<dubbo:registry>标签 | 1.0.16以上版本 | ||
protocol | <protocol> | string | 可选 | dubbo | 服务发现 | 注同中心地址协议,支持dubbo, http, local三种协议,分别表示,dubbo地址,http地址,本地注册中心 | 2.0.0以上版本 | |
port | <port> | int | 可选 | 9090 | 服务发现 | 注册中心缺省端口,当address没有带端口时使用此端口做为缺省值 | 2.0.0以上版本 | |
username | <username> | string | 可选 |
| 服务治理 | 登录注册中心用户名,如果注册中心不需要验证可不填 | 2.0.0以上版本 | |
password | <password> | string | 可选 |
| 服务治理 | 登录注册中心密码,如果注册中心不需要验证可不填 | 2.0.0以上版本 | |
transport | registry. transporter | string | 可选 | netty | 性能调优 | 网络传输方式,可选mina,netty | 2.0.0以上版本 | |
timeout | registry.timeout | int | 可选 | 5000 | 性能调优 | 注册中心请求超时时间(毫秒) | 2.0.0以上版本 | |
file | registry.file | string | 可选 |
| 服务治理 | 使用文件缓存注册中心地址列表及服务提供者列表,应用重启时将基于此文件恢复,注意:两个注册中心不能使用同一文件存储 | 2.0.0以上版本 | |
wait | registry.wait | int | 可选 | 0 | 性能调优 | 停止时等待通知完成时间(毫秒) | 2.0.0以上版本 | |
check | check | boolean | 可选 | true | 服务治理 | 注册中心不存在时,是否报错 | 2.0.0以上版本 | |
register | register | boolean | 可选 | true | 服务治理 | 是否向此注册中心注册服务,如果设为false,将只订阅,不注册 | 2.0.5以上版本 | |
subscribe | subscribe | boolean | 可选 | true | 服务治理 | 是否向此注册中心订阅服务,如果设为false,将只注册,不订阅 | 2.0.5以上版本 | |
dynamic | dynamic | boolean | 可选 | true | 服务治理 | 服务是否动态注册,如果设为false,注册后将显示后disable状态,需人工启用,并且服务提供者停止时,也不会自动取消册,需人工禁用。 | 2.0.5以上版本 |
<dubbo:protocol/>服务提供者所暴露的协议配置信息,可配置多个此标签,需要在<dubbo:service>中通过protocol属性指定使用的协议。 XML解析对应的bean为com.alibaba.dubbo.config.ProtocolConfig
可配置的属性有:
标签 | 属性 | 对应URL参数 | 类型 | 是否必填 | 缺省值 | 作用 | 描述 | 兼容性 |
id |
| string | 可选 | dubbo | 配置关联 | 协议BeanId, 可以在<dubbo:service proivder=""> 中引用此ID | 2.0.5以上版本 | |
name | <protocol> | string | 必填 | dubbo | 性能调优 | 协议名称 | 2.0.5以上版本 | |
port | <port> | int | 可选 | dubbo协议缺省端口为20880, rmi协议缺省端口为1099, http和hessian协议缺省端口为80 | 服务发现 | 服务端口 | 2.0.5以上版本 | |
host | <host> | string | 可选 | 自动查找本机IP | 服务发现 | -服务主机名, 多网卡选择 或指定VIP及 域名时使用, 为空则自动 查找本机IP, -建议不要配置, 让Dubbo 自动获取本机IP | 2.0.5以上版本 | |
threadpool | threadpool | string | 可选 | fixed | 性能调优 | 线程池类型, 可选: fixed/cached | 2.0.5以上版本 | |
threads | threads | int | 可选 | 100 | 性能调优 | 服务线程池 大小(固定大小) | 2.0.5以上版本 | |
iothreads | threads | int | 可选 | cpu个数+1 | 性能调优 | io线程池大小 (固定大小) | 2.0.5以上版本 | |
accepts | accepts | int | 可选 | 0 | 性能调优 | 服务提供方最 大可接受连接数 | 2.0.5以上版本 | |
payload | payload | int | 可选 | 88388608(=8M) | 性能调优 | 请求及响应数 据包大小限制, 单位:字节 | 2.0.5以上版本 | |
codec | codec | string | 可选 | dubbo | 性能调优 | 协议编码方式 | 2.0.5以上版本 | |
serialization | serialization | string | 可选 | dubbo协议缺省为hessian2,rmi协议缺省为java,http协议缺省为json | 性能调优 | 协议序列化方式, 当协议 支持多种序 列化方式时 使用,比如: dubbo协议的dubbo, hessian2, java, compactedjava,以及http协议的json等 | 2.0.5以上版本 | |
accesslog | accesslog | string/ boolean | 可选 |
| 服务治理 | 设为true,将向logger中输出 访问日志,也可填写访问日志文件路径,直接把访问日志输出到指定文件 | 2.0.5以上版本 | |
path | <path> | string | 可选 |
| 服务发现 | 提供者上下文路径,为服务path的前缀 | 2.0.5以上版本 | |
server | server | string | 可选 | dubbo协议缺省为netty,http协议缺省为servlet | 性能调优 | 协议的服务器端实现类型, 比如: dubbo协议的mina,netty等, http协议的jetty,servlet等 | 2.0.5以上版本 | |
client | client | string | 可选 | dubbo协议缺省为netty | 性能调优 | 协议的客户端实现类型,比如: dubbo协议的mina,netty等 | 2.0.5以上版本 | |
queues | queues | int | 可选 | 0 | 性能调优 | 线程池队列大小,当线程池满时,排队等待执行的队列大小,建议不要设置,当线程程池时应立即失败,重试其它服务提供机器,而不是排队,除非有特殊需求。 | 2.0.5以上版本 | |
charset | charset | string | 可选 | UTF-8 | 性能调优 | 序列化编码 | 2.0.5以上版本 | |
buffer | buffer | int | 可选 | 8192 | 性能调优 | 网络读写缓冲区大小 | 2.0.5以上版本 | |
telnet | telnet | string | 可选 |
| 服务治理 | 所支持的telnet 命令, 多个命令用逗号分隔 | 2.0.5以上版本 | |
register | register | boolean | 可选 | true | 服务治理 | 该协议的服务是否 注册到注册中心 | 2.0.8以上版本 |
<dubbo:service/>服务提供者暴露服务配置,XML解析对应的bean为:com.alibaba.dubbo.config.ServiceConfig
可配置的属性有:
标签 | 属性 | 对应URL参数 | 类型 | 是否必填 | 缺省值 | 作用 | 描述 | 兼容性 |
interface |
| class | 必填 |
| 服务发现 | 服务接口名 | 1.0.0以上版本 | |
ref |
| object | 必填 |
| 服务发现 | 服务对象 实现引用 | 1.0.0以上版本 | |
version | version | string | 可选 | 0.0.0 | 服务发现 | 服务版本, 建议使用 两位数字 版本, 如:1.0, 通常在 接口不兼容 时版本 号才需要升级 | 1.0.0以上版本 | |
group | group | string | 可选 |
| 服务发现 | 服务分组, 当一个接 口有多个 实现,可 以用分组 区分 | 1.0.7以上版本 | |
path | <path> | string | 可选 | 缺省为 接口名 | 服务发现 | 服务路径 (注意: 1.0不支持 自定义路径, 总是使用接 口名,如果 有1.0调2.0, 配置服务路 径可能不兼容) | 1.0.12以上版本 | |
delay | delay | int | 可选 | 0 | 性能调优 | 延迟注册服 务时间(毫秒) 设为-1时, 表示延迟到 Spring容器 初始化完成 时暴露服务 | 1.0.14以上版本 | |
timeout | timeout | int | 可选 | 5000 | 性能调优 | 远程服务调 用超时时间 (毫秒) | 2.0.0以上版本 | |
retries | retries | int | 可选 | 2 | 性能调优 | 远程服务调 用重试次数, 不包括第一 次调用,不 需要重试请 设为0 | 2.0.0以上版本 | |
connections | connections | boolean | 可选 | 100 | 性能调优 | 对每个提供 者的最大连 接数,rmi、 http、 hessian 等短连接协 议支持此配置,dubbo 协议长连接 不支持此配置 | 2.0.0以上版本 | |
loadbalance | loadbalance | string | 可选 | random | 性能调优 | 负载均衡策略, 可选值: random, roundrobin, leastactive, 分别表示: 随机,轮循, 最少活跃调用 | 2.0.0以上版本 | |
async | async | boolean | 可选 | false | 性能调优 | 是否缺省异步 执行,不可靠 异步,只是忽 略返回值,不 阻塞执行线程 | 2.0.0以上版本 | |
local | local | class/boolean | 可选 | false | 服务治理 | 设为true,表示 使用缺省代理 类名,即: 接口名 + Local 后缀,服务接 口客户端本地 代理类名, 用于在客户端 执行本地逻辑, 如本地缓存等, 该本地代理类 的构造函数必 须允许传入远 程代理对象, 构造函数如: public XxxServiceLocal XxxService xxxService) | 2.0.0以上版本 | |
mock | mock | class/boolean | 可选 | false | 服务治理 | 设为true,表示 使用缺省Mock 类名,即: 接口名 + Mock 后缀,服务接 口调用失败 Mock实现类, 该Mock类必 须有一个无参 构造函数,与 Local的区别 在于,Local 总是被执行, 而Mock只在 出现非业务 异常(比如超 时,网络异常 等)时执行, Local在远程 调用之前执行,Mock在 远程调用后 执行。 | 2.0.0以上版本 | |
token | token | string/boolean | 可选 | false | 服务治理 | 令牌验证, 为空表示不 开启,如果 为true,表 示随机生成 动态令牌, 否则使用静 态令牌,令 牌的作用是 防止消费者 绕过注册中 心直接访问. 保证注册中 心的授权功 能有效,如 果使用点对
关闭令牌功 能 | 2.0.0以上版本 | |
registry |
| string | 可选 | 缺省向 所有registry 注册 | 配置关联 | 向指定注册 中心注册, 在多个注册 中心时使用, 值为 的id属性,多个注 册中心ID用逗号分 隔,如果不想将该 服务注册到任 何registry,可 将值设为N/A | 2.0.0以上版本 | |
provider |
| string | 可选 | 缺使用 第一个provider 配置 | 配置关联 | 指定provider, 值为 的id属性 | 2.0.0以上版本 | |
deprecated | deprecated | boolean | 可选 | false | 服务治理 | 服务是否过时, 如果设为true, 消费方引用时将 打印服务过时 警告error日志 | 2.0.5以上版本 | |
dynamic | dynamic | boolean | 可选 | true | 服务治理 | 服务是否动态注 册,如果设为false, 注册后将显示 后disable状态, 需人工启用,并且 服务提供者停止 时,也不会自动 取消册, 需人工禁用。 | 2.0.5以上版本 | |
accesslog | accesslog | string/boolean | 可选 | false | 服务治理 | 设为true,将 向logger中输 出访问日志,也 可填写访问日 志文件路径,直 接把访问日志输 出到指定文件 | 2.0.5以上版本 | |
owner | owner | string | 可选 |
| 服务治理 | 服务负责人, 用于服务治理, 请填写负责人 公司邮箱前缀 | 2.0.5以上版本 | |
document | document | string | 可选 |
| 服务治理 | 服务文档URL | 2.0.5以上版本 | |
weight | weight | int | 可选 |
| 性能调优 | 服务权重 | 2.0.5以上版本 | |
executes | executes | int | 可选 | 0 | 性能调优 | 服务提供者每 服务每方法最 大可并行执行 请求数 | 2.0.5以上版本 | |
actives | actives | int | 可选 | 0 | 性能调优 | 每服务消费者 每服务每方法 最大并发调用数 | 2.0.5以上版本 | |
proxy | proxy | string | 可选 | javassist | 性能调优 | 生成动态代理 方式,可选:jdk/javassist | 2.0.5以上版本 | |
cluster | cluster | string | 可选 | failover | 性能调优 | 集群方式,可选: failover/ failfast/ failsafe/ failback/ forking | 2.0.5以上版本 | |
filter | service.filter | string | 可选 | default | 性能调优 | 服务提供方远 程调用过程拦 截器名称,多 个名称用逗号分隔 | 2.0.5以上版本 | |
listener | exporter.listener | string | 可选 | default | 性能调优 | 服务提供方导 出服务监听器 名称,多个名 称用逗号分隔 |
| |
protocol |
| string | 可选 |
| 配置关联 | 使用指定的协 议暴露服务, 在多协议时使用, 值为 的id属性,多个 协议ID用逗号分隔 | 2.0.5以上版本 | |
layer | layer | string | 可选 |
| 服务治理 | 服务提供者所 在的分层。如: | 2.0.7以上版本 | |
register | register | boolean | 可选 | true | 服务治理 | 该协议的服务 是否注册到 注册中心 | 2.0.8以上版本 |
<dubbo:provider/>服务提供者缺省值配置,该标签为<dubbo:service>和<dubbo:protocol>标签的缺省值设置.
XML解析对应的bean为:com.alibaba.dubbo.config.ProviderConfig
可配置的属性有:
标签 | 属性 | 对应URL参数 | 类型 | 是否必填 | 缺省值 | 作用 | 描述 | 兼容性 |
id |
| string | 可选 | dubbo | 配置关联 | 协议BeanId, 可以在 proivder="">中 引用此ID | 1.0.16以上版本 | |
protocol | <protocol> | string | 可选 | dubbo | 性能调优 | 协议名称 | 1.0.16以上版本 | |
host | <host> | string | 可选 | 自动查 找本机IP | 服务发现 | 服务主机名,多 网卡选择或指定 VIP及域名时使用, 为空则自动查找本 机IP,建议不要 配置,让Dubbo 自动获取本机IP | 1.0.16以上版本 | |
threads | threads | int | 可选 | 100 | 性能调优 | 服务线程池大小 (固定大小) | 1.0.16以上版本 | |
payload | payload | int | 可选 | 88388608 (=8M) | 性能调优 | 请求及响应数据 包大小限制, 单位:字节 | 2.0.0以上版本 | |
path | <path> | string | 可选 |
| 服务发现 | 提供者上下文 路径,为服务 path的前缀 | 2.0.0以上版本 | |
server | server | string | 可选 | dubbo协 议缺省为netty,http 协议缺省 为servlet | 性能调优 | 协议的服务器 端实现类型, 比如:dubbo 协议的mina,netty 等,http协议的 jetty,servlet等 | 2.0.0以上版本 | |
client | client | string | 可选 | dubbo协 议缺省为 netty | 性能调优 | 协议的客户端 实现类型,比如: dubbo协议的 mina,netty等 | 2.0.0以上版本 | |
codec | codec | string | 可选 | dubbo | 性能调优 | 协议编码方式 | 2.0.0以上版本 | |
serialization | serialization | string | 可选 | dubbo 协议缺 省为hessian2, rmi协议 缺省为java, http协议 缺省为 json | 性能调优 | 协议序列化方 式,当协议支 持多种序列化 方式时使用,比 如:dubbo协议的 dubbo,hessian2, java, compactedjava, 以及http协议的 json,xml等 | 2.0.5以上版本 | |
default |
| boolean | 可选 | false | 配置关联 | 是否为缺省协议, 用于多协议 | 1.0.16以上版本 | |
filter | service. filter | string | 可选 |
| 性能调优 | 服务提供方远程 调用过程拦截器 名称,多个名称 用逗号分隔 | 2.0.5以上版本 | |
listener | exporter. listener | string | 可选 |
| 性能调优 | 服务提供方导出 服务监听器名称, 多个名称用逗号 分隔 | 2.0.5以上版本 | |
threadpool | threadpool | string | 可选 | fixed | 性能调优 | 线程池类型, 可选: fixed/cached | 2.0.5以上版本 | |
accepts | accepts | int | 可选 | 0 | 性能调优 | 服务提供者最大 可接受连接数 | 2.0.5以上版本 | |
version | version | string | 可选 | 0.0.0 | 服务发现 | 服务版本,建议使 用两位数字版本, 如:1.0,通常在 接口不兼容时版 本号才需要升级 | 2.0.5以上版本 | |
group | group | string | 可选 |
| 服务发现 | 服务分组,当一个 接口有多个实现, 可以用分组区分 | 2.0.5以上版本 | |
delay | delay | int | 可选 | 0 | 性能调优 | 延迟注册服务时 间(毫秒)- ,设 为-1时,表示延 迟到Spring容器 初始化完成时暴 露服务 | 2.0.5以上版本 | |
timeout | default. timeout | int | 可选 | 5000 | 性能调优 | 远程服务调用超 时时间(毫秒) | 2.0.5以上版本 | |
retries | default. retries | int | 可选 | 2 | 性能调优 | 远程服务调用重 试次数,不包括 第一次调用,不需 要重试请设为0 | 2.0.5以上版本 | |
connections | default. connections | int | 可选 | 0 | 性能调优 | 每服务消费者每 服务使用连接数 | 2.0.5以上版本 | |
loadbalance | default. loadbalance | string | 可选 | random | 性能调优 | 负载均衡策略, 可选:random, roundrobin, leastactive, 分别表示: 随机,轮循, 最少活跃调用 | 2.0.5以上版本 | |
async | default. async | boolean | 可选 | false | 性能调优 | 是否缺省异步 执行,不可靠 异步,只是忽略 返回值,不阻塞 执行线程 | 2.0.5以上版本 | |
local | local | boolean | 可选 | false | 服务治理 | 设为true,表示 使用缺省代理 类名,即: 接口名 + Local后缀。 | 2.0.5以上版本 | |
mock | mock | boolean | 可选 | false | 服务治理 | 设为true,表示使 用缺省Mock类名, 即:接口名 + Mock 后缀。 | 2.0.5以上版本 | |
token | token | boolean | 可选 | false | 服务治理 | 令牌验证,为空表 示不开启,如果为 true,表示随机生 成动态令牌 | 2.0.5以上版本 | |
registry | registry | string | 可选 | 缺省向 所有 registry 注册 | 配置关联 | 向指定注册中心 注册,在多个注 册中心时使用, 值为 的id属性,多个注 册中心ID用逗号分 隔,如果不想将该 服务注册到任何 registry,可将值 设为N/A | 2.0.5以上版本 | |
dynamic | dynamic | boolean | 可选 | true | 服务治理 | 服务是否动态注册, 如果设为false,注 册后将显示后 disable状态,需 人工启用,并且服 务提供者停止时, 也不会自动取消 册,需人工禁用。 | 2.0.5以上版本 | |
accesslog | accesslog | string/boolean | 可选 | false | 服务治理 | 设为true,将向 logger中输出访 问日志,也可填 写访问日志文件 路径,直接把访 问日志输出到指 定文件 | 2.0.5以上版本 | |
owner | owner | string | 可选 |
| 服务治理 | 服务负责人,用 于服务治理,请 填写负责人公 司邮箱前缀 | 2.0.5以上版本 | |
document | document | string | 可选 |
| 服务治理 | 服务文档URL | 2.0.5以上版本 | |
weight | weight | int | 可选 |
| 性能调优 | 服务权重 | 2.0.5以上版本 | |
executes | executes | int | 可选 | 0 | 性能调优 | 服务提供者每 服务每方法最 大可并行执行 请求数 | 2.0.5以上版本 | |
actives | default. actives | int | 可选 | 0 | 性能调优 | 每服务消费者 每服务每方法 最大并发调用数 | 2.0.5以上版本 | |
proxy | proxy | string | 可选 | javassist | 性能调优 | 生成动态代理 方式,可选: jdk/javassist | 2.0.5以上版本 | |
cluster | default. cluster | string | 可选 | failover | 性能调优 | 集群方式,可选: failover/failfast/ failsafe/failback/ forking | 2.0.5以上版本 | |
deprecated | deprecated | boolean | 可选 | false | 服务治理 | 服务是否过时, 如果设为true, 消费方引用时将 打印服务过时警 告error日志 | 2.0.5以上版本 | |
queues | queues | int | 可选 | 0 | 性能调优 | 线程池队列大小, 当线程池满时, 排队等待执行的 队列大小,建议 不要设置,当线 程程池时应立即 失败,重试其它 服务提供机器, 而不是排队,除非 有特殊需求。 | 2.0.5以上版本 | |
charset | charset | string | 可选 | UTF-8 | 性能调优 | 序列化编码 | 2.0.5以上版本 | |
buffer | buffer | int | 可选 | 8192 | 性能调优 | 网络读写缓 冲区大小 | 2.0.5以上版本 | |
iothreads | iothreads | int | 可选 | CPU + 1 | 性能调优 | IO线程池,接收 网络读写中断, 以及序列化和 反序列化,不 处理业务,业务 线程池参见 threads配置, 此线程池和CPU 相关,不建议配置。 | 2.0.5以上版本 | |
telnet | telnet | string | 可选 |
| 服务治理 | 所支持的telnet 命令,多个命令 用逗号分隔 | 2.0.5以上版本 | |
layer | layer | string | 可选 |
| 服务治理 | 服务提供者所 在的分层。 如:biz、dao、 | 2.0.7以上版本 |
<dubbo:reference/>服务消费者引用服务配置,XML解析对应的bean为:com.alibaba.dubbo.config.ReferenceConfig可配置的属性有:
标签 | 属性 | 对应URL参数 | 类型 | 是否必填 | 缺省值 | 作用 | 描述 | 兼容性 |
id |
| string | 必填 |
| 配置关联 | 服务引用 BeanId | 1.0.0以 上版本 | |
interface |
| class | 必填 |
| 服务发现 | 服务接口名 | 1.0.0以 上版本 | |
version | version | string | 可选 |
| 服务发现 | 服务版本, 与服务提供 者的版本 一致 | 1.0.0以 上版本 | |
group | group | string | 可选 |
| 服务发现 | 服务分组, 当一个接 口有多个 实现,可 以用分 组区分, 必需和 服务提供 方一致 | 1.0.7以 上版本 | |
timeout | timeout | long | 可选 | 缺省使用 的timeout | 性能调优 | 服务方法 调用超时 时间(毫秒) | 1.0.5以 上版本 | |
retries | retries | int | 可选 | 缺省使用 的retries | 性能调优 | 远程服务调 用重试次 数,不包括 第一次调用, 不需要重试 请设为0 | 2.0.0以 上版本 | |
connections | connections | int | 可选 | 缺省使用 的connections | 性能调优 | 对每个提供 者的最大连 接数,rmi、 http、hessian 等短连接协议 支持此配置, dubbo协议长 连接不支持 此配置 | 2.0.0以 上版本 | |
loadbalance | loadbalance | string | 可选 | 缺省使用 的loadbalance | 性能调优 | 负载均衡策 略,可选值: random, roundrobin, leastactive, 分别表示: 随机,轮循, 最少活跃调用 | 2.0.0以 上版本 | |
async | async | boolean | 可选 | 缺省使用 的async | 性能调优 | 是否异步执 行,不可靠 异步,只是 忽略返回值 ,不阻塞执 行线程 | 2.0.0以 上版本 | |
generic | generic | boolean | 可选 | 缺省使用 的generic | 服务治理 | 是否缺省泛 化接口,如 果为泛化接 口,将返回 GenericService | 2.0.0以 上版本 | |
check | check | boolean | 可选 | 缺省使用 的check | 服务治理 | 启动时检查 提供者是否 存在,true 报错,false 忽略 | 2.0.0以 上版本 | |
url | <url> | string | 可选 |
| 服务治理 | 点对点直连 服务提供者 地址,将绕 过注册中心 | 1.0.6以 上版本 | |
local | local | class | 可选 |
| 服务治理 | 服务接口客 户端本地代 理类名,用 于在客户端 执行本地逻 辑,如本地 缓存等,该本 地代理类的构 造函数必须允 许传入远程代 理对象,构造 函数如: public XxxServiceLocal (XxxService xxxService) | 2.0.0以 上版本 | |
mock | mock | class | 可选 |
| 服务治理 | 服务接口调用 失败Mock实 现类名,该 Mock类必须 有一个无参构 造函数,与 Local的区别 在于,Local 总是被执行, 而Mock只在 出现非业务异 常(比如超时, 网络异常等) 时执行,Local 在远程调用之 前执行,Mock 在远程调用 后执行。 | Dubbo 1.0.13 及其以 上版本 支持 | |
proxy | proxy | boolean | 可选 | javassist | 性能调优 | 选择动态代 理实现策略 ,可选: javassist, jdk | 2.0.2以 上版本 | |
client | client | string | 可选 |
| 性能调优 | 客户端传输 类型设置, 如Dubbo 协议的netty 或mina。 | Dubbo 2.0.0以上版本支持 | |
registry |
| string | 可选 | 缺省将从所 有注册中 心获服务 列表后合 并结果 | 配置关联 | 从指定注册 中心注册获 取服务列表 ,在多个注 册中心时使 用,值为 的id属性,多 个注册中心ID 用逗号分隔 | 2.0.0以上版本 | |
owner | owner | string | 可选 |
| 服务治理 | 调用服务负 责人,用于 服务治理, 请填写负责 人公司邮箱 前缀 | 2.0.5以上版本 | |
actives | actives | int | 可选 | 0 | 性能调优 | 每服务消费 者每服务每 方法最大并 发调用数 | 2.0.5以上版本 | |
proxy | proxy | string | 可选 | javassist | 性能调优 | 生成动态代 理方式, 可选: jdk/javassist | 2.0.5以上版本 | |
cluster | cluster | string | 可选 | failover | 性能调优 | 集群方式, 可选: failover/ failfast/ failsafe/ failback/ forking | 2.0.5以上版本 | |
filter | reference.filter | string | 可选 | default | 性能调优 | 服务消费 方远程调用 过程拦截器 名称,多个 名称用逗号 分隔 | 2.0.5以上版本 | |
listener | invoker.listener | string | 可选 | default | 性能调优 | 服务消费方 引用服务监 听器名称, 多个名称用 逗号分隔 | 2.0.5以上版本 | |
layer | layer | string | 可选 |
| 服务治理 | 服务调用者 所在的分层。 如:biz、 | 2.0.7以上版本 |
<dubbo:monitor/>监控中心配置信息,此为可选标签。XML解析对应的bean为com.alibaba.dubbo.config.MonitorConfig可配置的属性有:
标签 | 属性名称 | 对应 URL 参数 | 类型 | 是否必填 | 缺省值 | 在此标签中什么作用 | 描述 | 兼容 性 |
<dubbo:monitor> | address | <url> | string | 可选 | N/A | 服务 治理 | 监控中心服务器地址, 格式:ip:port,(1) 如配置为 address="10.20.130.230:12080", 则为使用logstat监控 (2)如未添加该配置, 或者address="N/A", 则会 去加载comsat.xml, 如果找 到,就使用comsat监控;如果 没找到,就不做监控 | 1.0.16 以上 版本 |
<dubbo:monitor> | protocol | protocol | string | 可选 | N/A | 服务 治理 | 监控中心协议,如果为 protocol="registry", 表示从注册中心发现 监控中心地址,否则直连监控中心 | 1.0.16 以上 版本 |
<dubbo:monitor> | username | username | string | 可选 | N/A | 服务 治理 | 登录监控中心用户名, 如果监控中心不需要 验证可不填 | 1.0.16 以上 版本 |
<dubbo:monitor> | password | password | string | 可选 | N/A | 服务 治理 | 登录监控中心密码, 如果监控中心不需要验 证可不填 | 1.0.16 以上 版本 |
<dubbo:monitor> | group | group | string | 可选 | N/A | 服务 治理 | 所属资源组 | 1.0.16 以上 版本 |
<dubbo:monitor> | version | version | string | 可选 | N/A | 服务 治理 | 版本 | 1.0.16 以上 版本 |
<dubbo:consumer/>服务消费者缺省值配置,该标签为<dubbo:reference>标签的缺省值设置。 XML解析对应的bean为:com.alibaba.dubbo.config.ConsumerConfig 可配置的属性有:
标签 | 属性 | 对应URL参数 | 类型 | 是否必填 | 缺省值 | 作用 | 描述 | 兼容性 |
timeout | default. timeout | int | 可选 | 5000 | 性能调优 | 远程服务调用 超时时间(毫秒) | 1.0.16以上版本 | |
retries | default. retries | int | 可选 | 2 | 性能调优 | 远程服务调用 重试次数,不 包括第一次调 用,不需要重 试请设为0 | 1.0.16以上版本 | |
loadbalance | default. loadbalance | string | 可选 | random | 性能调优 | 负载均衡策略, 可选值: random, roundrobin, leastactive, 分别表示: 随机,轮循, 最少活跃调用 | 1.0.16以上版本 | |
async | default. async | boolean | 可选 | false | 性能调优 | 是否缺省异步 执行,不可 靠异步,只是 忽略返回值, 不阻塞执行线程 | 2.0.0以上版本 | |
connections | default. connections | int | 可选 | 100 | 性能调优 | 每个服务对每 个提供者的最 大连接数,rmi、 http、hessian 等短连接协议 支持此配置, dubbo协议长 连接不支持此 配置 | 1.0.16以上版本 | |
generic | generic | boolean | 可选 | false | 服务治理 | 是否缺省泛化 接口,如果为 泛化接口,将 返回 GenericService | 2.0.0以上版本 | |
check | check | boolean | 可选 | true | 服务治理 | 启动时检查提 供者是否存 在,true报 错,false忽略 | 1.0.16以上版本 | |
proxy | proxy | string | 可选 | javassist | 性能调优 | 生成动态代 理方式, 可选: jdk/javassist | 2.0.5以上版本 | |
owner | owner | string | 可选 |
| 服务治理 | 调用服务负 责人,用于 服务治理, 请填写负责 人公司邮箱 前缀 | 2.0.5以上版本 | |
actives | default. actives | int | 可选 | 0 | 性能调优 | 每服务消费者 每服务每方 法最大并发 调用数 | 2.0.5以上版本 | |
cluster | default. cluster | string | 可选 | failover | 性能调优 | 集群方式,可 选:failover/ failfast/failsafe /failback/forking | 2.0.5以上版本 | |
filter | reference. filter | string | 可选 |
| 性能调优 | 服务消费方 远程调用过程 拦截器名称, 多个名称用逗 号分隔 | 2.0.5以上版本 | |
listener | invoker. listener | string | 可选 |
| 性能调优 | 服务消费方引 用服务监听器 名称,多个名 称用逗号分隔 | 2.0.5以上版本 | |
registry |
| string | 可选 | 缺省向所 有registry注册 | 配置关联 | 向指定注册中 心注册,在多个 注册中心时使 用,值为 的id属性,多个 注册中心ID用 逗号分隔,如 果不想将该服务 注册到任何 registry,可将 值设为N/A | 2.0.5以上版本 | |
layer | layer | string | 可选 |
| 服务治理 | 服务调用者所 在的分层。 如:biz、dao、 | 2.0.7以上版本 |
<dubbo:parameter/>子标签,解析为:java.util.Map,该标签为<dubbo:protocol>或<dubbo:service>或<dubbo:provider>
或<dubbo:reference>或<dubbo:consumer>的子标签,用于配置自定义参数,该配置项将作为扩展点设置自定义参数使用。
标签 | 属性 | 对应URL参数 | 类型 | 是否必填 | 缺省值 | 作用 | 描述 | 兼容性 |
key | key | string | 必填 |
| 服务治理 | 路由参数键 | 2.0.0以上版本 | |
value | value | string | 必填 |
| 服务治理 | 路由参数值 | 2.0.0以上版本 |
举例说明如下:
|
<dubbo:method/>子标签,定义方法级配置,该标签为<dubbo:service>或<dubbo:reference>的子标签,用于控制到方法级。
XML解析对应bean为:com.alibaba.dubbo.config.MethodConfig
可配置属性有:
标签 | 属性 | 对应URL参数 | 类型 | 是否必填 | 缺省值 | 作用 | 描述 | 兼容性 |
name |
| string | 必填 |
| 标识 | 方法名 | 1.0.8以上版本 | |
timeout | <metodName>. timeout | int | 可选 | 缺省为的 timeout | 性能调优 | 方法调用超 时时间(毫秒) | 1.0.8以上版本 | |
retries | <metodName>. retries | int | 可选 | 缺省为 的retries | 性能调优 | 远程服务调 用重试次数 ,不包括第 一次调用, 不需要重试 请设为0 | 2.0.0以上版本 | |
loadbalance | <metodName>. loadbalance | string | 可选 | 缺省为的loadbalance | 性能调优 | 负载均衡策 略, 可选值: random ,roundrobin, leastactive, 分别表示: 随机,轮循, 最少活跃调用 | 2.0.0以上版本 | |
async | <metodName>. async | boolean | 可选 | 缺省为<dubbo: reference>的async | 性能调优 | 是否异步执 行,不可靠 异步,只是 忽略返回值 ,不阻塞 执行线程 | 1.0.9以上版本 | |
sent | <methodName>. sent | boolean | 可选 | true | 性能调优 | 异步调用 时,标记 sent=true 时,表示 网络已发 出数据 | 2.0.6以上版本 | |
actives | <metodName>. actives | int | 可选 | 0 | 性能调优 | 每服务消费 者最大并 发调用限制 | 2.0.5以上版本 | |
executes | <metodName>. executes | int | 可选 | 0 | 性能调优 | 每服务每方 法最大使用 线程数限制, 此属性只在 作为 子标签时有效 | 2.0.5以上版本 | |
deprecated | <methodName>. deprecated | boolean | 可选 | false | 服务治理 | 服务方法是否过 时,此属性只在 作为 子标签时有效 | 2.0.5以上版本 | |
sticky | <methodName>. sticky | boolean | 可选 | false | 服务治理 | 设置true 该接口 上的所有方法 使用同一个 provider.如果需 要更复杂的规则, 请使用用路由 | 2.0.6以上版本 | |
return | <methodName>. return | boolean | 可选 | true | 性能调优 | 方法调用是否需 要返回值,async 设置为true时才 生效,如果设置 为true,则返回 future,或回调 onreturn等方法 ,如果设置为 false,则请求 发送成功后 直接返回Null | 2.0.6以上版本 | |
oninvoke | attribute属性, 不在URL中体现 | String | 可选 |
| 性能调优 | 方法执行前 拦截 | 2.0.6以上版本 | |
onreturn | attribute属性, 不在URL中体现 | String | 可选 |
| 性能调优 | 方法执行返回 后拦截 | 2.0.6以上版本 | |
onthrow | attribute属性, 不在URL中体现 | String | 可选 |
| 性能调优 | 方法执行有异 常拦截 | 2.0.6以上版本 |
举例说明如下:
<dubbo:referenceinterface="com.xxx.XxxService"> <dubbo:method name="methodName" timeout="3000" retries="2"/>
|
<dubbo:argument/>子标签,该标签为<dubbo:method>的子标签,用于方法参数的特征描述。
XML解析对应bean为:com.alibaba.dubbo.rpc.config.ArgumentConfig
可配置的属性有:
标签 | 属性 | 对应URL参数 | 类型 | 是否必填 | 缺省值 | 作用 | 描述 | 兼容性 |
index |
| int | 必填 |
| 标识 | 方法名 | 2.0.6以上版本 | |
type |
| String | 与index二选一 |
| 标识 | 通过参数类型查找 参数的index | 2.0.6以上版本 | |
callback | <metodName><index>.retries | boolean | 可选 |
| 服务治理 | 参数是否为callback 接口,如果为 callback,服务 提供方将生成反 向代理,可以从 服务提供方反向 调用消费方, 通常用于事件推送. | 2.0.6以上版本 |
举例说明如下:
<dubbo:method name="methodName" timeout="3000" retries="2">
<dubbo:argument index="0"callback="true"/>
<dubbo:annotation>使用注解配置dubbo标签,需要和spring的注解扫描器搭配使用
可配置属性有:
标签 | 属性 | 对应URL参数 | 类型 | 是否必填 | 缺省值 | 作用 | 描述 | 兼容性 |
id | key | string | 必填 |
| 初始化ID |
| 2.0.0以 上版本 | |
package | value | string | 必填 |
| 服务初始化 | 需要扫描的包 ,此包 中的接口或 实现类 采用了dubbo 的注解 | 2.0.0以 上版本 |
举例说明如下:
package com.zht.service.impl;
import org.springframework.stereotype.Component;
import com.alibaba.dubbo.config.annotation.Service;
import com.zht.service.RegistryService;
@Component //使用的是spring的注解
@Service //使用的是dubbo的注解
public class RegistryServiceImpl2 implements RegistryService {
@Override
public String hello(String name) {
// TODO Auto-generated method stub
return "hello dubbo annotation";
}
@Override
public String hello2(String name) {
// TODO Auto-generated method stub
return "hello dubbo annotation2";
}
}
PS:以上这些内容就是我们在XML中配置dubbo需要使用到的标签,可能有些地方理解有错误或者有遗漏的地方,欢迎给我留言。。。