SpringBoot3整合dubbo3客户端【最佳实践】

springboot整合dubbo+zookeerper 一、下载zookeeper服务注册管理器 1、下载地址: zookeeper:https://archive.apache.org/dist/zookeeper/ 不是版本越高越好,稳定决定一切,我下载的是3.5.7的。点击进去,跳转到如下页面,选择标识的版本-------为啥?有坑啊!稍不注意就会… 注意: 从zookeeper-3.5.5开始,在下载zk时候 请下载apache-zookeep... 阅读详情

​

 一、#创作灵感#

Dubbo3在公司项目中运用越来越多,固写下此笔记以巩固知识要点。

Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [1]Spring框架无缝集成。

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

​

二、环境

- SpringBoot 3.3.5   官方地址:SpringBoot 3.3.5

- Nacos 2.4.3   官方下载地址:Nacos 2.4.3 

- Dubbo 3.3.2 https://cn.dubbo.apache.org    (普通网络可能访问受限)

- Open JDK17  下载地址:Open JDK17

- 本环境与作者另一篇文章的dubbo服务端对应(springboot2+nacos注册中心提供dubbo服务)

待完善

三、相关组件及协议对比分析

dubbo openfeign
传输协议tripledubbo任意协议扩展
官方生态库提供 JsonRPC、thrift 等支持
http
传输效率TCP协议,请求报文体积更小TCP协议,请求报文体积更小使用HTTP2.0协议,也可以很好地减少报文体积,提高传输效率如果时基于HTTP1.1的协议,请求中会包含很多无用的内容;如果是基于HTTP2.0,那么简单地封装一下还是可以作为一个RPC使用的,这时标准RPC框架更多是服务治理。
性能消耗少少基于thrift可实现高效的二进制传输大部分是通过json实现的,字节大小和序列化耗时都比thrift要更消耗性能
负载均衡基本都自带了负载均衡策略基本都自带了负载均衡策略支持支持
服务治理能做到自动通知,不影响上游能做到自动通知,不影响上游支持支持

四、POM文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.****.***</groupId>
    <artifactId>alarm-webhook</artifactId>
    <version>2.0.0</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- Dubbo 3.3.2  3.2.16  3.1.11   2.7.23    
        阿里新平台已经将HSF换成了dubbo3    -->
        <dubbo.version>3.3.2</dubbo.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>${dubbo.version}</version>
        </dependency>

        <!-- Triple协议支持 -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-rpc-triple</artifactId>
        </dependency>

    </dependencies>
    <dependencyManagement>
        <dependencies>
            <!-- SpringBoot的依赖配置   2.5.15  2.6.15  2.7.18
                3.3.5  2.5.15    -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>3.3.5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

五、Dubbo客户端Java代码

import com.***.TimeUtils;
import com.***.TagsVO;
import com.***.SmsLinkageService;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.*;

/**
 * @Description: 短信组装
 * @Author: brickerman
 * @CreateDate: 2024/7/19 8:12 PM
 * @Version: 1.0
 */
@Slf4j
@Service
public class SmsAssembleService2 {

    /**  saas**度告警联动异常信息   **/
    @DubboReference
    private SmsLinkageService smsLinkageService;

    @Value(value="${spring.profiles.active}")
    private String profile;


    /**
     * 全国saas**度异常指标追踪
     *
     * @param systemCode
     * @param dateStr
     * @return
     * @throws Exception
     */
    private String attachCTSaasHealthDetail( String systemCode, String dateStr) throws Exception {
        String time = TimeUtils.calcWholeMinute();

        return smsLinkageService.saasCtTopErrMsg2( systemCode, time );
    }
}

六、客户端Dubbo配置

dubbo:
    application:
        name: smet-rpc-service  # smet-rpc-service  ops-portal_DUBBO_APP
        register-mode: all    # instance   interface   all (default)
