使用dubbo-go搭建dubbo接口测试平台

本文介绍了如何在go环境下使用dubbo-go搭建dubbo接口测试平台,详细阐述了泛化调用的原理和实现,包括java与dubbo-go的泛化调用区别,以及遇到的问题和解决方案,推荐使用dubbo-go v1.5.7-rc1以上版本进行泛化调用。
摘要由CSDN通过智能技术生成

背景

http接口测试只需要一个curl命令,但dubbo协议没有这样的现成接口测试工具。通常公司内的dubbo控制台或其他平台会集成一个dubbo接口测试工具。

调用一个dubbo接口,需要知道服务名service、方法名method和参数args

正常的调用,调用方需引入服务提供方定义的接口jar包。

作为接口测试平台,没办法引入所有提供方定义的接口jar包,可以有以下方案来解决:

  1. dubbo支持telnet协议调用dubbo接口
  2. dubbo的泛化调用可以在不引入提供方接口定义jar包的情况下对接口进行调用

对于方案1,实现成本很低,甚至可以在服务器上直接用telnet测试

它也有缺点

  • 调用无法经过filter
  • 无法携带隐式参数attachment

刚好我们把方案1的优缺点都踩了,我们的dubbo控制台是go语言编写,短时间快速实现,就采用了telnet的方式。

随着业务的发展,流量染色,或标签路由等需要携带隐式参数。

没有走自定义filter,导致业务接口执行不符合预期等都迫使我们升级为泛化调用。

dubbo接口泛化调用在控制台是go编写的情况下也有两个方案可选:

  1. 单独起一个java进程,暴露http端口,与go进程进行交互,泛化调用使用dubbo的java sdk进行编写
  2. 控制台引入dubbo-go,使用dubbo-go进行泛化调用

出于对dubbo java版本的了解,方案1肯定可行,只是架构变得复杂。

而方案2由于dubbo-go还是比较新的项目,并不是很了解,所以不确定其可行性和兼容性,但如果能实现,会大大降低架构的复杂度。

dubbo-go介绍

dubbo-go是dubbo的golang实现版本,它出现的初衷是为了让golang和java的dubbo生态互通。

如今dubbo-go支持provider和consumer端,可以作为一个独立的rpc框架使用,同时社区也是dubbo生态中最火的一个。

如果要说它的意义,我觉得除了和java互通外还有一点非常重要,那就是它能发挥golang协程的巨大作用,这一点可以用在dubbo网关上,如果用dubbo-go实现dubbo网关,就无需纠结线程池、异步等问题。

泛化调用的使用

首先provider端提供一个接口,这个不再赘述,非常简单,接口定义如下

package org.newboo.basic.api;

import org.newboo.basic.model.RpcResult;
import org.newboo.basic.model.User;

public interface MyDemoService {
   
    RpcResult<String> call(User user);
}
package org.newboo.basic.model;

import java.io.Serializable;

public class User implements Serializable {
   
