【Apifox新支持】如何管理与调试 Dubbo 项目?

news2024/11/30 20:47:20

一、引入Dubbo3

不会介绍 Dubbo 如何使用,咱只提一嘴,然后说如何去测试 Dubbo 服务。Dubbo3 除了保持 2.x 的经典架构之外,还以解决微服务的进程通信为主要职责,通过丰富的服务治理能力来更好的管控微服务服务集群,简称更牛逼了,原功能还在。
Dubbo 的调用流程如下:
在这里插入图片描述整体流程可大致分为如下11步(以默认通信方式Netty概述下面内容):

  1. 首先服务提供者会启动,然后将服务注册到服务注册中心(此时什么服务的 host、port 等元数据在注册中心中,除了netty服务的信息外,还有@DubboService标志的接口也会当做服务注册上去);
  2. 服务消费者会定时拉取服务提供者列表;
  3. 当服务消费者需要调用服务提供者接口的时候,因为他不能直接远程调用提供者的接口,所以需要生成一个动态代理对象,然后通过这个代理对象去调用远程接口。
  4. 生成代理对象之后会走到 Cluster 层,这里会获取服务提供者列表的数据,感知到目前所能调用的服务提供者有哪些;
  5. 然后 Cluster 会根据指定的算法做负载均衡,选出要调用的服务提供者
  6. Exchange 会根据指定的协议格式进行请求数据封装,封装成 request 请求;
  7. 请求封装好之后,就会通过网络通信框架,将请求发送出去(TCP嘛,长连接,懂得都懂);
  8. 服务提供者那边通用会有网络通信框架,他会监听指定的端口号,当接收到请求之后会将请求进行反序列化;
  9. 反序列化后,再根据 Exchange 根据指定协议格式将请求解析出来;
    10.然后再通过动态代理对象调用服务提供者对应的接口。

二、Dubbo 接口调试方式列举

可以在网上搜到的 Dubbo 服务调试方式应该就俩吧,强行说的话可以列三个:

  1. Telnet
  2. Jmeter
  3. 写服务消费端进行测试

咱说说他三给我个人的感觉哈,哪不好:

  • Telnet工具,使用很简单,Windows自身就携带,直接打命令就可以了,然后去对对应服务进行测试,但是他不能结合注册中心,以我个人使用来看,不整合个人中心就不能更好的服务治理,这往往是脱离实际开发的。主要还是不是可视化!!!

  • Jmeter:Jmeter无疑是强大的测试工具,他本身是不能对Dubbo进行测试的,但是可以使用github上开源的Jmeter-plugins-for-apache-dubbo插件,遗憾的是啥?是它不支持3.x啊,官网阐述如下(当然本人也帮你们测过):

    • 在这里插入图片描述
  • emmmm,编写dubbo服务消费端然后进行测试,这…这就应该把这俩服务之间的流程写完才能测试吧?我代码能力还没那么强,还是比较写一部分测一部分;而且这也对多人开发也不好测试的。

但是我很幸运,昨天晚上没啥事干想看看别人技术博文的,然后你看我瞄到了啥:
在这里插入图片描述看看里面提到啥,昨晚看到的,这不今天有空测试过了就分享出来了:
在这里插入图片描述(应该是最近才支持的吧,我也找不着apifox的版本迭代,现在最新是2.3.24,官网说apifox要>=2.3.10才支持)

不管了,先用起来吧。

三、Apifox 调试 Dubbo 项目

以测试为主,咱这用nacos作为注册中心进行测试一手 Apifox 是咋调试 Dubbo 服务滴:

服务提供端代码

配置文件

server:
  port: 8082


spring:
  application:
    name: dubbo-provider-test

  datasource:
    password: 123456
    username: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatisplus

mybatis-plus:
  type-aliases-package: com.example.mp1.entity
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    banner: false
    db-config:
      id-type: assign_id
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
dubbo:
  protocol:
    name: dubbo
    port: -1
  application:
    name: dubbo-test
  registry:
    address: nacos://127.0.0.1:8848
    username: nacos
    password: nacos
    register: true

nacos:
  config:
    server-addr: 127.0.0.1:8848

服务接口

public interface DubboTestService {
    User getUserById(Long id);
}

服务实现

@DubboService
@Service
public class DubboTestServiceImpl implements DubboTestService {

    @Autowired
    UserService userService;

    @Override
    public User getUserById(Long id) {
        User user = userService.getById(id);
        return user;
    }

}