#        metadata-type: remote  # local remote default
        qos-enable: false
        metadata-service-port: -1
        #consumer服务发现模式
        service-discovery:
            # FORCE_INTERFACE,只消费接口级地址,如无地址则报错,单订阅 2.x 地址
            # APPLICATION_FIRST,智能决策接口级/应用级地址,双订阅
            # FORCE_APPLICATION,只消费应用级地址,如无地址则报错,单订阅 3.x 地址
            migration: FORCE_APPLICATION

    config-center:
        address: none # 显式关闭配置中心

    metadata-report:
#        address: none
#        report-metadata: false
        timeout: 3000
        address: nacos://10.13.**.55:8848
        group: ${group}  # L  ${group}
        username: nacos
        password: nacos***

    protocol:
        name: tri
        port: -1  # tri 50051 -1时从50052开始找  dubbo 20880 -1时从20881开始找
        host: 10.13.**.55 # 显式指定服务暴露IP

    # 注册中心地址
    registry:
        address: nacos://10.13.16.**:8848
        protocol: nacos  # zookeeper nacos redis  multicast
        group: ${group}  # L  ${group}
        username: nacos
        password: nacos****
        parameters:
            dubbo.ip: 10.13.**.55 # 注册中心使用的IP
            register-consumer-url: true
            namespace: smet-rpc-service
        use-as-config-center: false # 明确声明不作为配置中心
        use-as-metadata-center: false

    consumer:
        # 负载均衡策略
        loadbalance: roundrobin # random  roundrobin
        check: false
        timeout: 5000
nacos:
    discovery:
        server-addr: 10.13.**.55:8848
        username: nacos
        password: nacos****
        namespace: smet-rpc-service
        group: L

常见问题(FAQ)

Q1:只将nacos做为服务发现中心,报没有配metadata-report地址,且metadata-report.address配置none时无效,如果处理?

A:添加metadata-report配置

    metadata-report:
#        address: none
#        report-metadata: false
        timeout: 3000
        address: nacos://10.13.**.55:8848
        group: ${group}  # L  ${group}
        username: nacos
        password: nacos***

Q2:为什么nacos界面菜单:服务管理-》服务列表 中只能看到应用名而看不到服务提供者的类名?

A:显示应用名、还是类名、亦或都显示由这条dubbo配置决定

# instance   interface   all (default)
dubbo.registry.register-mode=all

配置instance效果图:

Q3:SpringBoot3.3.5与dubbo3客户端集成能调到springboot2.7.18做的服务端吗?

A:能,本文就是。而且作者还有一遍文章写的dubbo3服务端,是用的springboot2.7.18

Q4:客户端是SpringBoot3能从Nacos发现springboot2注册上的服务并调用到该服务吗?

A:能,可参考作者另一篇服务端的文章

附件一:参考资料

名称地址
阿里新一代微服务解决方案:
Spring Cloud Alibaba
https://blog.youkuaiyun.com/emprere/article/details/103982655 
dubbo RPC协议概述https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/config/spring/spring-boot/
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/overview/
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/config/properties/#dubboprotocol
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/protocol/Dubbo 支持的 RPC 通信协议
https://blog.youkuaiyun.com/weixin_43931625/article/details/123033801tri : dubbo3主推协议,新一代dubbo协议 ,其他协议: dubbo rmi hessian, dubbo支持多协议,同协议多端口
openfeginCommon application properties
Spring Cloud OpenFeign
https://github.com/OpenFeign/feign
微服务服务间调用方式_微服务调用-优快云博客
https://developer.aliyun.com/article/1264489 
Dubbo 正式支持 Spring 6 & Spring Boot 3 Spring 6 之前,SpringFactoriesLoader 只允许加载"META-INF/spring.factories"文件内容。Spring 6 之后,SpringFactoriesLoader 可以加载自定义文件或文件名文件,并且可以通过链式编程加载多个文件。 阅读详情

相关推荐

SpringBoot整合dubbo系列(三) -- Springboot + Dubbo实例,附GitHub Demo地址

关联文章 SpringBoot整合dubbo系列(一) -- Docker安装ZooKeeper SpringBoot整合dubbo系列(二) -- Docker安装dubbo管理控制台 dubbo admin GitHub Demo地址 https://github.com/oldwang666666/springboot-dubbo-demo.git 工程目录结构 新建mave...

