999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Apache ZooKeeper和ActiveMQ的分布式軟件測試方法

2016-02-13 07:50:12呂茜
現代計算機 2016年36期
關鍵詞:程序管理

呂茜

(國家新聞出版廣電總局監管中心,北京 102209)

基于Apache ZooKeeper和ActiveMQ的分布式軟件測試方法

呂茜

(國家新聞出版廣電總局監管中心,北京 102209)

云計算的發展使得分布式軟件測試成為一種常態,節點的管理和通信是其中的兩個關鍵問題。給出一個基Apache ZooKeeper和ActiveMQ的測試方法,能有效解決上述兩個問題,并結合實際項目給出在Java平臺使用的關鍵代碼。

分布式測試;Apache ZooKeeper;Active MQ

0 引言

隨著互聯網和云計算技術的發展,軟件測試領域也遭受著新的挑戰和進行著新的變革。在傳統軟件測試中,被測程序和測試程序一般存在于同一個主機或者有限的多個主機之中。而在云計算流行的今天,尤其是在軟件即服務SaaS(Software as a Service)提供的支持下,測試程序可以分布在多個數量客觀的計算節點中,然后根據用戶的計算請求,例如計算節點的數量或者根據當前在線的活動計算節點,動態分配可用的測試節點,然后再進行測試。以往這些節點的管理與使用都是測試人員或者系統管理人員負責,現在由于云計算的運用,需要計算機自動處理。那么如何管理這些節點以及怎么應用這些節點,成為當前測試技術的關鍵問題所在。

1 Apache ZooKeeper介紹及應用

如前文所述,當前測試技術的第一個關鍵問題就是測試節點的管理。當節點不多的時候,可以采用人工管理的方法,比如我們通過VMware或者Hyper-V等虛擬化平臺創建了若干個測試節點,可以通過這些虛擬化平臺提供的管理工具來檢查測試節點的狀態和負載。但是當節點很多,或者節點處于不同的區域時,進行人工管理就是一件非常費勁的時間。因為有的虛擬機雖然處于開機狀態,但卻因為某個原因系統沒有響應,這時該測試節點其實是不可用的。或者當系統因為維護重啟完成而不能及時發現該測試節點的可用性從而降低測試的實時性。還有一個問題,就是在實際項目當中,被測程序或者測試程序有許多的配置信息需要在運行時讀取,如果配置信息需要更改,那么如何讓所有的節點獲知這個變化就非常繁瑣了。

Apache ZooKeeper是一個開源文件應用程序接口(API),能使大型系統的分布式進程相互同步,這樣所有提出請求的客戶端就可以得到一致的數據。Apache ZooKeeper的數據模型類似于一棵樹,如圖1所示。

圖1 Apache ZooKeeper數據模型

Apache ZooKeeper的節點(Znode)有如下幾個特點:

①觀察者:客戶端可以在ZNode上設置觀察者(watches)。所有對ZNode的修改都將觸發觀察者,之后再清除觀察者。當一個觀察者被觸發,ZooKeeper就會發送一個通知給客戶端。

②數據訪問:數據被原子性的保存在命名空間的每一個ZNode中。Read可以獲得與ZNode相關聯的數據,write用來修改數據。每個結點都有一個ACL(Access Control List)來限制誰可以進行這些操作。

③臨時節點:ZooKeeper也有臨時結點的概念。這些結點在ZNode被創建的時候存在,當會話結束時,結點就會被刪除。因為這樣的臨時結點不允許有子結點。

④數列節點:當創建一個ZNode,ZooKeeper還可以請求附加一個遞增計數器到最后的路徑。這個計數器對于父節點來說是唯一的。

基于這四個特點,ApacheZooKeeper主要有四個方面的應用:通知服務、配置管理、集群管理和分布式鎖。我們在分布式測試中用到的就是配置管理和集群管理這兩個個方向,其拓撲結構如圖2和圖3所示:我們以Java平臺為例,測試程序部署在Apache

圖2 Apache ZooKeeper配置管理

圖3 Apache ZooKeeper集群管理

Tomcat之中,我們重寫ServletContextListener類來實現

當測試程序啟動之后自動在Apache ZooKeeper中注冊,核心代碼及注釋如下所示:

至于后面如何從活躍節點中選取合適的節點來進行自動化測試,其算法不在本文的探討范圍之類,大體可以根據吞吐量或者節點的負載來進行選擇。

Apache ZooKeeper配置管理的核心代碼如下所示:

2 ActiveMQ介紹及應用

前文解決了節點的管理和選擇問題,那么剩下的一個問題就是如何應用被選擇的測試節點,尤其是被測程序和測試節點的通信問題。一般有如下方式:

(1)被測程序和測試程序的直接通信:基于被測程序所在主機與測試程序所在主機之間的通信

