国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

TiPrometheus:基于 TiDB 的 TSDB | TiDB Hackathon 2018

sourcenode / 2836人閱讀

摘要:根據(jù)和查出所需的。因菜哥的一個導(dǎo)致,然后開始了漫長的,一共歷時個小時特別說明,我們組叫菜哥和他的朋友們。

本文作者是菜哥和他的朋友們隊(duì)的于暢同學(xué),他們的項(xiàng)目 TiPrometheus 已經(jīng)被 Prometheus adapter 合并。該項(xiàng)目分兩個小項(xiàng)目,分別解決了時序數(shù)據(jù)的存儲與計(jì)算問題。存儲主要兼容 Prometheus 語法和數(shù)據(jù)格式,實(shí)現(xiàn)了精確查詢、模糊查詢,完全兼容現(xiàn)有語法。所有數(shù)據(jù)僅存在 TiKV 中。計(jì)算主要通過 TiKV 調(diào)用 Lua 實(shí)現(xiàn),通過 Lua 動態(tài)擴(kuò)展實(shí)現(xiàn)數(shù)據(jù)計(jì)算的功能。
項(xiàng)目簡介

既然你關(guān)注了 TiDB, 想必你一定是個關(guān)注 Infrastructure 的硬漢(妹)子。監(jiān)控作為 Infra 不可或缺的一環(huán),其核心便是 TSDB(time series database) 。

TSDB 是一種以時間為主要索引的數(shù)據(jù)庫,主要用來存儲大量以時間為序列的指標(biāo)數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)也比較簡單,通常包括特征信息,指標(biāo)數(shù)據(jù)和 timestamp。常見的 TSDB 包括 InfluxDB, OpenTSDB, Prometheus。

而 Prometheus 是一整套監(jiān)控系統(tǒng),時序數(shù)據(jù)庫是它的存儲部分,下面這張架構(gòu)圖來自于 Prometheus 官方,簡單概括了其架構(gòu)和生態(tài)的組成。

Prometheus 還支持一個圖上沒有體現(xiàn)的功能 Remote Storage,可以進(jìn)行遠(yuǎn)程的讀寫,對查詢是透明的。這個功能主要是用來做長存儲。我們的項(xiàng)目就是實(shí)現(xiàn)了一個基于 TiKV 的 TSDB 來做 Prometheus 的 Remote Storage。

核心實(shí)現(xiàn)

Prometheus 記錄的數(shù)據(jù)結(jié)構(gòu)分為兩部分 label, samples。label 記錄了一些特征信息。samples 包含了指標(biāo)數(shù)據(jù)和 timestamp。

"labels": [{
    "job":        "node",
    "instance":   "123.123.1.211:9090",
}]
"samples":[{
    "timestamp": 1473305798
    "value": 0.9
}]

label 和時間范圍結(jié)合,可以查詢到需要的 value。

為了查詢這些記錄,我們需要構(gòu)建兩種索引 label index 和 time index,并以特殊的 key 存儲 value。

label index

每對 label 為會以 index:label:# 為key,labelID 為 value 存入。新的記錄會追加到 value 后面。這是一種搜索中常用的倒排索引。

time index

每個 sample 項(xiàng)會以 index:timeseries:: 為 key,timestamp 為 value。splitTime為時間切片的起始點(diǎn)。新的 timestamp 會追加到 value 后面。

doc 存儲

我們將每一條 samples 記錄以 timeseries:doc:: 為 key 存入 TiKV,其中 labelID 是 label 全文的散列值。

下面做一個梳理

寫入過程

生成 labelID

構(gòu)建 label index,index:label:# "labelID,labelID"

構(gòu)建 time index,index:timeseries:: "ts,ts"

寫入時序數(shù)據(jù),timeseries:doc:: "value"

查詢過程

根據(jù)倒排索引查出 labelID 的集合,多對 label 的查詢會對 labelID 集合求交集。

根據(jù) labelID 和時間范圍內(nèi)的時間分片查詢包含的 timestamp。

根據(jù) labelID 和 timestamp 查出所需的 value。

扯完這些沒用的我們來聊些正經(jīng)的。
我們?yōu)槭裁匆鲞@樣一個項(xiàng)目

在 2018 年下半年,PingCAP 組織的 Hackathon,當(dāng)時作為萌新即將參加比賽,想著一定要文體兩開花,弘揚(yáng)開源文化。

萌生了四個想法:

TiKV TSDB

Machine Learning on TiSpark

魔改 TiKV + Lua 做成 mapreduce

geo 全文檢索

核心想法

能做出來,符合參賽要求。

確實(shí)能解決生產(chǎn)問題而不是一個比賽項(xiàng)目。

摸了摸頭發(fā),覺得 ML on TiSpark 太硬核,根本做不完。

TiHaoop 也太硬核,也做不完。

geo 沒在廠里的生產(chǎn)中遇到什么問題。

最后輾轉(zhuǎn)反側(cè)思考一番,拍腦袋決定雙線操作,做基于 TiKV 的 TSDB 和 TiKV + Lua,完成時序檢索功能的同時,增加更豐富的算子(比賽前兩天才想好做什么)。

比賽過程 周五

原計(jì)劃,提前看看 rust,作為 rust 萌新。

于是前一天和同事借了本 rust 書,準(zhǔn)備一天速成 rust。

后來發(fā)現(xiàn)還是看電視劇更管用。

Day1(周六)

周六參加比賽的時候,原以為會有個很長的開場致辭,所以決定 10 點(diǎn)再去。

到了現(xiàn)場,發(fā)現(xiàn)大家已經(jīng)開始擼代碼了???

整體過程還算順利,但其中也遇到了一些問題。

Prometheus 的依賴和 TiKV 的一些依賴不兼容,于是 fork 一份 Prometheus 依賴,野路子改兩行,兼容了。

下午 5 點(diǎn)的時候,時序基本實(shí)現(xiàn)了,但聯(lián)調(diào)發(fā)現(xiàn)有數(shù)據(jù)讀寫不一致的情況。因菜哥的一個 bug 導(dǎo)致,然后開始了漫長的 debug,一共歷時 5 個小時(特別說明,我們組叫菜哥和他的朋友們)。

晚 10 點(diǎn),準(zhǔn)備回家了,不準(zhǔn)備再 debug 了,一個 bug 查了 5 個小時。作為娛樂隊(duì),熬夜寫代碼是不可能。

各回各家,各找各媽。

Day2(周日)

開始漫長的半天精通 Lua 虛擬機(jī) + rust。

也遇到了一些問題,比如為什么 TiKV 編譯這么慢???一天只有 24 次編譯機(jī)會???

下午 2 點(diǎn),作為第一個講的團(tuán)隊(duì),我們及時生成了一個 PPT ,畢竟 PPT 工程師的基礎(chǔ)還在。

一周后的周一

之前寫的渣代碼,簡單寫了個 README。抱著嘗試的心態(tài),給 Prometheus adapter 提了個 PR。

然后,居然被合進(jìn)去了!!!

一下午寫的代碼居然被合進(jìn)去了!!!

成果

徹底打通了 TiKV 和 Prometheus。

為 TiKV 的時序存儲和計(jì)算提供了一個思路(之前做過 TiDB 存儲時序數(shù)據(jù))。

為 Prometheus 的長存儲提供了一個還算好用的方案(M3 其實(shí)還可以,Thanos 是分片機(jī)制,不能算真正意義的分布式存儲)。

已在公司生產(chǎn)環(huán)境試用,需要經(jīng)過大數(shù)據(jù)量的測試,如果沒問題計(jì)劃替代現(xiàn)有方案。

感悟

參加 Hackathon,和周末加兩天班沒有太大的區(qū)別。

最先開始來,只是想混個獎品,比如說書包。去年參加 DevCon 給的布袋用了一年,還沒壞,今年準(zhǔn)備再領(lǐng)一個。

見到了很多年齡比我們小,但技術(shù)又還不錯的小伙伴,比如蘭海他們組,udf 那個組。也見到了一些年齡稍長的參賽者。

他們的存在,讓我們在充滿雜事的日常工作中又有了繼續(xù)奮斗的動力。

似乎,當(dāng)時選擇這個行業(yè)沒有錯,而不僅僅是一份工作。

Just for fun。

感謝

感謝唐劉老師和申礫老師的指導(dǎo)。

感謝 PingCAP 舉辦了這場大型網(wǎng)友見面活動,收獲頗豐。

項(xiàng)目地址:https://github.com/bragfoo/TiPrometheus (代碼比較渣,思路供參考)

打個廣告:

由菜哥和他的朋友們翻譯的書:《Go 語言并發(fā)之道》已登陸京東、淘寶。

非常棒一本 Go 語言書籍,搜索即可購買。

參考資料:

https://fabxc.org/tsdb/

https://docs.influxdata.com/influxdb/v1.7/concepts/storage_engine/

https://github.com/prometheus/prometheus/tree/release-1.8/storage

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/17870.html

相關(guān)文章

  • TBSSQL 那些事 | TiDB Hackathon 2018 優(yōu)秀項(xiàng)目分享

    摘要:當(dāng)我們正準(zhǔn)備做前期調(diào)研和設(shè)計(jì)的時候,主辦方把唐長老拉去做現(xiàn)場導(dǎo)師,參賽規(guī)則規(guī)定導(dǎo)師不能下場比賽,囧,于是就這樣被被動放了鴿子。川總早早來到現(xiàn)場。 本文作者是來自 TiBoys 隊(duì)的崔秋同學(xué),他們的項(xiàng)目 TBSSQL 在 TiDB Hackathon 2018 中獲得了一等獎。TiDB Batch and Streaming SQL(簡稱 TBSSQL)擴(kuò)展了 TiDB 的 SQL 引擎...

    KnewOne 評論0 收藏0
  • TiDB Lab 誕生記 | TiDB Hackathon 優(yōu)秀項(xiàng)目分享

    摘要:本文由紅鳳凰粉鳳凰粉紅鳳凰隊(duì)的成員主筆,他們的項(xiàng)目在本屆中獲得了二等獎。用戶在平臺上進(jìn)行第一章部署的學(xué)習(xí),了解到可以通過進(jìn)行部署。收到事件后,更新。由于位置是由屬性給出的,因此為其加上,即可實(shí) 本文由紅鳳凰粉鳳凰粉紅鳳凰隊(duì)的成員主筆,他們的項(xiàng)目 TiDB Lab?在本屆 TiDB Hackathon 2018 中獲得了二等獎。TiDB Lab 為 TiDB 培訓(xùn)體系增加了一個可以動態(tài)觀...

    asoren 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<