qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          一次中間件結(jié)合業(yè)務(wù)的性能測(cè)試

          開篇先扔一張圖,下圖是我本次測(cè)試對(duì)象的簡(jiǎn)單架構(gòu)圖:
            meeting
            先簡(jiǎn)單介紹下整個(gè)流程吧,我們根據(jù)圖中畫的來說(下文中說到的節(jié)點(diǎn)之后會(huì)講):
            1、首先瀏覽器發(fā)出一個(gè)http請(qǐng)求至?xí)芎笈_(tái)
            2、會(huì)管收到請(qǐng)求后向zookeeper的一個(gè)節(jié)點(diǎn)(數(shù)據(jù)節(jié)點(diǎn))中寫入消息(一般就是某種請(qǐng)求的消息)
            3、會(huì)議平臺(tái)watch到zookeeper中該節(jié)點(diǎn)數(shù)據(jù)變化便從中把這條消息取出,并進(jìn)行處理。注意:異步消息(我們應(yīng)用大部分是異步消息)
            4、平臺(tái)在取出zookeeper節(jié)點(diǎn)上的消息后會(huì)立即往zookeeper中的另外一個(gè)節(jié)點(diǎn)(數(shù)據(jù)節(jié)點(diǎn))上寫入消息(該消息表示我平臺(tái)已經(jīng)收到來自你會(huì)管的消息了)
            5、會(huì)管也會(huì)watch到這個(gè)節(jié)點(diǎn)的變化進(jìn)而去讀取這個(gè)消息,然后將該消息放入xmpp服務(wù)器,由xmpp推送給瀏覽器(當(dāng)然,其實(shí)這個(gè)消息并沒有什么實(shí)際意義)
            6、另外還有就是等平臺(tái)處理完一開始會(huì)管的請(qǐng)求消息后(3中的消息),會(huì)再次推送處理結(jié)果后的消息(比如某個(gè)人被靜音了,就會(huì)推送一串json數(shù)據(jù),其中有標(biāo)識(shí)說這個(gè)人被靜音了)到zookeeper的狀態(tài)節(jié)點(diǎn)(OK,先不要管他什么數(shù)據(jù)節(jié)點(diǎn)和狀態(tài)節(jié)點(diǎn))
            7、然后會(huì)管watch到后讀取該數(shù)據(jù)并進(jìn)行一系列封裝和處理
            8、數(shù)據(jù)處理和封裝完成后將數(shù)據(jù)放入xmpp服務(wù)器
            9、由xmpp服務(wù)器推送給瀏覽器,從而實(shí)現(xiàn)瀏覽器的實(shí)時(shí)狀態(tài)
            OK,說到這里,基本的架構(gòu)以及流程說完了。現(xiàn)在,有一個(gè)任務(wù)就是,會(huì)議管理界面上的某個(gè)按鈕點(diǎn)擊之后,“實(shí)時(shí)狀態(tài)”感覺變化很慢。(比如我點(diǎn)擊全部靜音按鈕,頁面上與會(huì)人員的圖標(biāo)會(huì)顯示出一個(gè)小圖標(biāo)表示被靜音了,對(duì),就是這個(gè)操作后,圖標(biāo)很久才顯示出來,測(cè)試找出原因)
            如果交給各位讀者這樣的測(cè)試需求(當(dāng)然,這個(gè)根本算不上需求,我就這么被忽悠了),讀者朋友們會(huì)怎么進(jìn)行這項(xiàng)測(cè)試呢??
            好了,各位,下面我給出我本次測(cè)試中采用的方法(如果覺得有更好的,請(qǐng)留言聯(lián)系我!),先看圖:
          解決方案
            接下來我簡(jiǎn)單介紹下我這個(gè)類似“框架”的東西吧。
            1、首先初始化一個(gè)線程池
            2、線程一:使用smack包登錄xmpp,監(jiān)聽所有消息,并過濾出我此次測(cè)試中需要的消息
            3、線程二:使用httpclient來模擬http請(qǐng)求并接收響應(yīng),并提取響應(yīng)中的某些重要數(shù)據(jù)
            4、線程三:使用zookeeper的java客戶端,連接我們的zookeeper服務(wù)器并設(shè)置節(jié)點(diǎn)的watcher
            5、線程四:收集前三個(gè)線程的數(shù)據(jù),并附加時(shí)間戳
            只要將我們四個(gè)線程放入線程池中運(yùn)行,即可。
            基本都已經(jīng)介紹完了,如果有需要代碼的童鞋也可留言回復(fù)哦(注:本次測(cè)試腳本有效代碼量在2K行左右)~

          posted on 2014-01-24 16:15 順其自然EVO 閱讀(293) 評(píng)論(0)  編輯  收藏 所屬分類: 性能測(cè)試

          <2014年1月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 南部县| 宁城县| 印江| 包头市| 淮南市| 平利县| 辽阳县| 安顺市| 若羌县| 眉山市| 边坝县| 广西| 绥化市| 弋阳县| 南昌县| 江永县| 云南省| 万山特区| 江阴市| 邯郸市| 石景山区| 任丘市| 曲松县| 获嘉县| 泗洪县| 桐柏县| 临泉县| 永寿县| 桦南县| 精河县| 大关县| 环江| 富宁县| 蓬莱市| 甘南县| 弥勒县| 松阳县| 南宫市| 郸城县| 洪泽县| 祁东县|