該方法提供了主機到主機之間的通信,從而當被測程序和測試程序之間需要通信的時候,可以采用本地方法直接調用,使得被測程序和測試程序從頂層看是在同一個主機之中。該方法有如下幾種實現方式:SSH/Telnet、STAF等,如圖4所示。

在SSH/Telnet方法中,被測主機和測試主機需要實現SSH/Telnet協議,對于雙方都是類Unix的操作系統來說,SSH/Telnet都是自身就提供了的,對于Windows操作系統來說,可以通過安裝Cygwin或者OpenSSH for win32來實現。STAF(Software Test Automation Framework)是一個自動化測試框架,支持Linux、Windows等多個操作系統,當被測主機和測試主機都安裝并配置了STAF之后,雙方可以通過STAF提供的服務進行通信,例如:process(遠程調用)、fs(文件操作)等。使用這種主機到主機通信的方式有一個比較繁瑣的地方在于系統的配置。例如SSH/Telnet方法時,Windows測試主機的配置以及主機的防火墻配置;STAF方法的被測主機和測試主機環境的搭建和權限的管理等。而優勢也是比較明顯的,就是在被測程序端可以直接控制測試程序的執行,就和在本地運行一樣。

圖4 主機到主機的通信

(2)被測程序與測試程序之間的間接通信:基于消息中間件的模式

與第一種主機到主機之間的通信不同,被測程序與測試程序之間緊密耦合,被測程序需要直接控制測試程序的管理,這種方法只能對特定的程序或者協議使用,比如Jenkins提供的Master和Slave之間的通信;Selenium Grid實現的分布式測試等等。前者只能用于Jenkins提供的持續集成,后者只能用于Selenium分布式網頁測試。

那么有沒有一種配置簡單也具有較好通用性的解決方案呢?消息隊列MQ(Message Queue)就是一種兼顧這兩方面要求的技術。當前運用較多的開源MQ中間件有ActiveMQ、RabitMQ、Apache Kafa等,其中ActiveMQ運用較為廣泛。

ActiveMQ是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ是一個完全支持JMS1.1和J2EE 1.4規范的JMS Provider實現。當前主流的開發語言都提供了針對ActiveMQ的客戶端編程接口,比如:Java、C/C++、C#等。

在使用ActiveMQ時,測試程序在啟動之后連接ActiveMQ服務器并創建隊列/主題并作為消息的生產者;被測程序在啟動之后連接ActiveMQ服務器并連接測試程序創建的隊列/主題并作為消息的消費者。隊列是一種一對一的模式,也就是一個消息生產者對應一個消息消費者,對于我們來說,就是一個被測程序對應一個測試程序;而主題訂閱模式,一個消息生產者對應多個消息消費者,當一個被測程序寫入需要測試的消息時,各個監聽的消息消費者都可以接收并處理該消息,而當需要進行某項測試的時候,被測程序根據自身使用的編程語言使用上文所述的客戶端API在隊列/主題中發布一條新的消息,然后ActiveMQ會根據負載均衡,動態選擇一個當前活動的消息消費者接收并處理該消息,從而實現被測程序和測試程序直接的通信。以隊列形式為例的系統拓撲結構如圖5所示:

圖5 基于Active MQ的通信

不同的被測程序和測試程序,只需要使用不同的隊列/主題即可實現環境的復用,而且環境的搭建較為簡單,只需要維護ActiveMQ服務器或者集群即可。

使用ActiveMQ的關鍵代碼如下所示:

3 基于Apache ZooKeeper和ActiveMQ的分布式測試系統架構

綜上,本文設計的基于Apache ZooKeeper和ActiveMQ的分布式測試系統,即可以實被測程序和測試程序之間的直接通信,也能實現間接通信,具有較好的通用性和可擴展性,其架構如圖6所示:

圖6 系統架構

被測節點啟動后,在ActiveMQ中創建相應的測試隊列;測試節點啟動后,連接ActiveMQ并監聽其可處理的測試隊列,同時在Apache ZooKeeper中注冊臨時節點。被測程序可以通過查詢Apache ZooKeeper獲得當前活動的測試程序節點,并按照一定的調度算法選擇合適的測試程序進行測試;也可以通過ActiveMQ發送測試命令,由ActiveMQ進行負載均衡選擇合適的測試程序進行測試。

在實際項目中,因為一些服務器在國外,所以如果我們使用本地的測試程序節點去測試這些國外服務器托管的被測程序,那么因為網絡延遲的限制會導致測試效率低下。在這種情況下,我們通過將本地和國外的測試程序節點根據所在位置的不同,在Apache ZooKeeper中劃分為兩個組:Internal組和External組。測試程序節點啟動時,根據其域名或者IP范圍的不同,分別在相應的組注冊。被測程序在發布測試任務時,根據其節點所處的位置,相應的從Internal組或者External組選擇測試程序節點進行測試。而對于被測程序和測試程序與節點所處位置不同的情況,則直接使用ActiveMQ的隊列進行處理。

