• Dubbo入门实战最全攻略(基于 Spring Boot 实现)


    Dubbo应用

    RPC通信

    Apache Dubbo 3构建在 HTTP/2 协议之上,具有更好的穿透性与通用性 , 支持基于 IDL 的服务定义

    集成了业界主流的大部分协议,使得用户可以在 Dubbo 框架范围内使用这些通信协议 , 这些协议包括 rest、hessian2、jsonrpc、thrift 等

    服务发现

    即消费端自动发现服务地址列表的能力,是微服务框架需要具备的关键能力,借助于自动化的服务发现,微服务之间可以在无需感知对端部署位置与 IP 地址的情况下实现通信

    Dubbo 提供的是一种 Client-Based 的服务发现机制,通常还需要部署额外的第三方注册中心组件来协调服务发现过程,如常用的 Nacos、Consul、Zookeeper 等,Dubbo 自身也提供了对多种注册中心组件的对接,用户可以灵活选择

    Dubbo服务注册与发现过程如下图(图片来自官网):
    在这里插入图片描述
    流量治理

    Dubbo 提供了丰富服务治理规则,包括路由规则、动态配置等

    部署架构

    Dubbo 作为一个微服务框架,为在分布式环境下实现各个微服务组件间的协作,定义了一系列中心化组件,包括

    注册中心:协调服务提供者(Provider)和服务消费者(Consumer)之间的地址注册与发现

    配置中心:

    存储 Dubbo 启动阶段的全局配置,保证配置的跨环境共享与全局一致性

    负责服务治理规则(路由规则、动态配置等)的存储与推送

    元数据中心:

    接收 Provider 上报的服务接口元数据,为 Admin 等控制台提供运维能力(如服务测试、接口文档等)

    作为服务发现机制的补充,提供额外的接口/方法级别配置信息的同步能力,相当于注册中心的额外扩展

    下图描述了Dubbo各服务组件间协调的交互图(图片来自官网):
    在这里插入图片描述

    其他内容

    可以参考官网的”什么是Dubbo?”内容,

    https://dubbo.incubator.apache.org/zh/overview/what/

    Dubbo示例

    需求

    构建一个基于用户的CRUD服务

    服务提供者(Provider)根据契约提供服务

    服务消费者(Consumer)根据契约消费服务

    服务消费者(Consumer)以泛化方式消费服务

    实现逻辑

    在这里插入图片描述

    分别开发如下项目,实现需求(如上图)

    服务接口项目:定义的服务规范IUserService、公共实体类UserEntity

    服务提供者(Provider)项目:

    引入Nacos注册依赖

    添加注册到指定Nacos服务注册中心的配置

    引入契约接口依赖

    定义UserService服务实现,定义实际的业务逻辑,继承于IUserService,并使用公共实体类UserEntity

    服务消费者(Consumer)项目:

    引入Nacos注册依赖

    添加订阅指定Nacos服务注册中心的配置

    引入契约接口依赖

    定义自身业务,在需要时,按需自动装配IUserService接口实现,使用装配对象逻辑完成自身业务,就如调用本地实现一样,实际使用的是通过Nacos订阅服务提供者提供的服务逻辑

    Nacos注册中心:

    提供服务提供者(Provider)的注册

    提供服务消费者(Consumer)的订阅

    服务消费者(Consumer)–泛化消费

    引入Nacos注册依赖

    添加订阅指定Nacos服务注册中心的配置

    无需引入契约接口依赖

    定义自身业务,在需要时,使用Dubbo提供的泛化工具类,实现对IUserService服务接口的调用,也如调用本地实现一样,实际使用的是通过Nacos订阅服务提供者提供的逻辑

    代码概览

    服务接口项目

    定义普通Spring Boot类库项目,定义接口IUserService、实体类UserEntity、标准响应封装ResponseData

    具体见项目dubbo-interface,代码结构如下图
    在这里插入图片描述
    服务提供者项目

    定义一个普通的Spring Boot项目,引入契约接口项目dubbo-interface,实现IUserService接口,实现业务逻辑

    实现步骤:

    1.在pom.xml中引入如下依赖

    dubbo依赖:org.apache.dubbo.dubbo:3.0.3

    nacos注册依赖:

    org.apache.dubbo.dubbo-registry-nacos:3.0.3、

    com.alibaba.spring.spring-context-support:1.0.11

    引入契约接口dubbo-interface依赖

    2.在application.properties中添加nacos配置,包括服务名称、协议、nacos服务器地址等

    3.启用Dubbo,在启动类上添加@EnableDubbo注解

    4.标识Dubbo服务,在继承于契约接口dubbo-interface中IUserService的服务类上进行标识,会注册到Nacos注册中心

    @DubboService(version = “$版本号”)
    public class UserService implements IUserService{
    //实现契约接口逻辑
    }

    5.定义Dubbo服务拦截器,通过实现Filter接口实现,可选

    具体见项目dubbo-provider,代码结构如下图
    在这里插入图片描述
    服务消费者项目

    定义一个普通的Spring Boot项目,引入契约接口项目dubbo-interface,在自身的业务中,自动装配IUserService对象,调用服务提供者实现的业务逻辑

    实现步骤:

    1.在pom.xml中引入如下依赖

    dubbo依赖:org.apache.dubbo.dubbo:3.0.3

    nacos注册依赖:

    org.apache.dubbo.dubbo-registry-nacos:3.0.3、
    com.alibaba.spring.spring-context-support:1.0.11
    引入契约接口dubbo-interface依赖

    2.在application.properties中添加nacos配置,包括服务名称、协议、nacos服务器地址等

    3.启用Dubbo,在启动类上添加@EnableDubbo注解

    4.使用Dubbo服务,在自身的业务代码中,按需自动装配服务接口IUserService来调用 ,注意版本号要与服务提供者中的服务想匹配

    public class UserController {
    @DubboReference(version = “版本号”)
    IUserService userService;

    //在方法中使用userService对象即可
    
    • 1

    }

    具体见项目dubbo-consumer,代码结构如下图

    在这里插入图片描述
    服务消费者项目-泛化消费

    定义一个普通的Spring Boot项目,引入契约接口项目dubbo-interface,在自身的业务中,通过Dubbo泛化工具类,使用IUserService规则,调用服务提供者实现的业务逻辑

    实现步骤:

    1.在pom.xml中引入如下依赖

    dubbo依赖:org.apache.dubbo.dubbo:3.0.3

    nacos注册依赖:

    org.apache.dubbo.dubbo-registry-nacos:3.0.3、
    com.alibaba.spring.spring-context-support:1.0.11
    引入契约接口dubbo-interface依赖

    2.在application.properties中添加nacos配置,包括服务名称、协议、nacos服务器地址等

    3.启用Dubbo,在启动类上添加@EnableDubbo注解

    4.使用Dubbo工具进行泛化方式消费服务,代码稍复杂,具体见代码中的util工具包

    5.具体见项目dubbo-consumer-generic,代码结构如下图
    在这里插入图片描述
    最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!

    在这里插入图片描述

    这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……

    如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。

    敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。

    自学推荐B站视频:

    零基础转行软件测试:38天自学完软件测试,拿到了字节的测试岗offer,堪称B站最好的视频!

    自动化测试进阶:已上岸华为,涨薪20K,2022最适合自学的python自动化测试教程,自己花16800买的,无偿分享

    在这里插入图片描述

  • 相关阅读:
    AC修炼计划(AtCoder Regular Contest 163)
    【网安神器篇】——LaZagne凭证收集工具
    常见6种易被忽略的软件隐藏缺陷
    XML文件
    【flutter / dart 版本】Websocket获取B站直播间弹幕教程——基于B站直播开发平台
    工作相关----《系统部署相关操作》
    第二章 进程与线程 十二、进程同步与进程互斥
    Tomcat的日志接收文件catalina.out nohup.out说明
    vue2.6 + ts 使用vuex
    IDEA插件开发(7)---Services
  • 原文地址:https://blog.csdn.net/xfw17397388089/article/details/126303076