1. 程式人生 > >jmeter:dubbo介面測試

jmeter:dubbo介面測試

最近工作中接到一個需求,需要對一個MQ訊息佇列進行效能測試,測試其消費能力,開發提供了一個dubbo服務來供我呼叫傳送訊息。

這篇部落格,介紹下如何利用jmeter來測試dubbo介面,並進行效能測試。。。

 

一、Dubbo簡介

dubbo是一個分散式服務框架,致力於提供高效能和透明化的RPC遠端服務呼叫方案,以及SOA服務治理方案。其核心部分包含如下幾點:

1、遠端通訊:提供對多種基於長連線的NIO框架抽象封裝,包括多種執行緒模型,序列化,以及“請求-響應”模式的資訊交換方式;

2、叢集容錯:提供基於介面方法的透明遠端過程呼叫,包括多協議支援,以及軟負載均衡,失敗容錯,地址路由,動態配置等叢集支援;

3、自動發現:基於註冊中心目錄服務,使服務消費方能動態的查詢服務提供方,使地址透明,使服務提供方可以平滑增加或減少機器;

4、dubbo簡化模型

 

二、Dubbo外掛

1、jmeter本身並不支援dubbo介面的測試,需要下載第三方外掛,然後將jar包放入${JMETER_HOME}\lib\ext路徑下,重啟即可。

外掛下載地址:jmeter-plugins-dubbo

2、選擇自己需要的外掛,為了適配性考慮,建議1.3.2及以上的版本。

各版本更新說明:changelog

3、引數說明

簡單引數對照表複雜引數對照表

 

三、Dubbo Sample

啟動jmeter,新增執行緒組→Sampler→Listener,dubbo-sample介面如下:

各引數說明如下:

Protocol:註冊協議,包括zookeeper、multicast、Redis、simple;

Address:註冊地址,dubbo服務的IP+Port:

①、當使用zk,address填入zk地址,叢集地址使用","分隔;

②、使用dubbo直連,address填寫直連地址和服務埠;

Protocol:使用的dubbo協議,包括dubbo、rmi、hessian、webservice、memcached、redis,根據自己的協議型別選擇對應的選項即可;

Timeout:請求超時時間,單位ms,根據dubbo具體配置填寫;

Version:版本,dubbo不同版本之間差異較大,不同版本之間不能互相呼叫,這裡指定dubbo版本,是為了方便識別和說明;

Retries:異常重試次數(類似這種分散式服務通訊框架,大多都有重試機制,是為了保證事務成功率);

Cluster:叢集型別,包括failover、failfast、failsafe、failback、failking;

Group:組型別,如果有的話,根據配置填寫即可;

Connections:連線數,同上,根據配置填寫;

Async:服務處理型別,包括sync(同步)、async(非同步),根據配置填寫;

Loadbalance:負載均衡策略,包括random(隨機)、roundrobin(輪詢)、leastactive(最少活躍數)、consistenthash(一致性雜湊);

Interface:介面名(因為dubbo服務大多是開發根據規範自行命名的,因此這裡需要填寫完整的介面名+包名);

Method:當前介面下的方法名,按照開發提供的API文件填寫即可;

Args:介面報文,根據API文件填寫,如上圖所示,新增輸入行,輸入對應的引數型別和值即可(引數型別和值如何定義填寫,請參考上面的連結);

①、paramType:引數支援任何型別,包裝類直接使用java.lang下的包裝類,小型別使用:intfloatshotdoublelongbytebooleanchar,自定義類使用類完全名稱;

②、paramValue:基礎包裝類和基礎小型別直接使用值,例如:int為1,boolean為true等,自定義類與List或者Map等使用json格式資料;

 

以上即為利用jmeter的dubbo外掛進行dubbo介面的測試,當然,同樣可以進行效能測試,更多使用方式請自行探索。。。