天天看點

流量回放的學習記錄一

流量回放的學習記錄一

    首先,文章涉及到 jmeter 的部分參考了

    那麼我們開始進入正文。

    jmeter 是應用最廣泛的測試工具沒有之一,即便是各個開源的平台,很大程度也是以 jmeter 作為 executor 來實作這種功能的,開源的 jmeter 源碼需要閱讀,因為計劃要做流量回放平台,流量的錄制基于 apisix,是以我來做流量回放的部分。

    流量回放,顧名思義,就是把生産上的流量錄制下來,在任意地方回放,關于為什麼做流量回放很多文章已經說得非常清楚了,此處不再贅述。

    目前總結出流量回放平台比較出名的平台有滴滴的 sharingan(很重要,最後的設計思路也是參考了 sharingan),aliyun的 doom,去哪兒的 ares,文章比較多的工具是 go-replay,tcpplay 等。為什麼不直接使用工具回放,而是調研平台,有幾個原因:

   一,公司正在通過統一架構,将公司内的業務服務生态統一起來,自己開發的好處是定制程度高,可以随時修改;

   二,人員成本可控.

   基于這兩點原因,參考了 sharingan 來實作我們自己的流量回放平台。不直接使用 sharingan 的理由是,我們公司是 java 技術棧,而 sharingan 是基于 go 開發的,有定制版 goroot,故放棄了。

   是以,流量回放平台如何設計?

    重畫了一次設計圖,避開了其他一些生态相關的事情。

    是以我們的重點是,如何在代碼層面實作流量回放?也就是根據日志,重新構造http請求再發出去。因為目前的平台 executor 使用的是 jmeter,是以我們要學習如何在代碼層面構造 jmeter的 測試計劃。

    hashtree 是 jmeter 腳本的資料接口,所有通過 gui 構造出來的 jmx 腳本最終被解析接 hashtree 上的一個個節點來順序執行。

    這是哈希樹的介紹 https://zh.wikipedia.org/zh-hans/%e5%93%88%e5%b8%8c%e6%a0%91

    所有的 jmeter 的元件,都被視為哈希樹的一個節點,我們要做的事情是把流量及其他操作,配置好以後,插入 hashtree,并調用 jmeter engine 執行它 。