当前位置: 首页 > article >正文

使用Dubbo实现微服务之间的高效通信

目录

一、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-system
      qos-enable: false #不启用qos,启用的话会报端口被占用
   scan: # 指定 Dubbo 服务实现类的扫描基准包
      base-packages: com.diggl.base.system.service
   protocol: # 协议
      name: dubbo
      port: -1 # rpc需要一个额外的端口,-1 表示端口随机
   registry: # 注册中心
      address: nacos://localhost:8848?username=diggl&password=diggl
   consumer:
     check: false   # 引用服务没有注册时,不报错
     timeout: 6000

@DubboService注解用在类上,告诉Dubbo这个类是一个服务提供者,Dubbo会自动检测这个类并注册到注册中心。

/**
 * @description 远程用户Service实现类
 */
@DubboService
public class RemoteUserServiceImpl implements RemoteUserService {
    // 方法
}

消费端实现

在消费端bootstrap.yml中添加配置以下配置

# Dubbo        
dubbo:
   application:
      name: diggl-auth
      qos-enable: false #不启用qos,启用的话会报端口被占用
   protocol:
      name: dubbo    
      port: -1 # rpc需要一个额外的端口,-1 表示端口随机
   registry:
      address: nacos://localhost:8848?username=diggl&password=diggl
   cloud:
      subscribed-services: diggl-base-system,diggl-apigateway-service
   consumer:
      check: false
      timeout: 60000

@DubboReference注解告诉Dubbo当前类是一个服务消费者,Dubbo会自动检测这个类并从注册中心获取被注解的服务提供者对象的信息,并建立与服务提供者的通信。(@Reference注解是Dubbo早期的版本中使用的)

/**
 * 登录校验
 */
@Component
public class SysLoginService {
    @DubboReference
    private RemoteUserService remoteUserService;
    // 方法
}


http://www.kler.cn/a/229159.html

相关文章:

  • 大疆发布可折叠航拍无人机,仅重249g,支持 4800 万像素拍摄
  • 生成订单号工具类
  • 如何使用策略模式并让spring管理
  • 有一台服务器可以做哪些很酷的事情
  • 鸿蒙UI开发——键盘弹出避让模式设置
  • 漫话架构师|什么是系统架构设计师(开篇)
  • 肿瘤免疫分型
  • 06-Java适配器模式 ( Adapter Pattern )
  • 2024年Java架构篇之数据结构与算法面试题
  • WINDOWS搭建NFS服务器
  • Redis面试题42
  • 02.02_111期_C++_模板笔记
  • 掌握Linux du命令:高效查看文件和目录大小
  • 一个查看armv8系统寄存器-值-含义的方式
  • k8s学习-Kubernetes的网络
  • 开源免费的物联网网关 IoT Gateway
  • 手拉手Vue3+vite引入echarts
  • vue3.x 英文转换成简体中文
  • EasyExcel下载带下拉框和批注模板
  • fastapi mysql 开发restful 3
  • MongoDB的操作和理解
  • 6. 尚硅谷大数据111门技术+42个项目
  • ref和reactive, toRefs的使用
  • 计算机项目SpringBoot项目 办公小程序开发
  • haiku实现TemplatePairStack类
  • 【Linux】Linux权限(下)