Dubbo3技术一套通之Apifox调用

引言

最近在学习Dubbo3,需要频繁的对dubbo协议triple协议rest协议gRPC等协议hessian2ProtobufJSONKyroFST等序列化方式的整合测试,每次都得去修改Client与Server的各项配置信息,无意间看到Apifox已经对Dubbo与gRPC的部分协议与序列化方式提供支持,测试了一番还挺好用。

注:Apifox对于Dubbo项目的支持目前需要下载Alpha版本,官网下载即可

直连测试

所谓直连测试就是就是不引用注册中心(Nacos、Zookeeper、Consul等),客户端直接使用服务端的IP+端口进行RPC调用。

服务端设计

对此,我写了一个服务端demo,名为dubbo-20-go,使用Dubbo-3.2.0SpringFramework-5.3.25,提供一个UserService接口(来自dubbo-01-api)与其实现类UserServiceImpl,接口内提供两个login方法

项目结构

结构如下

代码分析

为了后续可以更好的理解SpringBoot是如何对Dubbo进行封装的,直连测试未使用SpringBoot,而是使用SpringFramework。发布的服务使用dubbo协议进行网络通信,使用hessian2进行序列化,服务端端口从20880递增

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!--全局唯一的应用名-->
    <dubbo:application name="dubbo-20-go">
        <!--关闭qos启动-->
        <dubbo:parameter key="qos.enable" value="false" />
    </dubbo:application>

    <!--网络通信协议与端口-->
    <dubbo:protocol name="dubbo" port="-1" serialization="hessian2"/>

    <bean id="userService" class="com.aomsir.service.UserServiceImpl" />

    <!--Dubbo发布服务-->
    <dubbo:service interface="com.aomsir.service.UserService" ref="userService" />
</beans>
java 复制代码
public class ProviderMain {
    public static void main(String[] args) throws InterruptedException {

        // 创建工厂并启动
        ClassPathXmlApplicationContext applicationContext
                = new ClassPathXmlApplicationContext("applicationContext-provider.xml");
        applicationContext.start();

        new CountDownLatch(1).await();
    }
}

服务启动

服务启动会将项目中扫描到的所有服务进行发布,如下发布了UserService服务

Apifox调用

新建Dubbo项目

这个地方有个疑惑,Apifox将Triple协议归为gRPC项目在,我寻思着Triple协议是Dubbo官方改进gRPC后的结果呀,支持了HTTP1的调用,也是Dubbo3最大的一个卖点,看后续会不会改进。

设置测试环境

既然我们要将Apifox作为Consumer去进行调用,那就需要设置环境,如下按照服务端IP+端口进行设置,我是本地起的服务,所以如下

添加服务

将服务端发布的服务在Apifox中进行配置,如下

发起调用

点击按钮即可发起调用,如下即调用成功

注册中心测试

在当今分布式微服务的架构下,我们很少会使用直连,而是使用注册中心,如下图

服务端设计

项目结构

对于引入注册中心的服务端,我就采用SpringBoot进行整合构建Dubbo服务了,如我的dubbo-02-register-provider,使用Dubbo-3-2.0SpringBoot-2.7.12nacos-2.2.3接口与方法和上面的直连测试一致

代码细节

yml 复制代码
spring:
  application:
    name: DUBBO-02-REGISTER-PROVIDER

dubbo:
  protocol:
    name: dubbo
    port: -1
  registry:
    address: nacos://localhost:8848
  application:
    qos-enable: false

服务发布

这次使用的是注册中心调用,我选择了Nacos进行演示,Nacos与Zookeeper同理,启动Nacos,然后启动服务端进行服务发布

Apifox调用

设置测试环境

注册中心的调用也需要修改Apifox测试环境,如下

发起调用

由于调用的服务与上面直连测试的是一致的,所以不作赘述,直接调用

结语

无意间发现的新功能,极大的降低了我的测试时间成本,但是Triple协议的归属以及支持度还不是特别满意,目前Dubbo项目还只支持dubbo协议和hessian2序列化方案的搭配,看看后期官方能否支持的更多一点!

参考文献

相关推荐
拾忆,想起1 小时前
Dubbo序列化方式全解析:从原理到实战的性能优化指南
服务器·网络·微服务·性能优化·架构·dubbo
zhangfeng11334 小时前
百度免费大模型API深度解析 大厂llm大模型市场国产大模型API免费全平台对比指南,薅羊毛指南与实战建议 政策深度解析与
人工智能·百度·dubbo·生物信息
拾忆,想起4 小时前
Dubbo服务多版本管理全攻略:实现平滑升级与版本兼容
服务器·网络·微服务·架构·dubbo
阿在在17 小时前
Dubbo 与 Spring 整合全流程解析(含生产者与消费者
java·spring·dubbo
量子炒饭大师1 天前
【一天一个计算机知识】—— 【编程百度】悬空指针
c语言·数据结构·c++·git·安全·github·dubbo
拾忆,想起1 天前
Dubbo服务调用失败调试指南:从问题定位到快速修复
前端·微服务·架构·dubbo·safari
拾忆,想起2 天前
Dubbo服务超时与重试策略配置指南:构建 resilient 微服务架构
服务器·网络·微服务·云原生·架构·dubbo
不带刺仙人球4 天前
list.stream().collect例子
java·list·dubbo
拾忆,想起4 天前
Dubbo分组(Group)使用指南:实现服务接口的多版本管理与环境隔离
分布式·微服务·性能优化·架构·dubbo
拾忆,想起4 天前
Dubbo动态配置实时生效全攻略:零停机实现配置热更新
分布式·微服务·性能优化·架构·dubbo