前言
大家好,今天開始給大家分享 — Dubbo 專題之 Dubbo 服務在線測試诵叁。在前一個章節(jié)中我們介紹了 Dubbo 中的服務治理玉凯,同時我們了解到 Dubbo 為我們提供了一些常用的服務治理能力包括:調(diào)節(jié)路由、標簽路由盲厌、黑白名單、動態(tài)配置、負載均衡等等阀湿。我們也學習到怎樣使用 Dubbo Admin 控制臺給我們的分布式服務進行服務治理间坐。那么在本章節(jié)我們會主要討論 Dubbo Admin 為我們提供一種在線調(diào)用服務的能力,我們可以利用這種方式進行服務的在線測試而不需要編寫我們的單元測試用例。那下面就讓我們快速開始吧溯警!
1. 服務在線測試簡介
在 Dubbo Admin 中為我們提供一種可以在控制臺進行遠程服務調(diào)用的能力,其實現(xiàn)原理就是利用了我們 Dubbo 提供的泛化調(diào)用在不需要 jar
包依賴的情況下對遠程服務進行調(diào)用。各位小伙伴可以參考我們前面章節(jié)《Dubbo 泛化引用》中對泛化引用的討論,其核心原理是利用服務的元數(shù)據(jù)進行遠程調(diào)用,核心API
為GenericService
。
2. 示例演示
下面我們就開始我們的服務在線測試演示。首先我們創(chuàng)建一個服務提供方,項目結(jié)構(gòu)如下:
由于這里只需要服務提供者提供服務即可窄刘,而在我們的 Dubbo Admin 中調(diào)用服務提供方,所有這里不需要消費端。下面我們看看定義的接口代碼:
/**
* @author <a >青年IT男</a>
* @version v1.0.0
* @className BookService
* @description
* @JunitTest: {@link }
* @date 2020-10-24 13:29
**/
public interface BookFacade {
//查詢所有圖書
List<Book> queryAll();
//根據(jù)請求參數(shù)過濾圖書
default List<Book> queryByName(@NotNull RequestParameter request) {
return Lists.newArrayList();
}
}
3. 服務在線測試
下面我們開始 Dubbo Admin 的演示旦事,首先我們找到使用的入口:
我們在搜索
框中輸入我們調(diào)用服務方接口名稱進行搜索卖鲤,可以查找到相關(guān)元數(shù)據(jù)信息如下:
在搜索結(jié)果中我們可以看到暴露服務接口中的方法名稱肾扰、參數(shù)列表、返回值信息蛋逾。接下來我們使用queryByName
方法進行測試集晚,點擊右邊的編輯圖標
進入:
上面的Parameters
是我們的參數(shù)列表數(shù)組,每個位置的數(shù)組元素代表對應位置的方法參數(shù)区匣。我們這里輸入SpringBoot
參數(shù)名稱查詢到結(jié)果為一個列表集合偷拔,其中列表元素類型為com.muke.dubbocourse.common.domain.Book
,對象的屬性name
值為SpringBoot
亏钩、desc
值為SpringBoot
實戰(zhàn)条摸。
4. 原理分析
Dubbo Admin 服務測試中其核心是需要方法簽名信息即方法名稱、參數(shù)列表铸屉、返回值類型信息,有了這些信息我們才能按照對應方法的參數(shù)進行填值切端,拼裝出完整的服務消費者彻坛。以下圖可以很好的展示其原理:
從上圖可以看到我們的服務提供者注冊元數(shù)據(jù)信息到注冊中心(元數(shù)據(jù)中心可以是獨立的服務),然后 Dubbo Admin 拉取元數(shù)據(jù)展示到頁面上踏枣,同時我們在 Dubbo Admin 中配置調(diào)用的服務方法參數(shù)后發(fā)起對遠程服務的調(diào)用昌屉。下面我們看看在zookeeper
中注冊的元數(shù)據(jù):
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"],//方法參數(shù)類型
"returnType": "java.util.List\u003ccom.muke.dubbocourse.common.domain.Book\u003e"http://方法返回值類型
}, {
"name": "queryAll",
"parameterTypes": [],
"returnType": "java.util.List\u003ccom.muke.dubbocourse.common.domain.Book\u003e"
}],
"types": [{//所有類型描述列表
"type": "com.muke.dubbocourse.common.api.RequestParameter",//方法參數(shù)類型
"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"
}]
}
上面與服務測試相關(guān)的就是methods
和types
所包含的方法和類型信息,其中 Dubbo Admin 根據(jù)這些信息在控制臺上顯示出來茵瀑,并讓用戶輸入配置參數(shù)值间驮。
5. 小結(jié)
在本小節(jié)中我們學習了 Dubbo Admin 中提供的服務在線測試能力。我們主要介紹了 Dubbo Admin 中在線測試的使用方式马昨,同時我們了解到了 Dubbo Admin 在線測試的實現(xiàn)原理是通過 Dubbo 的泛化調(diào)用實現(xiàn)竞帽,其核心 API 是GenericService
。在整個在線測試中最為核心的是我們需要服務提供者的元數(shù)據(jù)鸿捧,根據(jù)元數(shù)據(jù)信息在 Dubbo Admin 中對需要調(diào)用的方法進行參數(shù)配置屹篓,然后發(fā)起遠程調(diào)用。
本節(jié)課程的重點如下:
理解 Dubbo Admin 在線測試
了解怎樣使用在線測試
了解在線測試的實現(xiàn)原理
作者
個人從事金融行業(yè)匙奴,就職過易極付堆巧、思建科技、某網(wǎng)約車平臺等重慶一流技術(shù)團隊,目前就職于某銀行負責統(tǒng)一支付系統(tǒng)建設(shè)谍肤。自身對金融行業(yè)有強烈的愛好啦租。同時也實踐大數(shù)據(jù)、數(shù)據(jù)存儲荒揣、自動化集成和部署篷角、分布式微服務、響應式編程乳附、人工智能等領(lǐng)域内地。同時也熱衷于技術(shù)分享創(chuàng)立公眾號和博客站點對知識體系進行分享。關(guān)注公眾號:青年IT男 獲取最新技術(shù)文章推送赋除!
博客地址: http://youngitman.tech