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

Dubbo介绍及使用

🍓 简介:java系列技术分享(👉持续更新中…🔥)
🍓 初衷:一起学习、一起进步、坚持不懈
🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏
🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝

🍓 更多文章请点击
在这里插入图片描述在这里插入图片描述

文章目录

  • 一、Dubbo简介
  • 二、Dubbo入门
    • 2.1 Dubbo的基础架构
    • 2.2 搭建Nacos 和 DubboAdmin
    • 2.3 服务提供者
    • 2.4 服务消费者
    • 2.5 抽取公共接口
    • 2.6 对象序列化
  • 三、高级特性
    • 3.1 Dubbo启动检查
    • 3.2 多版本
    • 3.3 超时与重试
    • 3.4 负载均衡
  • 四、SpringCloud整合Dubbo`
    • 4.1 服务提供者
    • 4.2 服务消费者

但是

一、Dubbo简介

Dubbo官网:https://cn.dubbo.apache.org

  • Dubbo是阿里巴巴推出的一个高性能、可扩展、可靠的RPC框架
  • 基于Dubbo进行远程调用
  • Dubboo基于TCP(传输层)协议,效率更高,可以替换Feign,提升高并发压力

二、Dubbo入门

2.1 Dubbo的基础架构

在这里插入图片描述

2.2 搭建Nacos 和 DubboAdmin

Nacos安装查看:Docker如何安装Nacos

dubbo-admin安装

  • DubboAdmin是阿里巴巴管理提供的管理控制台,可以实现服务查询,详情展示,服务测试等功能,可以更好的帮助开发人员对服务进行管理和监控
    #1、下载代码: 
    git clone https://github.com/apache/dubbo-admin.git
    #2、在 dubbo-admin-server/src/main/resources/application.properties中指定注册中心地址
    #3、构建
    mvn clean package -D maven.test.skip=true
    #4、启动
    mvn --projects dubbo-admin-server spring-boot:run
    #或者
    cd dubbo-admin-distribution/target; java -jar dubbo-admin-0.1.jar
    #5、访问 http://localhost:8080
    在这里插入图片描述

2.3 服务提供者

  1. 引入依赖

        <!--dubbo的起步依赖--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.8</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId><version>2.7.8</version></dependency>
    
  2. 需要远程调用的接口添加@DubboService注解

  3. 添加配置

    dubbo:protocol:name: dubbo   #协议port: 20881   #端口从20880开始registry:address: nacos://127.0.0.1:8848scan:base-packages: com.use.service  #@DubboService注解所在包
    

2.4 服务消费者

因为在DubboAdmin使用的接口全类名,所以调用接口服务提供者和消费者包名必须一致

  1. 引入依赖
        <!--dubbo的起步依赖--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.8</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId><version>2.7.8</version></dependency>
    
  2. 需要远程调用注入的Bean添加@DubboReference注解
  3. 添加配置
    dubbo:registry:address: nacos://127.0.0.1:8848
    

2.5 抽取公共接口

服务提供者和消费者调用接口包名必须一致,为了保证双方接口一致,则抽取公共接口模块

在提供者和消费者中引入公共接口模块依赖,实现复用

2.6 对象序列化

  • 如果要传输对象, 对象必须实现序列化接口implements Serializable

  • 因为:RPC通信,采用二进制数据格式,所以需要进行序列化处理。

三、高级特性

3.1 Dubbo启动检查

如果先启动服务消费者,@DubboReference引入远程服务时,因为提供者还没有启动,所以找不到提供者,则会抛出异常

在消费者添加如下配置即可:

	dubbo:registry:address: nacos://127.0.0.1:8848consumer:check: false #关闭启动检查

3.2 多版本

  1. 暴露服务时,指定服务版本@DubboService(version = "2.0.0")
  2. 消费者引入服务时,指定引用的服务版本@DubboReference(version = "2.0.0")

3.3 超时与重试

  • Dubbo默认超时时间:1000毫秒
  • 调用远程服务时,如果发生网络异常或者其他异常,Dubbo会进行重试,重试次数默认是3次,可以通过配置进行修改。
  • 重试机制会发送多次请求,可能会带来问题,例如保存会触发多次,
    1. 第一种(只针对该注解引入的服务)
    @DubboReference(retries = 0)
    
    1. 第二种(全局生效)
    	dubbo:registry:address: nacos://127.0.0.1:8848consumer:check: false #关闭启动检查retries: 0 # 重试次数为0
    

3.4 负载均衡

  1. Random(随机):将请求按权重随机分配给不同的服务节点。
  2. Round Robin(轮询):将请求按权重轮训到不同的服务节点上。
  3. Least Active:将请求按最少活跃调用数,相同的活跃数随机
  4. ConsistentHash: 一致性hash,相同参数的请求总是发到同一提供者。

在服务消费者端:

	@DubboReference(loadbalance= "random")

四、SpringCloud整合Dubbo`