    private String uid;
    private String name;
    private String remoteServiceTag;
    ...
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: Dubbo-Admin 是 Dubbo 的管理控制台,提供了可视化的服务管理界面和服务治理功能。以下是 Dubbo-Admin 的接口文档: 1. 获取所有服务列表 接口地址:/api/services 请求方式:GET 请求参数:无 返回参数: ``` { "success": true, "serviceList": [ "com.xxx.service.UserService", "com.xxx.service.OrderService", "com.xxx.service.ProductService" ] } ``` 2. 获取服务详细信息 接口地址:/api/service 请求方式:GET 请求参数: ``` { "service": "com.xxx.service.UserService" } ``` 返回参数: ``` { "success": true, "service": "com.xxx.service.UserService", "methods": [ { "name": "getUserById", "parameterTypes": [ "java.lang.String" ], "returnType": "com.xxx.model.User", "exceptionTypes": [], "annotations": [], "attributes": {} }, { "name": "getUsers", "parameterTypes": [], "returnType": "java.util.List<com.xxx.model.User>", "exceptionTypes": [], "annotations": [], "attributes": {} } ] } ``` 3. 获取服务提供者列表 接口地址:/api/providers 请求方式:GET 请求参数: ``` { "service": "com.xxx.service.UserService" } ``` 返回参数: ``` { "success": true, "providers": [ { "url": "dubbo://192.168.0.1:20880/com.xxx.service.UserService", "application": "userServiceApp", "group": "userService", "version": "1.0.0", "methods": [ "getUserById", "getUsers" ] }, { "url": "dubbo://192.168.0.2:20880/com.xxx.service.UserService", "application": "userServiceApp", "group": "userService", "version": "1.0.0", "methods": [ "getUserById", "getUsers" ] } ] } ``` 4. 获取服务消费者列表 接口地址:/api/consumers 请求方式:GET 请求参数: ``` { "service": "com.xxx.service.UserService" } ``` 返回参数: ``` { "success": true, "consumers": [ { "ip": "192.168.1.1", "application": "userApp", "group": "userService", "version": "1.0.0" }, { "ip": "192.168.1.2", "application": "orderApp", "group": "userService", "version": "1.0.0" } ] } ``` 5. 获取服务调用统计信息 接口地址:/api/statistics 请求方式:GET 请求参数: ``` { "service": "com.xxx.service.UserService", "method": "getUserById" } ``` 返回参数: ``` { "success": true, "statistics": [ { "ip": "192.168.1.1", "successCount": 100, "failureCount": 10, "elapsedTime": 5000, "concurrent": 100 }, { "ip": "192.168.1.2", "successCount": 200, "failureCount": 20, "elapsedTime": 10000, "concurrent": 200 } ] } ``` ### 回答2: dubbo-admin 接口文档是用于 Dubbo 分布式服务框架的管理平台的接口文档。该文档提供了 Dubbo-admin 的各种接口方法的详细描述和使用说明,方便开发人员了解和使用 Dubbo-admin 的功能。 Dubbo-admin 是一个基于Dubbo的开源项目,用于管理和监控 Dubbo 服务的平台。通过 Dubbo-admin,开发人员可以方便地查看和管理 Dubbo 服务的注册、订阅、调用和监控等信息,从而更好地掌握整个分布式服务的运行情况。 Dubbo-admin 接口文档主要包含以下内容: 1. 服务管理接口:包括服务的注册和注销,查询已注册的服务,以及服务的增删改查等功能。通过这些接口,开发人员可以方便地管理和维护 Dubbo 服务。 2. 调用管理接口:包括服务的调用和查看服务调用信息等功能。通过这些接口,开发人员可以方便地查看服务的调用情况,从而及时发现和解决服务调用的问题。 3. 监控管理接口:包括服务的监控和查询服务的监控信息等功能。通过这些接口,开发人员可以方便地查看服务的监控数据,如调用次数、平均响应时间等,从而及时了解服务的运行状况。 4. 权限管理接口:包括用户的登录和权限管理等功能。通过这些接口,开发人员可以方便地管理用户的访问权限,保护 Dubbo-admin 的安全。 总之,Dubbo-admin 接口文档是开发人员使用 Dubbo-admin 的重要参考,提供了丰富的接口方法和使用说明,方便开发人员快速上手并有效地使用 Dubbo-admin 进行分布式服务的管理和监控。 ### 回答3: dubbo-admin是一个开源的Dubbo服务管理和治理平台,提供了一种方便的方式来管理和监控Dubbo服务。接口文档是对dubbo-admin的API接口进行详细的描述和说明。 dubbo-admin的接口文档主要包括以下内容: 1. 接口列表:列出了dubbo-admin提供的所有接口,包括接口名称、描述、请求方法和请求路径等信息。 2. 接口参数:对每个接口的请求参数进行说明,包括参数名称、数据类型、是否必填、参数说明等。 3. 接口返回值:对每个接口的返回值进行说明,包括返回值的数据类型、含义、示例等。同时还会说明可能的错误码和错误信息,以及如何处理异常情况。 4. 接口示例:提供了一些常见的接口使用示例,帮助用户更好地理解如何使用接口。 5. 接口权限:对每个接口的访问权限进行说明,包括需要的认证方式、权限等级等信息。 通过接口文档,用户可以了解到dubbo-admin提供的所有功能和接口及其使用方法。开发人员可以根据接口文档进行接口的调用和测试,并根据返回值和错误码进行相应的处理。同时,接口文档还可以作为一种参考资料,供开发人员进行二次开发和定制化。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值