4 結語

基于Apache ZooKeeper和ActiveMQ的分布式測試架構,環境搭建簡單、可用性和可靠性高,能有效、方便地管理被測程序節點和測試程序節點,在分布式測試中發揮著巨大的作用。

[1]Apache ZooKeeper官方網站:http://ZooKeeper.apache.org/

[2]ActiveMQ官方網站:http://activemq.apache.org/

[3]ActiveMQ的幾種通信方式:http://shmilyaw-hotmail-com.iteye.com/blog/1897635

[4]分布式服務框架ZooKeeper--管理分布式環境中的數據:https://www.ibm.com/developerworks/cn/opensource/os-cn-ZooKeeper/

A Distributed Testing Method Based on Apache ZooKeeper and Active MQ

LV Qian
(State Administration of Press,Publication,Radio,Film,and Television of the People's Republic of China,Beijing 102209)

Distributed testing becomes much more usual with the development of Cloud Computing in the nowadays,management and communication in the nodes are the two key points in it.Presents a testing method based on Apache Zookeeper and ActiveMQ that can handle the points perfectly,and demonstrates the usage in real project with key code on Java platform.

Distributed Testing;Apache ZooKeeper;Active MQ

1007-1423(2016)36-0052-06

10.3969/j.issn.1007-1423.2016.36.014

呂茜(1984-),女,河南鄭州人,本科,中級工程師,從事領域為長期從事廣播電視監測工作

2016-10-18

2016-12-18

猜你喜歡
程序管理
棗前期管理再好,后期管不好,前功盡棄
今日農業(2022年15期)2022-09-20 06:56:20
加強土木工程造價的控制與管理
如何加強土木工程造價的控制與管理
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
“這下管理創新了!等7則
雜文月刊(2016年1期)2016-02-11 10:35:51
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
人本管理在我國國企中的應用
現代企業(2015年8期)2015-02-28 18:54:47
主站蜘蛛池模板: 亚洲国产欧美中日韩成人综合视频| 亚洲一区二区三区国产精华液| 日韩麻豆小视频| 国产精品免费p区| 最新国产麻豆aⅴ精品无| 人妻中文字幕无码久久一区| 尤物视频一区| 日本一区二区三区精品AⅤ| 精品国产三级在线观看| 国产成年女人特黄特色大片免费| 伊人成人在线| 亚洲天堂视频网站| 波多野结衣一二三| 国产在线一二三区| 午夜久久影院| 欧美国产日韩在线| 日韩一级二级三级| 天堂av综合网| 香蕉视频在线观看www| 尤物特级无码毛片免费| 欧美国产成人在线| 欧美第九页| 欧美在线视频不卡第一页| 久久99国产综合精品女同| 97超爽成人免费视频在线播放| 成人午夜网址| 色哟哟国产精品一区二区| 999福利激情视频| 国产成人凹凸视频在线| 精品国产一区91在线| 国产精品大白天新婚身材| 国产一级毛片网站| 一级毛片免费观看不卡视频| av无码久久精品| www精品久久| 无码高潮喷水专区久久| 在线观看免费国产| 国产欧美亚洲精品第3页在线| 热久久国产| 大学生久久香蕉国产线观看| 国产午夜不卡| 色婷婷在线播放| 欧美另类一区| 高清亚洲欧美在线看| 国产成人啪视频一区二区三区 | 亚洲天堂网2014| 久久亚洲AⅤ无码精品午夜麻豆| 久久综合五月| 婷婷色狠狠干| 国产福利免费在线观看| 91精品小视频| 国产精品永久免费嫩草研究院| 欧美特黄一免在线观看| 国产精品女熟高潮视频| 成人福利在线免费观看| 亚洲欧洲日本在线| 亚洲精品国产首次亮相| 91色国产在线| 伊人色综合久久天天| 日韩中文字幕免费在线观看 | 亚洲精品动漫| 97se亚洲综合不卡| 丁香六月激情综合| 2019年国产精品自拍不卡| 国产一级毛片在线| 88国产经典欧美一区二区三区| 成年人久久黄色网站| 免费在线国产一区二区三区精品| 久久免费精品琪琪| 精品乱码久久久久久久| 国产97视频在线| 国产成a人片在线播放| 精品少妇人妻无码久久| 少妇人妻无码首页| 国产毛片高清一级国语| 制服丝袜 91视频| 尤物特级无码毛片免费| 欧美三级视频在线播放| 国产欧美视频一区二区三区| 国产永久无码观看在线| 色综合色国产热无码一| 国产区人妖精品人妖精品视频|