Dubbo从入门到应用:实战技巧和最佳实践

embedded/2024/11/14 6:26:16/

远程调用

  • 一、Dubbo快速上手
    • 提供者
      • @DubboService
    • 调用者
      • @DubboReference
    • 开启Dubbo调用
      • @EnableDubbo
  • 二、Dubbo快速入门
    • 1、添加 Dubbo 相关的 maven 依赖。
    • 2、定义服务接口
    • 3、 定义服务端的实现
    • 4、配置服务端及消费端 Yml 配置文件
    • 5、基于 Spring 配置服务端及消费端启动类
    • 6、消费端远程调用服务端

一、Dubbo快速上手

提供者

@DubboService

在这里插入图片描述

调用者

@DubboReference

在这里插入图片描述

开启Dubbo调用

@EnableDubbo

在这里插入图片描述

二、Dubbo快速入门

Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。

1、添加 Dubbo 相关的 maven 依赖。

对于多模块项目,首先需要在父项目的 pom.xml 里面配置依赖信息。

  <!-- Dubbo --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-bom</artifactId><version>${dubbo.version}</version><type>pom</type><scope>import</scope></dependency><!-- nacos作为注册中心 --> <dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.1.0</version></dependency>

注:Dubbo 3.0.0 及以上版本需 nacos-client 2.0.0 及以上版本

# application.yml (Spring Boot)  注册到nacosdubboregistryaddress: nacos://localhost:8848parameters.namespace: 5cbb70a5-xxx-xxx-xxx-d43479ae0932

2、定义服务接口

服务接口 Dubbo 中沟通消费端和服务端的桥梁。

在这里插入图片描述

3、 定义服务端的实现

定义了服务接口之后,可以在服务端这一侧定义对应的实现,这部分的实现相对于消费端来说是远端的实现,本地没有相关的信息。
在这里插入图片描述
在 DemoServiceImpl 中,实现了 DemoService 接口,对于 sayHello 方法返回 Hello name。

注:在DemoServiceImpl 类中添加了 @DubboService 注解,通过这个配置可以基于 Spring Boot 去发布 Dubbo 服务。

4、配置服务端及消费端 Yml 配置文件

通过 Spring Boot 的方式配置 Dubbo 的一些基础信息。
在这里插入图片描述

dubbo:application:name: dubbo-springboot-demo-providerprotocol:name: dubboport: -1registry:address: zookeeper://${zookeeper.address:127.0.0.1}:2181

在这个配置文件中,定义了 Dubbo 的应用名、Dubbo 协议信息、Dubbo 使用的注册中心地址,服务端和消费端配置相同。

5、基于 Spring 配置服务端及消费端启动类

在这个启动类中,通过配置了一个@EnableDubbo注解去读取我们前面定义的 application.yml 配置文件并启动应用(服务端和消费端的启动类上都需要加上该注解)。
在这里插入图片描述

6、消费端远程调用服务端

在 Task 类中,通过@DubboReference注解 从 Dubbo 获取了一个 RPC 订阅,这个 demoService 就可以像本地调用一样直接调用。
在这里插入图片描述
后记
👉👉💕💕美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!! 🌹🌹🌹


http://www.ppmy.cn/embedded/97299.html

相关文章

element-plus默认菜单打开

在 Vue 3 中使用 Element Plus 的 <el-menu> 组件时&#xff0c;默认情况下菜单项是关闭状态的。如果你想让某个菜单项默认处于展开状态&#xff0c;你可以通过设置菜单项的 default-active 属性来实现。 默认写法 步骤 1: 设置 default-active 你需要在 <el-menu&…

浙商证券社招入职人才测评:语言数字逻辑性格北森测评笔试题库高分答案、通关技巧

浙商证券作为一家综合性证券公司&#xff0c;其社会招聘的待遇情况包括但不限于以下几个方面&#xff1a;首先&#xff0c;公司提供具有竞争力的薪酬体系&#xff0c;其中应届生的平均薪资待遇大约在12K-20K之间&#xff0c;并且可能发放20个月的薪资&#xff0c;总包大约在25万…

【车载开发系列】常见单片机烧录与调试设备

【车载开发系列】常见单片机烧录与调试设备 常见单片机烧录与调试设备 【车载开发系列】常见单片机烧录与调试设备一. ST-LINK二. J-Link三. ISP&#xff08;In-System Programming 系统在线编程&#xff09;四. USB DFU&#xff08;Device Firmware Upgrade&#xff09;五. JT…

异常篇(Java - 异常机制)(doing)

目录 一、何为异常 二、异常处理机制 1. 简介 2. 产生原因 三、异常类 1. Throwable 2. Exception&#xff08;RuntimeException、CheckedException&#xff09; 四、异常类型 1. 系统错误 2. 编译时期异常 3. 运行时期异常 4. 三种类型异常的区别 五、链式异常 1…

Qt如何调取打印机

在Qt中&#xff0c;可以使用QPrinter类来调用打印机。以下是一个简单的示例&#xff1a; cpp // 创建一个打印机对象 QPrinter *printer new QPrinter; // 设置为默认打印机 printer->setOutputFileName("file://localhost/lp0"); // 设置打印模式 printer-&…

【题目/训练】:双指针

引言 我们已经在这篇博客【算法/学习】双指针-CSDN博客里面讲了双指针、二分等的相关知识。 现在我们来做一些训练吧 经典例题 1. 移动零 思路&#xff1a; 使用 0 当做这个中间点&#xff0c;把不等于 0(注意题目没说不能有负数)的放到中间点的左边&#xff0c;等于 0 的…

在 CentOS Stream 9 中安装 MySQL 8

MySQL 是一种广泛使用的开源关系型数据库管理系统&#xff0c;它可以存储和管理各种类型的数据&#xff0c;如文本&#xff0c;数字&#xff0c;日期&#xff0c;图像等。MySQL 8 是 MySQL 的最新版本&#xff0c;它提供了许多新的特性和改进&#xff0c;如窗口函数&#xff0c…

SpringBoot依赖之Spring Data Redis一集合Set

概念 Spring Data Redis (AccessDriver) 依赖名称: Spring Data Redis (AccessDriver)功能描述: Advanced and thread-safe Java Redis client for synchronous, asynchronous, and reactive usage. Supports Cluster, Sentinel, Pipelining, Auto-Reconnect, Codecs and muc…