目录
RPC与Dubbo
Springboot整合Dubbo
服务端实现
消费端实现
RPC与Dubbo
RPC(Remote Procedure Call)是指远程过程调用。
常见的RPC框架有Dubbo(Alibaba )、gRPC(Google)、Thrift(Facebook)。
其中
Dubbo是一款Java RPC框架,致力于提供高性能的RPC远程服务调用方案。以帮助开发人员快速构建高效的分布式系统。Alibaba 是其主要贡献者。
Springboot整合Dubbo
确保项目中已经存在dubbo依赖,可以直接添加spring-cloud-alibaba-dependencies依赖到项目中,spring-cloud-alibaba-dependencies依赖于spring-cloud-starter-dubbo,spring-cloud-starter-dubbo依赖于dubbo。
<!-- SpringCloud Alibaba 微服务 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope>
</dependency>
服务端实现
在服务端bootstrap.yml中添加配置以下配置
# Dubbo
dubbo:application:name: diggl-base-systemqos-enable: false #不启用qos,启用的话会报端口被占用scan: # 指定 Dubbo 服务实现类的扫描基准包base-packages: com.diggl.base.system.serviceprotocol: # 协议name: dubboport: -1 # rpc需要一个额外的端口,-1 表示端口随机registry: # 注册中心address: nacos://localhost:8848?username=diggl&password=digglconsumer:check: false # 引用服务没有注册时,不报错timeout: 6000
@DubboService注解用在类上,告诉Dubbo这个类是一个服务提供者,Dubbo会自动检测这个类并注册到注册中心。
/*** @description 远程用户Service实现类*/
@DubboService
public class RemoteUserServiceImpl implements RemoteUserService {// 方法
}
消费端实现
在消费端bootstrap.yml中添加配置以下配置
# Dubbo
dubbo:application:name: diggl-authqos-enable: false #不启用qos,启用的话会报端口被占用protocol:name: dubbo port: -1 # rpc需要一个额外的端口,-1 表示端口随机registry:address: nacos://localhost:8848?username=diggl&password=digglcloud:subscribed-services: diggl-base-system,diggl-apigateway-serviceconsumer:check: falsetimeout: 60000
@DubboReference注解告诉Dubbo当前类是一个服务消费者,Dubbo会自动检测这个类并从注册中心获取被注解的服务提供者对象的信息,并建立与服务提供者的通信。(@Reference注解是Dubbo早期的版本中使用的)
/*** 登录校验*/
@Component
public class SysLoginService {@DubboReferenceprivate RemoteUserService remoteUserService;// 方法
}