全鏈路壓測 LinkAgent
阿新 • • 發佈:2021-10-25
LinkAgent(https://github.com/shulieTech/LinkAgent)是數列科技的一個基於Java的開源agent,通過位元組碼增強,實現對Java應用程式的資料收集和邏輯控制, 是全鏈路壓測的一部分,同時開源的還有控制檯(Takin-web)部分,對於壓力構造部分還未開源。
全鏈路壓測中一個重要的問題是如何區分是否是壓測流量,以及如何處理壓測資料。
關於第一個問題,一般在構造壓測請求時,會在HTTP的Head部分寫入壓測標識,對於Dubbo等也是相同原理, 程式根據這個標識判斷是否是壓測流量。
關於第二個問題,對於壓測資料,可以帶上壓測標識寫入業務表。也可以寫入影子表, 無論怎樣都需要對程式碼進行修改。
LinkAgent採用了Java位元組碼增強技術,通過javaagent完成對中介軟體的修改,根據壓測標識,寫入影子庫或者影子表。
例如:
我們在壓測註冊介面時,會寫入一些資料,假如我們使用的Druid連線池, LinkAgent會對com.alibaba.druid.pool.DruidDataSource類的getConnection方法進行增強,根據是否是壓測流量來返回 原始業務庫連線 或者 影子庫連線。這樣業務資料就會和壓測資料區分開。 不會造成汙染。