启动服务后,nacos 服务列表如下:
在这里插入图片描述

Apifox 测试

首先得创建一个Dubbo项目,即用来测试Dubbo服务用的模块
在这里插入图片描述导入 Dubbo 应用数据,这个应用是指你在配置文件里配置的应用,说再直白点就是 netty 服务的元数据信息最后存在 nacos 配置中心中的服务名。

在这里插入图片描述
填写应用信息后然后导入进去

在这里插入图片描述然后你在接口管理中就可以看到对应的服务了,easy!

在这里插入图片描述测试的时候记得填对应的服务 ip:port,因为是要通过它进行远程调用的,封装一下然后向 netty 服务进行写这个请求数据,然后最后的结果再响应回来,这不就是长连接所干的通信的活吗。

在这里插入图片描述这不就好了
在这里插入图片描述

如果不使用注册中心呢?也是可以测试的,但那就要自己去写服务接口和方法,然后去填一下服务的 ip:port ,然后进行测试,有这种图形化界面,测试起来还是方便多了的。

四、Long 数据传输可能引发精度丢失

因为我那表里的数据有些是雪花算法生成的数据嘛,然后我测试的时候发现精度丢失了,就去了解了一下。
这是由于 Dubbo 默认使用的是 Hessian 作为序列化协议,而 Hessian 在序列化长整数型的数据就会存在精度丢失。

给你看看测试哈:
看我表里是有这个记录的,第一列是id:
在这里插入图片描述这里的话进行个服务测试:
在这里插入图片描述可以发现,原本的 1710123046640713730 变成了 1710123046640713728,少了2,即精度丢失了嘛。
在这里插入图片描述
解决方式:

  1. 从类型本质上解决,将其换成 String 类型,这样就不会出现精度丢失了。
  2. 自定义序列化方式,或者使用 Dubbo 其他不会导致精度丢失的序列化协议。

emmmm,这也算是测试得出来的经验吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1165677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(免费领源码)java#springboot#MYSQL 电影推荐网站30760-计算机毕业设计项目选题推荐

摘 要 随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的电影推荐网站;电影推荐网站的管理工作系统化、规范化,也会提高平台形象,提高管理效率。 本…

玩转AIGC(人工智能生成内容)需要一些小技巧

玩转AIGC(人工智能生成内容)的确需要一些技巧,而Prompt提示词的选择非常关键,可以影响到生成的答案。以下是一些与AI对话的技巧和咒语示例: 1,明确问题 确保你的Prompt清晰明了,包括主题、问题…

领星ERP如何无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统

领星ERP(LINGXING)是一款专业的一站式亚马逊管理系统,帮助卖家构建完整的数据化运营闭环。,致力于为跨境电商卖家提供精细化运营和业财一体化的解决方案。 官网:https://erp.lingxing.com 集简云无代码集成平台&…

四川思维跳动:抖店运营服务商的运营方案

抖店运营服务商,作为一种新兴的商业模式,正逐渐受到广大电商从业者的重视和青睐。抖店运营方案不仅可以帮助创业者快速进入电商行业,还可以为他们提供全方位的运营支持和服务。下面四川思维跳动小编就来详细介绍一下抖店运营服务商的优势和价…

防止重复提交请求

前景提要: ts 简易封装 axios,统一 API 实现在 config 中配置开关拦截器 axios 实现请求 loading 效果 用一个数组保存当前请求的 url,此时还未响应。如果再次发起同样请求,比对 url 发现已经存在数组中,则拦截请求&a…

基于类电磁机制算法的无人机航迹规划-附代码

基于类电磁机制算法的无人机航迹规划 文章目录 基于类电磁机制算法的无人机航迹规划1.类电磁机制搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用类电磁机制算法来优化无人机航迹…

【JAVA学习笔记】58 - 泛型

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter15/src/com/yinhai/generic_ https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter15/src/com/yinhai/customgeneric_ 一、泛型的入门和好处 1)请编写程序,…

c#的反编译工具ISPY和net reflector 使用比较

我有一份Asp.net程序需要修改,但没有源码,只有dll,需要使用反编译工具回复源码,尝试使用了市面上的两种主流的工具ISPY和net reflector ,最终用ISPY恢复了源码。 比较 ISPY 恢复的代码和实际有差距,但还能…

2023年高校大数据实训平台需求

