1,启动时检查
缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题。
@Reference(version = "${dubbo.application.version}",timeout = 5000,check = false)
private IUserService userService;
check=true //强制检查引用的服务
check=false //不检查引用的服务
2,直连提供者
在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连, 点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表。
@Reference(version = "${dubbo.application.version}",timeout = 5000,url = "dubbo://127.0.0.1:20880")
private IUserService userService;
url = "dubbo://自己的IP:自己的端口"
3,服务分组
当一个接口有多种实现时,可以用group区分。
provider:
@Service(version = "${dubbo.application.version}",interfaceClass = IUserService.class,timeout = 5000,group = "test")
@Service(version = "${dubbo.application.version}",interfaceClass = IUserService.class,timeout = 5000,group = "test2")
@Service(version = "${dubbo.application.version}",interfaceClass = IUserService.class,timeout = 5000,group = "test3")
cosumer:
@Reference(version = "${dubbo.application.version}",timeout = 5000,group = "test")
@Reference(version = "${dubbo.application.version}",timeout = 5000,group = "test2")
@Reference(version = "${dubbo.application.version}",timeout = 5000,group = "test3")
注释:可以为整个service添加分组。
dubbo.registry.group=test
4、多版本
当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。 一般处理步骤
1)在低压力时间段,先升级一半提供者为新版本
2)再将所有消费者升级为新版本
3)然后将剩下的一半提供者升级为新版本
注:所有接口都应定义版本,在这里有几点需要注意下,接口服务如果更新频繁,并且兼容老版本的,不建议更改版本号,因为dubbo这边对除 * 以外的版本号,都是采用完全匹配的方式进行匹配。即服务端的版本号如果从1.0升级为1.1,并且未保留原有的1.0的服务,那么客户端必须同时也将服务版本号升级为1.1,否则将无法匹配到远处服务。
5、本地测试
service
dubbo.registry.register=false
关闭服务注册
web
@Reference(version = "${dubbo.application.version}" , timeout = 5000, url = "dubbo://localhost:20880")
手动指定依赖服务地址,默认端口20880,通过控制台查看