Dubbo Admin服务测试功能
基于Dubbo2.7的元數(shù)據(jù),Dubbo Admin實(shí)現(xiàn)了服務(wù)測試功能,可以通過泛化調(diào)用,在控制臺上調(diào)用真實(shí)的服務(wù)提供者
使用方式
- 部署服務(wù)提供者: 可以在這里下載demo,此工程基于spring boot,方便在IDE或者命令行啟動,對于服務(wù)測試來說,只需要啟動dubbo-basic-provider即可。
- 服務(wù)查詢: 完成服務(wù)端部署后,可以到Dubbo Admin的服務(wù)測試頁面上查詢對應(yīng)的服務(wù):?
這里的信息和元數(shù)據(jù)類似,包含方法名,參數(shù)類型和返回值信息,點(diǎn)擊右邊的標(biāo)簽就可以進(jìn)入服務(wù)測試頁面 - 服務(wù)測試:?
服務(wù)測試頁面包含了兩個(gè)json編輯器,參數(shù)類型的信息都是以json格式保存,這里需要填入對應(yīng)的參數(shù)值(本例中數(shù)類型時(shí)String),填寫完成后點(diǎn)擊執(zhí)行即可對服務(wù)端發(fā)起調(diào)用,調(diào)用結(jié)果展示在右邊的編輯器中,如果調(diào)用失敗,會顯示詳細(xì)的失敗原因,下面來看一下調(diào)用失敗的例子:
本例中,先關(guān)掉Dubbo服務(wù)提供者的進(jìn)程,再執(zhí)行服務(wù)測試,可以看到返回的結(jié)果是找不到服務(wù)提供者的異常。和普通調(diào)用一樣,業(yè)務(wù)和框架的異常都會返回在結(jié)果中,方便業(yè)務(wù)排查。 - 復(fù)合類型參數(shù)
考慮UserService中的以下方法和類型:
參數(shù)是比較復(fù)雜的符合類型參數(shù),服務(wù)測試的時(shí)候,會逐層展開填寫每一個(gè)field的值,如下圖所示:
同樣可以調(diào)用成功并且返回結(jié)果
原理:數(shù)據(jù)來源
服務(wù)測試中,最重要的就是完整的方法簽名信息,和參數(shù)的類型信息,有了這些信息才能夠一步步填入每個(gè)參數(shù)的值,拼裝出完整的服務(wù)消費(fèi)者。在Dubbo2.7中,新增了元數(shù)據(jù)中心,Dubbo Admin的方法簽名和參數(shù)類型信息就是從這里來的:
如圖所示,服務(wù)端在運(yùn)行的時(shí)候會將服務(wù)的元數(shù)據(jù)信息注冊到元數(shù)據(jù)中心,格式如下:
與服務(wù)測試相關(guān)的就是methods和types所包含的方法和類型信息,Dubbo Admin根據(jù)這些信息,將參數(shù)渲染到服務(wù)測試頁面的Json Editor中,由用戶來輸入每個(gè)參數(shù),每個(gè)成員變量的值。
原理: 泛化調(diào)用
有了參數(shù)類型,下一個(gè)問題就是怎么能夠調(diào)用到服務(wù)端,在傳統(tǒng)的Dubbo RPC調(diào)用中,客戶端需要依賴服務(wù)端的API jar包(參考前文demo中的dubbo-basic-consumer),這對于Dubbo Admin來說不太可能,因?yàn)榉?wù)的上下線是動態(tài)的,Dubbo Admin無法動態(tài)增加jar包依賴,因此需要用到Dubbo中的泛化調(diào)用,指的是在沒有服務(wù)端API接口的情況下,客戶端直接通過?GenericService?接口來發(fā)起服務(wù)調(diào)用,返回值中的數(shù)據(jù)對象都用Map來表示。泛化調(diào)用在服務(wù)端不需要做特殊處理,只需要客戶端發(fā)起即可。
總結(jié)和展望
本文簡單介紹了服務(wù)測試的用法和原理,后續(xù)會進(jìn)一步針對該功能進(jìn)行增強(qiáng),比如處理抽象類的參數(shù)類型,支持從json文件導(dǎo)入?yún)?shù)值,支持對參數(shù)值的保存等等,方便對服務(wù)接口進(jìn)行回歸測試。
原文:http://dubbo.apache.org/zh-cn/blog/service-test.html
?
總結(jié)
以上是生活随笔為你收集整理的Dubbo Admin服务测试功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dubbo 优雅停机
- 下一篇: 如何使用Fescar保证Dubbo微服务