程序猿老王的博客 2447

springboot整合dubbo3 及其中遇到的坑

之前以及了解过了springboot cloud 微服务的一系列框架,其中dubbo在3之前一直作为一款优秀的rpc框架存在(对标spring cloud中的feign组件),为此duboo3出以后,dubbo也逐渐变成了一个微服务整合平台,目前我进行学习的是个时候遇到很多坑dubbo x springboot 官方开发文档。

qq_55272229的博客 2487

基于Dubbo实现rpc远程调用(springboot整合dubbo)

基于Dubbo实现rpc远程调用 以下是springboot整合dubbo实现rpc远程调用的简单示例。 使用的框架: jdk1.8 springboot-2.3.0 dubbo-2.6 zookeeper-3.4.9 一、开发dubbo服务接口: 按照dubbo官方开发建议,创建一个接口项目,该项目只定义接口和entity类; 创建springboot工程 dubbo-interface; 先贴一张工程最终的结构图 在pom.xml中配置maven依赖 ; 配置自身依赖,用于生成jar包给服务端与消

XIEZHONGKAI的博客 1287

Dubbo3和Spring Boot整合过程

Dubbo3 已经从一开始的 RPC 框架改头换面,现在的定位是微服务框架,除了提供基本的 RPC 功能外,它还提供了一整套的服务治理方案。。Dubbo3 专门提供了一个模块来和 Spring Boot 做整合,模块名是一般我们直接引入即可开启 Dubbo 的自动装配,在 Spring Boot 项目里使用 Dubbo。</</</</所以我们以这个模块为切入点,看看 Dubbo 做了什么。

程序员小潘 2237

SpringBoot2.1.3整合Dubbo2.6.0完整案例(基于IDEA)

这几天在学习Dubbo,所以整合了一些知识分享给大家。首先先介绍一下Dubbo,Dubbo是阿里巴巴公司开源的一个高性能优秀的服务治理框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。其在github上的网址为https://github.com/alibaba/dubbo-spring-boot-starter。Dubbo的主要架构如下图所示: ...

autumn_leaf blog 3605

【微服务】springboot 整合 dubbo3.0

springboot 整合 dubbo3.0

congge_study的博客 1万+

10. Springboot集成Dubbo3(一)简单介绍

Dubbo是一个开源的Java分布式服务框架,最初由阿里团队于2011年开发,其设计目标是为了解决阿里巴巴内部的大规模分布式系统中遇到的问题,包括服务治理、RPC通信等。后来阿里团队将Dubbo贡献给了Apache开源基金会,开源后,得到了广泛的关注和使用。此后阿里团队宣布不在维护Dubbo框架(可能转到了SpringCloud Alibaba框架设计),Dubbo版本停在了2.x。此后当当网基于2.x版本的基础上进行优化和维护,出现了Dubbox版本。

有一只柴犬的专栏 2452

Mac用户必看:PD虚拟机网络初始化失败的3分钟修复指南(附详细截图)

本文针对Mac用户在Parallels Desktop(PD虚拟机)启动时遇到的“网络初始化失败”问题,提供了快速诊断与修复指南。核心原因是macOS系统更新后权限未正确授予。文章通过详细的三步修复法(关闭进程、修改配置文件、重新授权重启),帮助用户在3分钟内恢复虚拟机网络连接,并附有排查清单与预防建议。

weixin_29231027的博客 534

SpringBoot整合Dubbo

SpringBoot整合Dubbo & zookeeper & Dubbo-admin 一、分布式概述 发展演变 1.1 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。适用于小型网站,小型管理系统,将所有功能都部署到一个功能里,简单易用。 缺点 性能扩展比较难 协同开发问题 不利于升级维护 1.2 垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互

冰冰凉的博客 8327

OpenFOAM-v2006重叠网格挖洞问题实战:如何手动修复overset代码中的边缘识别缺陷

本文深入探讨了OpenFOAM-v2006中重叠网格挖洞问题的实战解决方案,重点修复overset代码中的边缘识别缺陷。通过逆向工程解析挖洞决策机制,设计最小侵入式的函数override方案,并建立多级验证体系,有效解决了网格挖洞区域覆盖不全的问题,提升了计算流体动力学模拟的准确性和可靠性。

