Jmeter - dubbo插件測試dubbo接口

轉載:https://blog.csdn.net/baidu_28340727/article/details/125570560

一、背景

對於如何使用Jmeter測試http接口,大家都已經比較熟悉,網上相關的知識也很多。但隨着微服務越來越流行,僅僅會測試http接口已經遠遠不夠。Dubbo作爲當下非常流行的RPC接口,學習如何測試Dubbo接口已經成爲了測試人員進階的必備知識之一。

對於Dubbo接口的測試,可以通過編寫代碼的方式、使用工具的方式,今天我們先講如何通過Jmeter Dubbo插件來測試Dubbo接口。

二、插件下載

插件下載地址:https://github.com/thubbo/jmeter-plugins-for-apache-dubbo/releases

下載jmeter-plugins-dubbo-2.7.8-jar-with-dependencies.jar版本,此包中已含必要的依賴,推薦使用with-dependencies.jar包,下載後放到JMeter安裝目錄中的lib/ext路徑下。

使用的Jmeter的版本:5.4.3

插一句:如何修改Jmeter背景色爲白色,我是真的用不習慣黑色的那個背景:

三、環境接口

開發環境ZK地址:
zookeeper://devzk1.xx.com:2181?backup=devzk2.xx.com:2181,devzk3.xx.com:2181

dubbo直連服務器, 服務器:
xx.xx.xx.xx:20880 , 20880是dubbo的服務端口

dubbo接口:com.xxxx.test.sdk.api.DubboServiceTestYY
方法名:yyTestDubbo
入參類型:自定義的POJO對象:com.xxxx.test.sdk.para.Param
參數值:{“name”:“test”,“age”:1,“address”:“中國”}

四、Dubbo Sample 直連Dubbo配置

取樣器選擇Dubbo Sampler,直連的方式配置:

1、 Registry Center(註冊設置) 區域填寫內容:
由於是用直連的方式,所以Protocol選none。Address填寫直連服務器的信息:xx.xx.xx.xx:20880

2、Consumer&Service Settings(消費者和服務者設置):
Timeout:設置請求接口超時時間,默認1000ms, 就用默認的就行,如果實際接口響應比較慢,也可以改大點,比如改成5000

Version:版本,一般無需填寫。Dubbo不同版本之間差異較大,不同版本之間不能互相調用。注意:默認這裏填的是1.0,現在dubbo的版本都是2.xx了,因此直接刪掉版本號,就讓這裏爲空,不然用默認的1.0會調不通。最開始我沒有管這個值,結果發現調不通,刪了version的值就成功調通了。

後面其他的幾項值都不管,保持默認就行。

3、Get Provider List按鈕:
根據Address填寫的地址,獲取服務提供者的服務列表。直連的方式下,點這個按鈕沒用,會提示讓你把Protocol選爲zookeepr or nacos or redis, 但是直連的時候Protocol要選none, 所以直連的時候就手動在下面去填interface和method,不用 Get Provider List按鈕來獲取。

4、 Interface 填 dubbo的接口:
com.xxxx.test.sdk.api.DubboServiceTestYY
Method填方法名:yyTestDubbo

5、 Args:接口入參,輸入對應的參數類型和參數值
 paramType:參數支持任何類型,可以直接使用java.lang下的包裝類,如:int、float、shot、double、long、byte、boolean、char、String等。類型也可以是自定義對象POJO,需使用類的完全名稱。我們這裏接口是要用自定義對象: com.xxxx.test.sdk.para.Param。
 
 paramValue:填寫需要的參數值,例如:int爲1,boolean爲true等,自定義類與List或者Map等使用Json格式數據。我們這裏接口是要用Json格式數據:{“name”:“test”,“age”:1,“address”:“中國”}
 
注意:有個小坑,paramValue填完值之後,如果馬上填運行按鈕調接口,會發現paramValue值消失了,沒保存上。所以要再點一下增加按鈕添加一行空白行,再刪掉這行空白行,這樣就保存上了。

執行接口調用,調用成功:

 

五、Dubbo Sample ZK方式配置

1、 Registry Center(註冊設置) 區域填寫內容:
由於是用ZK的方式,所以Protocol選zookeeper。Address填寫直連服務器的信息:zookeeper://devzk1.xx.com:2181?backup=devzk2.xx.com:2181,devzk3.xx.com:2181

其他項填寫,和直連的方式一樣。

注意:實際測試中發現即使是用的ZK的方式,Get Provider List按鈕也獲取不到服務提供者的服務列表,點擊之後會先出現提示信息:

意思是:獲取所有提供者的服務列表,可能會導致 JMeter 停止響應幾秒鐘。 你要繼續嗎?
點擊是,理論上正常的話會停頓一會兒,然後彈窗提示獲取提供者列表成功!

如果10秒中都沒有出現如上彈框,證明列表獲取失敗,可能是zookeeper地址填寫錯誤,也可以能是服務有問題了。
而此時JMeter界面是卡死狀態,需要強制關閉掉JMeter,因爲等再長時間也沒有意義了。

而實際測試的時候,發現我的ZK是對的,服務器也是正常運行的,也沒有出現彈窗,Jmeter也會卡死。因此建議還是直接在下面手動輸入Interface和Method吧。

執行接口調用,調用成功:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章