简介
Dubbo是一款高性能、轻量级的开源Java RPC框架,主要用于构建大型分布式系统。提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
Dubbo框架主要由以下组件构成:Provider、Consumer、Registry、Monitor和Container。Provider是服务提供者,发布服务并将服务注册到注册中心,等待消费者调用。Consumer是从注册中心订阅服务,和服务提供者进行通信,消费服务。Registry负责记录服务提供者的信息,以及服务提供者和服务消费者之间的关系,帮助消费者发现可用的服务实例。Monitor收集Dubbo节点的性能指标、服务调用统计信息等,以便运维人员进行监控和管理。Container是服务的运行容器。
项目结构
项目结构分层明显,各中间件都有自己独立的微服务;在业务模块中直接引入中间件微服务实现不同模块之间的相互调取
项目依赖
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.12</version>
</dependency>
流程
1. 在dubbo中根据不同微服务模块分包,定义自己的service接口
2. 在对应的微服务模块中建立dubbo包定义impl实现刚刚定义的service接口
@DubboService
是一个用于在Dubbo框架中声明和配置服务的注解。它主要用于服务提供者
version
:服务的版本号,用于区分同一接口的不同版本。group
:服务的分组,用于在注册中心进行分类。protocol
:服务所使用的协议,用于指定服务调用时所使用的通信协议。export
:服务的导出地址,用于指定服务提供者的地址。ref
:服务的引用,用于指定服务实现类的全限定名。interfaceClass
:服务的接口类,用于指定服务所实现的接口。annotatedServiceBeanName
:带注解的服务Bean名称,用于指定带注解的服务Bean的名称。使用
@DubboService
注解时,需要将其添加到服务实现类的上方,以便Dubbo框架能够识别和配置该服务
3. 代码中调用
在业务层使用@DubboReference注解注入
@DubboReference
是一个用于在Dubbo框架中引用远程服务的注解。它主要用于服务消费者
version
:服务的版本号,用于匹配对应版本的服务提供者。group
:服务的分组,用于匹配对应分组的服务提供者。protocol
:服务所使用的协议,用于指定与服务提供者通信所使用的协议。check
:是否进行远程服务校验,默认为true。timeout
:调用远程服务的超时时间,默认为-1表示使用默认值。connections
:最大连接数,默认为-1表示使用默认值。retries
:重试次数,默认为2次。loadbalance
:负载均衡策略,默认为随机。async
:是否异步调用,默认为false。cache
:缓存策略,默认为无缓存。version
:指定要引用的远程服务版本。group
:指定要引用的远程服务分组。使用
@DubboReference
注解时,需要将其添加到服务引用对象的上方,以便Dubbo框架能够识别和配置该引用