weixin_29216049的博客 429

单片机按键识别篇---单击---双击----长按

  最近做一任务需要使用一个按键实现三种功能,分别是按键单击功能,按键双击功能和按键长按功能,可能之前没有接触过这类按键复用情况,顶多也只是简单识别单击和长按,没有想过双击以上按键功能,也是绞尽脑汁,想了半天,又上网看了些例程,算是对于按键的识别有点小小的了解,感觉这个功能挺实用,在此做个随笔。 一、思路   1.识别长按操作思路:我们使用系统定时器定时,然后让系统每过一段时间去扫描按键I/O...

weixin_30311605的博客 3660

springboot2.x整合dubbo3(一)

之前在springboot2.x入门专栏里写过最近再带着团队改造一个历史产物项目,进行spring mvc 单体应用向springboot2.x+dubbo3的整改。这里说下为什么选择dubbo,而不用spring cloud,仅仅是因为这个项目组的成员们对dubbo2比较熟悉,其实针对这种中小型项目,我是比较倾向于能够快速成型的spring cloud,但是无奈有时间要求,所以就直接dubbo3了。 写这个小专辑是因为网上关于 springboot2.x整合dubbo3的文章太少了,好多还是用的已经不建

u012382725的博客 1483

手机端实时检测:YOLOv8n轻量化改进,骁龙865上35FPS,mAP+3.2%

YOLOv8n-Lite的改进不是简单的“砍通道、降分辨率”,而是结合手机端硬件特性(NPU加速、内存限制)和场景需求(小目标检测),通过“卷积拆分减少计算、通道瘦身适配内存、特征强化保留精度”的协同策略,在骁龙865上实现35FPS实时性与mAP+3.2%的双赢。该方案已在手机端AR应用中落地,支持实时手势识别、物体测量等功能,功耗比原始模型降低40%(连续检测1小时仅耗电12%)。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 723

SpringBoot整合Dubbo生产实践

以企业级开发标准编写的SpringBoot整合Dubbo教程

咖啡攻城狮的博客 1185

Unity 编辑器篇|(一)MenuItem菜单栏

"一级菜单/二级菜单上/三级菜单""一级菜单/二级菜单中 %#_B""一级菜单/二级菜单下 %&_C""一级菜单/二级菜单中 %#_B""一级菜单/二级菜单下 %&_C""GameObject/二级菜单""CONTEXT/组件名/菜单名""一级菜单/二级菜单上 #_A""Assets/二级菜单""一级菜单/二级菜单下""一级菜单/二级菜单上""一级菜单/二级菜单中""一级菜单/二级菜单下""一级菜单/二级菜单下""一级菜单/二级菜单上""一级菜单/二级菜单中""一级菜单/二级菜单下""自定义/Test"

游戏开发小Y的博客 13万+

【unity游戏开发入门到精通——通用篇】Post Processing 后处理插件Post-process Volume 和 Volume最全基础使用说明

之前我已经实现了不少后处理功能,本文其实就是将他们归类整理,以便更好的查找和理解。在Unity中,后处理(Post-Processing)是在相机所捕捉的图像上应用一些特殊效果的过程,后处理会让图像视觉效果更好(前提是做的好)。这些效果的范围有非常细微的颜色调整,也包括整体的美术风格的大修,可以让场景看起来更加真实或风格化,或者只是变得更好看。就像我们都会用手机拍照,但很多时候我们拍的原始的相片都打不到我们想要的效果。比如照片可能亮度不够,颜色不饱和或者对比度不好等。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 7892

【Dubbo】SpringBoot 整合 Dubbo 示例

创建三个单独模块,分别表示api,provider,consumer [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X1HodDrJ-1610828049176)(03 Dubbo使用-整合SpringBoot.assets/1596115264096.png)] 1.dubbo-api /** *要暴露的服务 */ public interface ISayHelloService { String sayHello(); } 2.dubbo-provider 1

A minor 2245