SpringCloud整合Dubbo只需要在nacos中查看即可,不需要在DubboAdmin中查看

4.1 服务提供者

  1. 引入依赖
    <!--nacos注册中心的依赖-->
    <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency><!--springcloud alibaba dubbo依赖   -->
    <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId>
    </dependency>
    
  2. 需要远程调用的接口添加@DubboService注解
  3. 添加配置
    注意区别
    spring:application:name: consumer-servicecloud:nacos:discovery:server-addr: localhost:8848#配置dubbo,注册中心,暴露的端口和协议,dubbo注解的包扫描
    dubbo:protocol:name: dubboport: 20881registry:address: spring-cloud://localhost   #使用SpringCloud中的注册中心scan:base-packages: com.use.service  #dubbo中包扫描
    

4.2 服务消费者

  1. 引入依赖
       <!--nacos注册中心的依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--springcloud alibaba dubbo依赖   --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency>
    
  2. 需要远程调用注入的Bean添加@DubboReference注解
  3. 添加配置
    spring:application:name: provider-servicecloud:nacos:discovery:server-addr: localhost:8848#配置dubbo,注册中心,暴露的端口和协议,dubbo注解的包扫描
    dubbo:registry:address: spring-cloud://localhost   #使用SpringCloud中的注册中心
    consumer:check: false #关闭启动检查retries: 0 # 重试设置为0
    

在这里插入图片描述在这里插入图片描述

相关文章:

Dubbo介绍及使用

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…...

初阶C语言-分支和循环语句(下)

“花会沿途盛开&#xff0c;以后的路也是。” 今天我们一起来继续学完分支语句和循环语句。 分支和循环 3.循环语句3.4 do...while()循环3.4.1 do语句的用法 3.5关于循环的一些练习3.6 goto语句 3.循环语句 3.4 do…while()循环 3.4.1 do语句的用法 do循环语句;//当循环语句…...

pytorch工具——pytorch中的autograd