2023 年大数据实训平台的需求量呈现出快速增长的趋势。随着大数据技术的不断普及和应用,越来越多的企业和高校意识到大数据人才培养的重要性。因此,对大数据实训平台的需求量不断增加。 据了解分析,大数据实训平台需求量增加包括以下方面的原…

系统架构设计师(第二版)学习笔记----层次式架构设计理论与实践

【原文链接】系统架构设计师(第二版)学习笔记----层次式架构设计理论与实践 文章目录 一、层次式体系结构概述1.1 软件体系结构的作用1.2 常用的层次式架构图1.3 层次式体系可能存在的问题点 二、表现层框架设计2.1 MVC模式2.1.1 MVC三层模式2.1.2 MVC设…

【错误解决方案】ModuleNotFoundError: No module named ‘pycocotools‘

1. 错误提示 在python程序中,通过导入一个名为pycocotools的模块,但Python提示找不到这个模块。 错误提示:ModuleNotFoundError: No module named pycocotools 2. 解决方案 pycocotools是一个Python包,它提供了用于处理COCO数据…

一文看懂MySQL 5.7和MySQL 8到底有哪些差异?

目录 ​编辑 引言 1、数据字典和系统表的变化 2、JSON支持的改进 3、新的数据类型 4、安全性增强 5、性能改进 6、InnoDB存储引擎的改进 结论 引言 MySQL作为最常用的开源关系型数据库管理系统之一,一直在不断发展和改进。随着时间的推移,MySQ…

项目管理-组织战略类型和层次讲解

组织战略类型和层次 对于不同的组织战略可能会采用不同的项目管理形式,组织作为项目管理的载体,其战略决策对项目管理体系的架构,对组织与项目之间责权利的划分具有深远的影响,组织的战略文化也会影响到项目的组织文化氛围。因此…

XSSFWorkbook读取模板,批量填充并导出文件

1、pom文件导入 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.0</version> </dependency> <dependency><groupId>org.apache.poi</groupId><artifactId>…

AoMao Editor (angular) 使用 window.print() 实现 html 导出 PDF 记录

目录 一、需求描述 二、使用 jspdf html2canvas 导出遇到的问题 三、window.print() 导出具体实现 【api: toHtml】 一、需求描述 将 AoMao Editor 富文本插件中的内容导出为PDF。 二、使用 jspdf html2canvas 导出遇到的问题 试了很多插件&#xff0c;但 angular 能用的…

NHANES | Roc曲线评估胰岛素抵抗替代物与育龄女性不孕症之间的关联

郑老师统计课程&#xff0c;欢迎点击报名&#xff1a;Nhanes公共数据库挖掘 课程 2023年10月12日&#xff0c;温州医科大学育英儿童医院附属第二医院妇产科学者在《BMC Public Health》&#xff08;三区&#xff0c;IF4.5&#xff09;发表题为&#xff1a;" Association b…

PXI-6608 185745H-02 PXI-6527 185633D-01

PXI-6608 185745H-02 PXI-6527 185633D-01 人工智能技术并不新鲜&#xff0c;但运行它的数据和计算却很新鲜 对于那些对人工智能技术历史感兴趣的人来说&#xff0c;一些今天正在使用的技术从20世纪50年代和60年代就已经存在了。 但是&#xff0c;如果人工智能已经存在了这么…

Linux学习第31天:Linux MISC 驱动实验:温故知新

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 学习是一个不断重复的过程。只有不断的使用、修正&#xff0c;才能越记越牢。将学习到的新的知识点应用到以往的项目经验中&#xff0c;才能不断提升自我&#x…

编译替换内核_设备树_驱动_IMX6ULL

前言&#xff1a; 使用的开发板为韦东山老师的 IMX6ULL 目录 为什么编译驱动程序之前要先编译内核&#xff1f; 1.驱动程序要用到内核文件&#xff1a; 2.编译驱动时用的内核、开发板上运行到内核&#xff0c;要一致&#xff1a; 3.更换板子上的内核后&#xff0c;板子上…

【使用Python编写游戏辅助工具】第五篇:打造交互式游戏工具界面:PySide6/PyQT高效构建GUI工具

前言 这里是【使用Python编写游戏辅助工具】的第五篇&#xff1a;打造交互式游戏工具界面&#xff1a;PySide6/PyQT高效构建GUI工具。本文主要介绍使用PySide6来实现构建GUI工具。 在前面&#xff0c;我们实现了两个实用的游戏辅助功能&#xff1a; 由键盘监听事件触发的鼠标连…