手把手教你学Simulink--复杂环境适应的四足机器人领域仿真建模实例:构建一个基于Simulink的四足机器人动态平衡保持仿真模型

通过上述步骤,你可以构建一个基本的基于Simulink的四足机器人动态平衡保持仿真模型。此模型不仅有助于理解四足机器人在复杂环境中的动态平衡控制原理,也为进一步优化提供了基础。随着技术的发展,还可以探索更多高级功能,如自适应步态调整、强化学习等,以提高机器人的智能性和适应性。

MHD0815的博客 234

SpringBoot 1 使用 Dubbo Initializer 快速整合 Dubbo

前言 阿里为 SpringBoot 提供了 Dubbo Initializer 用于快速搭建 SpringBoot 和 Dubbo 的简单示例应用。本文手把手带你感受 Dubbo Initializer 快速使用 SpringBoot 2 整合 Dubbo 的详细操作,让你快速上手 Dubbo 和 SpringBoot 的整合。 什么是Dubbo 在操作前先从官网了解一下Dubbo的介绍: Apa...

程序员小奎的博客 763

17、激光切割焦点位置和入射角对切割质量的影响研究

本研究通过响应面方法(RSM)结合Box-Behnken设计,系统分析了激光功率、切割速度和气体压力对SS 304不锈钢激光切割质量的影响,重点探讨了三种不同喷嘴在不同聚焦条件下的切缝比和条纹深度变化规律。实验结果表明,激光功率、切割速度和气体压力对切割质量具有显著影响,且不同喷嘴因焦点位置差异表现出不同的响应趋势。通过回归建模与优化,确定了最小激光功率、适中切割速度和最大气体压力为最优参数组合,可实现最小切缝比和较优条纹深度。研究为实际激光切割工艺提供了科学的参数选择依据和操作流程建议,有效提升了切割精度

mm9012的博客 123

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

springboot整合dubbo-zookeeper

springboot整合dubbo-zookeeper 1.zookeeper本地安装启动验证 1.1 zookeeper安装 1.1.1 下载zookeeper http://archive.apache.org/dist/zookeeper/ 1.1.2安装zookeeper流程地址 https://blog.youkuaiyun.com/qq_42445425/article/details/120049951?spm=1001.2014.3001.5501 1.1.3启动zookeeper 1.1.4验证

Douglas的博客 2565

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Dubbo:Docker部署Zookeeper、Dubbo Admin的详细教程和SpringBoot整合Dubbo的实战与演练

Dubbo作为阿里巴巴开源的微服务框架,提供了高性能的RPC调用。同时因为有阿里的背书,在国内市场得到了广泛应用,Dubbo的开源工作在2018年2月阿里将项目捐献给apache基金会后,得到了更加广大的发展。而最近因为在实际工作中有需要使用到Dubbo,故而专门开一篇专栏去记录并总结一下Dubbo相关的知识,在此,希望专栏里的内容能够帮到您。Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 D

weixin_51360020的博客 2218

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

springboot 整合dubbo ,@Reference @Service 可能空指针

Springboot 整合dubbo ,@Reference @Service 可能空指针记录遇到的问题,纯解决问题第一步:导包第二步(提供方(@Service)):application.properties的配置连接到zookeeper查看是否注册成功第三步:客户端(@Reference) 记录遇到的问题,纯解决问题 直接上代码,少屁话,给空气多点清新 第一步:导包 &lt;!-- sp...

清歌的博客 6539

nacos-dubbo-springboot整合

先启动nacos服务 以下服务端代码: application.properties配置: nacos.config.server-addr=127.0.0.1:8848 endpoint http://localhost:8080/actuator/nacos-config health http://localhost:8080/actuator/health management.en...

Emine 1万+
上一篇: Spring Cloud整合dubbo3并使用Nacos作为服务注册中心【最佳实践】
下一篇: 记一次生产环境Hbase填坑之路、Hbase客户端登陆、kerberos认证、端口列表、Pod上手撕代码【Hbase最佳实践】
飞火流星02027
博客等级 码龄19年 782粉丝 121原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞火流星02027

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值