目录 关于torch.tensor关于tensor的操作关于梯度gradients 关于torch.tensor 关于tensor的操作 x1torch.ones(3,3) xtorch.ones(2,2,requires_gradTrue) print(x1,\n,x)yx2 print(y) print(x.grad_fn) print(y.grad_fn)zy*y*3 outz.mean() print(z,out)注意 atorch.randn(2,…...

Linux--进程池

1.一个父进程生成五个子进程且分别建立与子进程管道 ①用for循环&#xff0c;结束条件为<5 ②father父进程每次都要离开for循环&#xff0c;生成下一个子进程和管道 2.#include <cassert>和#include <assert.h>的区别 assert.h 是 C 标准库的头文件&#xff…...

SpringCloudAlibaba微服务实战系列(四)Sentinel熔断降级、异常fallback、block细致处理

SpringCloudAlibaba Sentinel降级和熔断 接着上篇文章的内容&#xff0c;在Sentinel中如何进行降级和熔断呢&#xff1f; 熔断降级规则 降级规则 在Sentinel中降级主要有三个策略&#xff1a;RT、异常比例、异常数&#xff0c;也是针对某个资源的设置。而在1.8.0版本后RT改为…...

WebDAV之π-Disk派盘+ WinSCP

WinSCP是一个免费的开源文件传输应用程序&#xff0c;它使用文件传输协议&#xff0c;安全外壳文件传输协议和安全复制协议来进行纯文件或安全文件传输。该应用程序旨在与Windows一起使用&#xff0c;并支持常见的Windows桌面功能&#xff0c;例如拖放文件&#xff0c;跳转列表…...

Python案例分析|使用Python图像处理库Pillow处理图像文件

本案例通过使用Python图像处理库Pillow&#xff0c;帮助大家进一步了解Python的基本概念&#xff1a;模块、对象、方法和函数的使用 使用Python语言解决实际问题时&#xff0c;往往需要使用由第三方开发的开源Python软件库。 本案例使用图像处理库Pillow中的模块、对象来处理…...

音视频——压缩原理

H264视频压缩算法现在无疑是所有视频压缩技术中使用最广泛&#xff0c; 最流行的。随着 x264/openh264以及ffmpeg等开源库的推出&#xff0c;大多数使用者无需再对H264的细节做过多的研究&#xff0c;这大降低了人们使用H264的成本。 但为了用好H264&#xff0c;我们还是要对…...

微服务 云原生:搭建 K8S 集群

为节约时间和成本&#xff0c;仅供学习使用&#xff0c;直接在两台虚拟机上模拟 K8S 集群搭建 踩坑之旅 系统环境&#xff1a;CentOS-7-x86_64-Minimal-2009 镜像&#xff0c;为方便起见&#xff0c;直接在 root 账户下操作&#xff0c;现实情况最好不要这样做。 基础准备 关…...

C++中的数学问题---进制转换

二进制转十六进制 string binToHex(string bin){string hex"";if(bin.size()%4!0){for(int i0;i<(4-bin.size()%4);i){bin"0"bin;}}for(int i0;i<bin.size();i4){string tmpbin.substr(i,4);bitset<4>b(tmp);hexb.to_ulong()<10?char(b.t…...

开发一个RISC-V上的操作系统(三)—— 串口驱动程序(UART)

目录 文章传送门 一、什么是串口 二、本项目串口的FPGA实现 三、串口驱动程序的编写 四、上板测试 文章传送门 开发一个RISC-V上的操作系统&#xff08;一&#xff09;—— 环境搭建_riscv开发环境_Patarw_Li的博客-CSDN博客 开发一个RISC-V上的操作系统&#xff08;二&…...

nuxt项目部署,npm run build 和npm run generate的区别

每日鸡汤&#xff1a;每个你想要学习的瞬间都是未来的你向自己求救 非服务端渲染的项目&#xff0c;比如普通的vite vue项目&#xff0c;我们在部署生产环境的时候&#xff0c;只需要两步 运行 npm run build 然后得到了一个 dist 文件夹将这个dist文件夹部署到一个静态服务器…...

数据仓库设计理论

数据仓库设计理论 一、数据仓库基本概念 1.1、数据仓库介绍 数据仓库是一个用于集成、存储和分析大量结构化和非结构化数据的中心化数据存储系统。它旨在支持企业的决策制定和业务分析活动。 1.2、基本特征 主题导向&#xff1a;数据仓库围绕特定的主题或业务领域进行建模…...

数据接口有哪些?(数据接口有哪几种)

数据接口是指不同应用程序或系统之间交换数据的通信界面。在现代信息化社会中&#xff0c;数据接口扮演着极为重要的角色&#xff0c;它们使得不同平台之间能够相互连接和交流&#xff0c;从而实现数据共享和应用集成。 数据接口的种类繁多&#xff0c;常见的有以下几种&#…...

华为云CodeArts产品体验的心得体会及想法

文章目录 前言CodeArts 的产品优势一站式软件开发生产线研发安全Built-In华为多年研发实践能力及规范外溢高质高效敏捷交付 功能特性说明体验感受问题描述完结 前言 华为云作为一家全球领先的云计算服务提供商&#xff0c;致力于为企业和个人用户提供高效、安全、可靠的云服务。…...

下载安装:SQLite+SQLiteStudio+VS

目录 1、SQLite 1.1、下载SQLite 1.2、配置SQLite的环境变量 2、SQLite Studio 2.1、下载SQLite Studio 2.2、安装SQLite Studio 3、Visual Studio 3.1、下载Visual Studio 3.2、安装Visual Studio 1、SQLite 1.1、下载SQLite SQLite官网&#xff1a;SQLite Downl…...

nginx路由

一般我们经常在访问网站时&#xff0c;通常会遇到输入某个页面的网址时&#xff0c;出现路由的转发&#xff0c;重定向等。可能访问的是一个网址&#xff0c;出来的时候就显示的是另外的地址。这是由于使用了nginx的缘故&#xff0c;保护了网址的安全性 &#xff08;1&#xf…...

MobPush Android SDK 厂商推送限制

概述 厂商推送限制 每个厂商通道都有对应的厂商配额和 QPS 限制&#xff0c;当请求超过限制且已配置厂商回执时&#xff0c;MobPush会采取以下措施&#xff1a; 当开发者推送请求超过厂商配额时&#xff0c;MobPush将通过自有通道进行消息下发。当开发者推送请求超过厂商 QP…...

计算机网络 day7 扫描IP脚本 - 路由器 - ping某网址的过程

目录 network 和 NetworkManager关系&#xff1a; 实验&#xff1a;编写一个扫描脚本&#xff0c;知道本局域网里哪些ip在使用&#xff0c;哪些没有使用&#xff1f; 使用的ip对应的mac地址都要显示出来 计算机程序执行的两种不同方式&#xff1a; shell语言编写扫描脚本 …...

gitee 配置ssh 公钥(私钥)

步骤1&#xff1a;添加/生成SSH公钥&#xff0c;码云提供了基于SSH协议的Git服务&#xff0c;在使用SSH协议访问项目仓库之前&#xff0c;需要先配置好账户/项目的SSH公钥。 绑定账户邮箱&#xff1a; git config --global user.name "Your Name" git config --glob…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

如何配置一个sql server使得其它用户可以通过excel odbc获取数据

要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据&#xff0c;你需要完成以下配置步骤&#xff1a; ✅ 一、在 SQL Server 端配置&#xff08;服务器设置&#xff09; 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到&#xff1a;SQL Server 网络配…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...