Jmeter學習筆記(五)——dubbo接口測試


一、什么是dubbo接口

Dubbo 接口是阿里巴巴開源的致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案,dubbo框架告別了傳統的web service的服務模式,進而改用provider和consumer模式進行服務。為什么是高性能的呢?可以在某個服務器集群中提供單一專注的服務,這樣不與其他服務混雜,同時dubbo接口有SOA調度通過監控每台服務器而實現負載均衡。consumer端無需關注provider端如何實現,只需在注冊中心訂閱即可到相應服務器請求服務,這樣就實現了高性能和透明化。說到底,Dubbo接口就是一個分布式服務框架。
 
二、為什么 要用Dubbo接口

“隨着互聯網的發展,網站應用的規模不斷擴大,常規的垂直應用架構已無法應對,分布式服務架構以及流動計算架構勢在必行,急需一個治理系統確保架構有條不紊的演進

單一應用架構
當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。此時,用於簡化增刪改查工作量的數據訪問框架(ORM)是關鍵。

垂直應用架構
當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,將應用拆成互不相干的幾個應用,以提升效率。此時,用於加速前端頁面開發的Web框架(MVC)是關鍵。

分布式服務架構
當垂直應用越來越多,應用之間交互不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。此時,用於提高業務復用及整合的分布式服務框架(RPC)是關鍵。

流動計算架構
當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個調度中心基於訪問壓力實時管理集群容量,提高集群利用率。此時,用於提高機器利用率的資源調度和治理中心(SOA)是關鍵。”

這是官方給出的架構演變圖

Dubbo 的誕生和 SOA 分布式架構的流行有着莫大的關系。SOA 面向服務的架構(Service Oriented Architecture),也就是把工程按照業務邏輯拆分成服務層、表現層兩個工程。服務層中包含業務邏輯,只需要對外提供服務即可。表現層只需要處理和頁面的交互,業務邏輯都是調用服務層的服務來實現。SOA架構中有兩個主要角色:服務提供者(Provider)和服務使用者(Consumer)。

三、Dubbo架構圖解析

 

 

Provider 是服務的生產者,用於提供服務的;在服務啟動時,向注冊中心注冊。
Container是服務容器,Container負責啟動,加載,運行Provider,同時也監控Provider並發送統計給Monitor(監控)。
Consumer 是服務的消費者,在啟動時向注冊中心訂閱服務,在收到注冊中心的通知后在有需要調用的服務的情況向Provider請求服務。同時也需要將調用情況統計給Monitor。
Registry 是注冊中心,負責服務的發現和服務的推送。
Monitor監控服務的消費生產情況,並進行治理調度。
 
四、什么是zookeeper
dubbo的服務注冊中心,所有需要提供接口服務、調用接口服務的應用,都需要在zookeeper上注冊,由zookeeper統一進行服務的調度和管理。監控的應用由dubboadmin去做web界面化管理。
六、dubbo和zookeeper啥關系

簡單來說打個比方:dubbo就是動物園的動物,zookeeper是動物園。如果游客想看動物的話那么就去動物園看。比如你要看老虎,那么動物園有你才能看到。換句話說我們把很多不同的dubbo(動物)放到zookeeper(動物園中)提供給我們游客進行觀賞。這個過程中三個關鍵:場所、供給者、消費者。

再說一個分布式的項目,server(消費)層與 service(供給)層被拆分了開來, 部署在不同的tomcat中, 我在server層需要調用 service層的接口,但是兩個運行在不同tomcat下的服務無法直接互調接口,那么就可以通過zookeeper和dubbo實現。就好比把動物放到動物園,我們要看了直接去動物園就行。而不能直接去動物生活的地方去看,會有性命安全之憂(比如你去看老虎)。

我們通過dubbo 建立service這個服務,並且到zookeeper上面注冊,填寫對應的zookeeper服務所在 的IP及端口號。

五、Dubbo插件

1、jmeter本身並不支持dubbo接口的測試,需要下載第三方插件,然后將jar包放入${JMETER_HOME}\lib\ext路徑下,重啟即可。

插件下載地址:jmeter-plugins-dubbo

六、Dubbo Sample

1、添加線程組

2、添加dubbo sample

點擊線程組-》添加-》sample-》dubbo sample

各參數說明如下:

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

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

Get Provider List:點擊這個之后注冊到zk,可以獲取到dubbo服務器上的所有提供者,可下拉選擇接口,方法自動填入。也會自動填入下面的Interface和Method

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

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

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格式數據;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM