閱讀903 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Fastjson 在HiTSDB中的應用

HiTSDB協議使用json作為輕量級的數據交換語言。
Jackson是最為廣泛使用的Json格式數據的生成和解析框架之一。
HiTSDB服務端默認使用Jackson。
本文主要分析了Jackson對HiTSDB性能的影響以及提高方案

先來看一下Java性能tuning 利器jmc的分析結果:
image

哇, 排到了第二位,值得投點精力進去了。
搭個環境看看機器的資源消耗:

寫入TPS

tps

24Core, 96G物理機,100萬TPS下測試, CPU消耗到了40+。

Jackson CPU 占用

jackson

FastJson 應用

第一彈:

換成Fastjson的大利器,BeanToArray映射模式。

由於HiTSDB的寫入字段固定並且有序
[metric,timestamp,value, tags, tsuid, granularity, aggregator]
所以解析可以節省json key的部分。

效果不錯, 大部分CPU 到了40-。
fastjson_beanarray

第二彈:

忽略optional字段;Value采用Double類型

由於tsuid, granularity, aggregator這三個字段是optional的,所以可以省略解析。

value字段默認是String,由於目前支持數值型的技術,可以存儲成Double類型

最終采用FastJson CPU 占用穩定在30+。
fastjson

結論:

HiTSDB采用Fastjson後,CPU消耗比降低了10點左右

最後更新:2017-08-18 11:32:56

  上一篇:go  Facebook TSDB論文翻譯
  下一篇:go  HiTSDB 上雲功能性列表