前言

大家好,明天开始给大家分享 — Dubbo 专题之 Dubbo 服务在线测试。在前一个章节中咱们介绍了 Dubbo 中的服务治理,同时咱们理解到 Dubbo 为咱们提供了一些罕用的服务治理能力包含:调节路由、标签路由、黑白名单、动静配置、负载平衡等等。咱们也学习到怎么应用 Dubbo Admin 控制台给咱们的分布式服务进行服务治理。那么在本章节咱们会次要探讨 Dubbo Admin 为咱们提供一种在线调用服务的能力,咱们能够利用这种形式进行服务的在线测试而不须要编写咱们的单元测试用例。那上面就让咱们疾速开始吧!

1. 服务在线测试简介

在 Dubbo Admin 中为咱们提供一种能够在控制台进行近程服务调用的能力,其实现原理就是利用了咱们 Dubbo 提供的泛化调用在不须要 jar 包依赖的状况下对近程服务进行调用。各位小伙伴能够参考咱们后面章节《Dubbo 泛化援用》中对泛化援用的探讨,其外围原理是利用服务的元数据进行近程调用,外围APIGenericService

2. 示例演示

上面咱们就开始咱们的服务在线测试演示。首先咱们创立一个服务提供方,我的项目构造如下:

因为这里只须要服务提供者提供服务即可,而在咱们的 Dubbo Admin 中调用服务提供方,所有这里不须要生产端。上面咱们看看定义的接口代码:

/** * @author <a href="http://youngitman.tech">青年IT男</a> * @version v1.0.0 * @className BookService * @description * @JunitTest: {@link  } * @date 2020-10-24 13:29 **/public interface BookFacade {   //查问所有图书    List<Book> queryAll();   //依据申请参数过滤图书    default List<Book> queryByName(@NotNull RequestParameter request) {        return Lists.newArrayList();    }}

3. 服务在线测试

上面咱们开始 Dubbo Admin 的演示,首先咱们找到应用的入口:

咱们在搜寻框中输出咱们调用服务方接口名称进行搜寻,能够查找到相干元数据信息如下:

在搜寻后果中咱们能够看到裸露服务接口中的办法名称、参数列表、返回值信息。接下来咱们应用queryByName办法进行测试,点击左边的编辑图标进入:

下面的Parameters是咱们的参数列表数组,每个地位的数组元素代表对应地位的办法参数。咱们这里输出SpringBoot参数名称查问到后果为一个列表汇合,其中列表元素类型为com.muke.dubbocourse.common.domain.Book,对象的属性name值为SpringBootdesc值为SpringBoot实战。

4. 原理剖析

Dubbo Admin 服务测试中其外围是须要办法签名信息即办法名称、参数列表、返回值类型信息,有了这些信息咱们能力依照对应办法的参数进行填值,拼装出残缺的服务消费者。以下图能够很好的展现其原理:

从上图能够看到咱们的服务提供者注册元数据信息到注册核心(元数据中心能够是独立的服务),而后 Dubbo Admin 拉取元数据展现到页面上,同时咱们在 Dubbo Admin 中配置调用的服务办法参数后发动对近程服务的调用。上面咱们看看在zookeeper中注册的元数据:

Json格局如下:

{    "parameters": {//服务提供者配置信息        "side": "provider",        "release": "2.7.8",        "methods": "queryByName,queryAll",        "deprecated": "false",        "dubbo": "2.0.2",        "interface": "com.muke.dubbocourse.common.api.BookFacade",        "generic": "false",        "serialization": "hessian2",        "metadata-type": "remote",        "application": "demo-provider",        "dynamic": "true",        "anyhost": "true"    },    "canonicalName": "com.muke.dubbocourse.common.api.BookFacade",//接口形容    "codeSource": "file:/Users/liyong/work/workspace/course/target/classes/",//源码所在门路  //所有办法信息    "methods": [{        "name": "queryByName",//办法名称        "parameterTypes": ["com.muke.dubbocourse.common.api.RequestParameter"],//办法参数类型        "returnType": "java.util.List\u003ccom.muke.dubbocourse.common.domain.Book\u003e"//办法返回值类型    }, {        "name": "queryAll",        "parameterTypes": [],        "returnType": "java.util.List\u003ccom.muke.dubbocourse.common.domain.Book\u003e"    }],    "types": [{//所有类型形容列表        "type": "com.muke.dubbocourse.common.api.RequestParameter",//办法参数类型        "properties": {//形容所有属性字段            "name": {                "type": "java.lang.String",                "typeBuilderName": "org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder"            }        },        "typeBuilderName": "org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder"    }, {        "type": "java.lang.String",        "typeBuilderName": "org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder"    }, {        "type": "com.muke.dubbocourse.common.domain.Book",        "properties": {            "name": {                "type": "java.lang.String",                "typeBuilderName": "org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder"            },            "desc": {                "type": "java.lang.String",                "typeBuilderName": "org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder"            }        },        "typeBuilderName": "org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder"    }, {        "type": "int",        "typeBuilderName": "org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder"    }, {        "type": "char",        "typeBuilderName": "org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder"    }]}

下面与服务测试相干的就是methodstypes所蕴含的办法和类型信息,其中 Dubbo Admin 依据这些信息在管制台上显示进去,并让用户输出配置参数值。

5. 小结

在本大节中咱们学习了 Dubbo Admin 中提供的服务在线测试能力。咱们次要介绍了 Dubbo Admin 中在线测试的应用形式,同时咱们理解到了 Dubbo Admin 在线测试的实现原理是通过 Dubbo 的泛化调用实现,其外围 API 是GenericService。在整个在线测试中最为外围的是咱们须要服务提供者的元数据,依据元数据信息在 Dubbo Admin 中对须要调用的办法进行参数配置,而后发动近程调用。

本节课程的重点如下:

  1. 了解 Dubbo Admin 在线测试
  2. 理解怎么应用在线测试
  3. 理解在线测试的实现原理

作者

集体从事金融行业,就任过易极付、思建科技、某网约车平台等重庆一流技术团队,目前就任于某银行负责对立领取零碎建设。本身对金融行业有强烈的喜好。同时也实际大数据、数据存储、自动化集成和部署、散布式微服务、响应式编程、人工智能等畛域。同时也热衷于技术分享创建公众号和博客站点对常识体系进行分享。关注公众号:青年IT男 获取最新技术文章推送!

博客地址: http://youngitman.tech

微信公众号: