概述
dubbo:service配置项用于在服务提供者端定义真实服务信息,一共有31个属性可供配置。所有配置最终都将转换为URL表示,然后注册到注册中心并传递给消费方。大部分的属性都会有一个URL的参数与之对应。
属性详情
interface
服务接口名,类型是class即接口完整类名,属于dubbo:service标签的必填属性(后续的属性说明中,没有专门指明是必填属性的,均为可选属性),其作用是用于服务发现。
ref
服务对象实现引用,类型是object,指向bean的id,属于dubbo:service标签的必填属性,其作用是用于服务发现。
version
服务版本,建议使用两位数字版本,如:1.0,通常在接口不兼容时版本号才需要升级。对应URL参数为version,类型为string,缺省值为0.0.0。
group
服务分组,对应URL参数为group,类型为string,当一个接口有多个实现,可以用分组区分,比较实用的属性。
path
服务路径,对应URL中的部分路径,类型为string,缺省为接口名。1.0不支持自定义路径,总是使用接口名,如果有1.0调2.0,配置服务路径可能不兼容。
delay
延迟注册服务时间,单位毫秒,类型为int,对应URL中的delay参数,缺省值为0。设为-1时,表示延迟到Spring容器初始化完成时暴露服务。在对dubbo进行优化时,delay是可优化的属性之一。
timeout
远程服务调用超时时间,单位毫秒,类型为int,对应URL的参数为timeout,其缺省值为1000即1秒。和delay一样,也是性能调优属性之一。
retries
远程服务调用重试次数,对应URL的参数为retries,int类型属性,缺省值为2。注意,重试次数不包括第一次调用,这里的重试次数定义的是第一次调用不成功后的重新尝试调用的次数。如果不需要重试,可以设置为0。retries也是服务提供者端性能调优的属性之一。
connections
对每个提供者的最大连接数,即每个提供者同一时间允许保持的最大连接数。int类型,缺省值为100。对应URL参数connections,是性能调优类的属性。connections对于rmi、http、hessian等短连接协议表示限制连接数,对于dubbo等长连接协表示建立的长连接个数。
loadbalance
负载均衡策略,对应URL中的loadbalance参数,string类型,其取值范围为random,roundrobin,leastactive,分别表示随机,轮询,最少活跃调用。loadbalance是性能调优中非常重要的属性之一,缺省值为random。
async
是否缺省异步执行,对应URL中async参数,属于boolean类型,缺省值为false,属于性能调优属性。它是不可靠异步,只是忽略返回值,不阻塞执行线程。
local
设为true,表示使用缺省代理类名,即:接口名 + Local后缀,对应URL中的local参数,类型为class或boolean,缺省值为false。local属于服务治理类属性,目前已经废弃,使用stub属性代替。
stub
设为true,表示使用缺省代理类名,即:接口名 + Stub后缀,服务接口客户端本地代理类名,用于在客户端执行本地逻辑,如本地缓存等,该本地代理类的构造函数必须允许传入远程代理对象,构造函数如:public XxxServiceStub(XxxService xxxService)。其对应URL中的stub参数,类型为class或boolean,缺省值为false。
mock
设为true,表示使用缺省Mock类名,即:接口名 + Mock后缀,服务接口调用失败mock实现类,该Mock类必须有一个无参构造函数,与Local的区别在于,Local总是被执行,而Mock只在出现非业务异常(比如超时,网络异常等)时执行,Local在远程调用之前执行,Mock在远程调用后执行。mock是比较重要的服务治理的属性,其类型为class或boolean,缺省值为false。对应URL的参数是mock。
token
令牌验证,为空表示不开启,如果为true,表示随机生成动态令牌,否则使用静态令牌,令牌的作用是防止消费者绕过注册中心直接访问,保证注册中心的授权功能有效,如果使用点对点调用,需关闭令牌功能。token属于服务治理类属性,其类型为class或boolean,缺省值为false。对应URL中的参数为token。
registry
表示当前dubbo:service标签声明服务实现向指定注册中心注册。在多个注册中心时使用,值为的id属性,多个注册中心ID用逗号分隔,如果不想将该服务注册到任何registry,可将值设为N/A。registry类型为string,缺省向所有registry注册。
provider
指定提供者provider,值为的id属性,string类型,缺省使用第一个provider配置。
deprecated
服务是否过时,如果设为true,消费方引用时将打印服务过时警告error日志,boolean类型,缺省为false,是可选的服务治理类属性。对应URL参数为deprecated。
dynamic
服务是否动态注册,如果设为false,注册后将显示后disable状态,需人工启用,并且服务提供者停止时,也不会自动取消册,需人工禁用。boolean类型,对应URL参数为dynamic,缺省值为true,属于服务治理类的属性。
accesslog
设为true,将向logger中输出访问日志,也可填写访问日志文件路径,直接把访问日志输出到指定文件。其类型为string或boolean,缺省值为false,对应URL参数为accesslog。
owner
服务负责人,用于服务治理,请填写负责人公司邮箱前缀。string类型的属性,对应URL参数为owner。
document
服务文档URL,对应URL参数为document,类型为string。
weight
当前服务实现的权重。int类型的性能调优属性,对应URL参数为weight。
executes
服务提供者每服务每方法最大可并行执行请求数,int类型的性能调优类属性,对应URL参数为executes,缺省值为0。
proxy
string类型的性能调优类属性,表示生成动态代理方式,可选取值为jdk和javassist,缺省值为javassist。其在URL的参数为proxy。
cluster
集群方式,string类型的性能调优类属性,可选取值为failover、failfast、failsafe、failback、forking,缺省值为failover。
filter
服务过滤器链,服务提供方远程调用过程拦截器名称,多个名称用逗号分隔。string类型性能调优属性,缺省值为default。其对应的URL参数为service.filter。
listener
服务提供方导出服务监听器名称,多个名称用逗号分隔。string类型的性能调优类属性,其对应的URL参数为exporter.listener,缺省值为default。
protocol
使用指定的协议曝露服务,在多协议时使用,值为的id属性,多个协议ID用逗号分隔。string类型。
layer
服务提供者所在的分层。如:biz、dao、intl:web、china:acton。string类型的服务治理类属性,其在URL上对应的参数为layer。
register
该协议的服务是否注册到注册中心,boolean类型的服务治理类属性,其在URL上对应的参数为register,缺省值为true。
总结
dubbo:service标签的属性非常多,除了interface和ref连个必填属性外,还有部分性能调优类属性会经常用到,比如delay,timeout,retries,loadbalance,async、weight、proxy、cluster等,另外有一些服务治理类的属性也会经常用到,比如mock、token等,可结合应用的场景需要灵活适当配置。
#java开发工程师# #架构师# #诗和远方#
![14825e182bad490a4a049248479b440f.png](https://i-blog.csdnimg.cn/blog_migrate/addae1177bf7b1222bb74d4fa6aa07f2.jpeg)
学习工作之余,一起看看诗和远方:湟川河畔