初步使用springboot整合dubbo
注:本篇文章不附有dubbo、zookeeper、monitor配置教程
一、中心思想
服务提供者提供服务,服务消费者消费服务(围绕provide和consumer展开)
二、整体架构
1.Provider:服务提供者,暴露服务的服务提供方
2.Registry:注册中心,提供服务注册和服务订阅的中心平台
3.Consumer:服务消费者,调用远程服务的服务消费方
4.Monitor:监控中心,统计服务调用次数和调用时间
三、整合步骤
以provider和consumer项目已存在为前提(创建两个普通springboot项目,提供接口和实现类即可)
1.导入dubbo依赖:dubbo-spring-boot-starter(springboot2.0版本以上,则使用0.2.0版本依赖,springboot1.5版本使用0.1.1版本依赖)
2.配置application.properties文件
(1)dubbo.application.name:(服务(提供者/消费者)/应用的名字)
(2)dubbo.registry.protocol:指定注册中心的协议(可选择使用zookeeper、multicast、 nacos、Redis、simple等等)
(3)dubbo.registry.addresss:指定注册中心地址信息,zookeeper默认端口2181(本地: 127.0.0.1:2181)
(4)dubbo.protocol.name:dubbo 指定通信规则(通信协议)
(5)dubbo.protocol.port:20880 指定通信规则(通信端口)
(6)dubbo.monitor.protocol:registry 连接监控中心,自动发现
(7)服务暴露:
a.在需要暴露的服务接口实现类中,添加@service注解(基于dubbo-jar的注解)
b.在提供者和消费者启动类中添加@EnableDubbo:开启基于注解的dubbo功能
c.在消费者中,使用@Reference注解调用提供者所提供的服务接口
3.Dubbo配置文件的优先级
(1)虚拟机传入参数 > dubbo.xml/application.properties > dubbo.proptertis(dubbo公共 配置文件,存在于resource目录下,配置参数与application.properties文件相同)
四、配置补充
dubbo:consumer/dubbo:reference统一配置消费者/提供者的所有规则,配置覆盖关系:
方法级优先,接口级次之,全局配置再次之;若级别相同,则消费方优先。
1.启动时检查:设置check属性值为false,使消费者启动不再检查是否能够连接获取提供者, 避免消费者服务启动报错,当提供者启动后,可自动获取提供者提供的服务。
2.超时设置:设置提供者和消费者的超时时间(timeout),指定一段时间,若时间内没有返回, 则视为调 用失败。超时默认值为1000ms
3.重试次数:在不包含第一次调用的情况下,服务调用失败时,额外进行对应次数的重试调用。 超出重试次数后,若调用扔不成功,则返回调用失败。若调用的服务分布于多个服务器, 重试调用时会自动尝试从不同的服务器中调用;重试操作仅限于幂等操作方法,不能设置 重试次数在非幂等操作方法上。(幂等:无论执行多少次,执行结果不变==>删除,修改等)
4.多版本:version 版本属性设置在服务提供者中,可区分新老不同版本,消费者在调用时可 以通过version属性设置对应的属性值,调用对应版本的服务。也可以指定version=”*”, 则随机调用服务提供方所指定的版本。
5.本地存根:在消费者调用提供者服务之前,用于做验证或缓存操作,可在provider的 dubbo.service.stub或者consumer的dubbo.reference.stub属性中指定本地存根实现类。 本地存根的实现类通过实现提供者服务接口,创建构造器,通过dubbo自动注入远程代理 对象。对消费者提供参数进行验证或进行缓存操作后,再通过远程代理对象的注入调用对 应的方法。