【編者按】
劉斌婴噩,OneAPM后端研發(fā)工程師是尖,擁有10多年編程經(jīng)驗(yàn),參與過大型金融、通信以及Android手機(jī)操作系的開發(fā)徙垫,熟悉Linux及后臺開發(fā)技術(shù)讥裤。曾參與翻譯過《第一本Docker書》、《GitHub入門與實(shí)踐》姻报、《Web應(yīng)用安全權(quán)威指南》己英、《WEB+DB PRESS》、《Software Design》等書籍吴旋,也是Docker入門與實(shí)踐課程主講人损肛。本文所闡述的「時間序列數(shù)據(jù)庫」,系筆者所負(fù)責(zé)產(chǎn)品 Cloud Insight 對性能指標(biāo)進(jìn)行聚合荣瑟、分組治拿、過濾過程中的梳理和總結(jié)。
在前面《時序列數(shù)據(jù)庫武斗大會之 TSDB 名錄 Part 1》我們已經(jīng)介紹了一些常見的 TSDB笆焰,這里我們再對剩余的一些TSDB 做些簡單介紹劫谅。
10.Geras
Geras 是一個專注于 IoT 的領(lǐng)域(當(dāng)然不僅限于傳感器采集到的數(shù)據(jù))可擴(kuò)展的、分布式的時序列數(shù)據(jù)庫嚷掠,用于幫助用戶進(jìn)行快速分析捏检。Geras 是一個 SaaS 服務(wù),但是你也可以購買軟件自己部署不皆、托管贯城。Geras 提供了免費(fèi)版,它不對數(shù)據(jù)存儲的時間和數(shù)據(jù)量做任何限制霹娄,只是不提供 SLA 而已冤狡。不過他們的 SaaS 主頁我卻一直沒打開過,貌似該 DNS 記錄已經(jīng)不存在了项棠,官方相關(guān)資料也不多悲雳,真懷疑這個項目已經(jīng)廢棄了,該產(chǎn)品已經(jīng)演化為新產(chǎn)品香追。
Geras 速度非澈掀埃快,它支持對任何時間精度進(jìn)行 Rollup透典,也支持保存原始數(shù)據(jù)的精度晴楔。它專門為寫操作進(jìn)行了優(yōu)化,可以接收海量設(shè)備的數(shù)據(jù)輸入峭咒。
Geras 運(yùn)行在容錯税弃、分布式數(shù)據(jù)存儲之上,支持水平擴(kuò)展凑队,可以在不停止服務(wù)的前提下對系統(tǒng)容量進(jìn)行調(diào)整则果。
Geras 也提供了一套可視化界面,方便的對設(shè)備、傳感器等進(jìn)行管理西壮,對 metric 進(jìn)行圖表的可視化等遗增。
Geras 支持多種技術(shù)來進(jìn)行數(shù)據(jù)存儲、查詢和展示款青,比如 HTTPS做修、JSON、RESTful抡草、SenML饰及、MQTT、HyperCat康震,設(shè)備數(shù)據(jù)可以通過 HTTP POST 或者輕量 MQTT 發(fā)布燎含。
11.Akumuli
Akumuli 名稱來自 accumulate,是一個數(shù)值型時間序列數(shù)據(jù)庫签杈,可以存儲瘫镇、處理時序列數(shù)據(jù)。
它的特點(diǎn)如下:
- 基于日志結(jié)構(gòu)的存儲
- 支持無序數(shù)據(jù)
- 實(shí)時壓縮
- 基于HTTP的JSON查詢支持
- 支持面向行和面向列的存儲
- 將最新數(shù)據(jù)放入內(nèi)存存儲
- 通過metric和tag組織時序列數(shù)據(jù)答姥,并且可以通過tag進(jìn)行join操作铣除。
- Resampling (PAA transform),滑動窗口
- 通過基于TCP或UDP的協(xié)議接收數(shù)據(jù)(支持百萬數(shù)據(jù)點(diǎn)每秒)
- Continuous queries (streaming)
Akumuli 由兩部分組成:存儲引擎和服務(wù)程序鹦付。目前只有存儲引擎被實(shí)現(xiàn)了尚粘,而且存儲引擎可以在沒有服務(wù)程序的情況下作為嵌入式數(shù)據(jù)庫單獨(dú)使用(類似sqlite),也就是說敲长,你得通過自己編寫程序使用它的 API 來實(shí)現(xiàn)數(shù)據(jù)讀寫郎嫁。
Akumuli 的數(shù)據(jù)協(xié)議基于 Redis,它的數(shù)據(jù)格式也和前面看到的不太一樣祈噪,比如:
每條數(shù)據(jù)由三部分組成泽铛,第一部分稱為 ID,可以是數(shù)值型(以“:”開始)辑鲤,或者是字符串(以“+”開始)盔腔,比如這個例子中,cpu host=machine1 region= europe
就是 ID月褥,它由兩部分組成弛随,cpu 是metric,host
和region
則被稱為 key宁赤。
數(shù)據(jù)的第二部分可以是時間戳(:1418224205)舀透,這里的格式為ISO 8601(+20141210T074343.999999)
第三部分為值部分。
類似上面的數(shù)據(jù)結(jié)構(gòu)决左,它的query也比較容易理解:
Akumuli 目前還處于開發(fā)狀態(tài)愕够,不適合在生產(chǎn)環(huán)境下使用走贪。
12.Atlas
這個和波士頓動力的機(jī)器人 Atlas,以及其他很多知名軟件(HashiCorp链烈、O'reilly)都重名了厉斟。
Atlas 用于存儲帶維度信息的時序列數(shù)據(jù)挚躯,由 Netflix 開發(fā)强衡,用于實(shí)時分析。Atlas 使用了基于內(nèi)存的存儲码荔,速度非充銮冢快。在 2011 年的時候缩搅,Netflix 使用自己開發(fā)的 Epic 工具來管理時序列數(shù)據(jù)越败,這是一個采用 perl、RRDTool 和 MySQL 構(gòu)建的系統(tǒng)硼瓣,但是隨著數(shù)據(jù)量的增大(2M->1.2B)究飞,他們創(chuàng)建了這個新項目。
如果說商業(yè)智能(business intelligence)是從數(shù)據(jù)基于時間分析出趨勢的話堂鲤,那么 Atlas 可以說是一種運(yùn)維智能(operational intelligence)亿傅,能給用戶描述出當(dāng)前系統(tǒng)所發(fā)生的所有情況。
Atlas 的設(shè)計目標(biāo)主要有3點(diǎn):
- 通用API
- 可擴(kuò)展
- 維度支持
Atlas 具備和 OpenTSDB 以及 InfluxDB 類似的metric/datapoint/tag
的概念瘟栖,同時它也有自己獨(dú)自的特性葵擎,比如增加了步長(step-size)的概念。
Atlas 采用了類似 RRDtool 的查詢語法半哟,它們都通過一種對 URL 友好的語法來支持復(fù)雜的數(shù)據(jù)查詢酬滤。
一句話點(diǎn)評:背靠大樹好乘涼,可以試試寓涨。
13.Blueflood
Blueflood 由 Rackspace 的 Cloud Monitoring 團(tuán)隊創(chuàng)建盯串,用于管理 Cloud Monitoring 系統(tǒng)產(chǎn)生的 metric 數(shù)據(jù)。如果你還不熟悉 Rackspace 這個公司的話戒良,可以去網(wǎng)上了解一下体捏,它也是比較大的云計算公司。
除了自己使用蔬墩,Rackspace 還提供了免費(fèi)的 Blueflood-as-a-Service译打,此外還有一些大公司也在準(zhǔn)備使用 Blueflood。
Blueflood 特點(diǎn)如下:
- built on top of Cassandra
- 基于HTTP API/JSON的數(shù)據(jù)采集(ingest)和讀取
- 支持?jǐn)?shù)值拇颅、布爾和字符串metric data
- 多租戶
- 水平擴(kuò)展
Blueflood 主要由以下模塊構(gòu)成:
- Ingest - 采集/寫入數(shù)據(jù)
- Rollup - 聚合計算
- Query - 處理用戶查詢
不過遺憾的是 Blueflood 現(xiàn)在沒有一個類似 tag 的多維度方案奏司。
一句話點(diǎn)評:背靠大樹好乘涼,可以試試樟插。
14.Gnocchi
Gnocchi 是 OpenStack 項目的一部分韵洋,但它也能獨(dú)立工作竿刁。
Gnocchi 是一個多租戶的時間序列、metric 和資源(resource)數(shù)據(jù)庫搪缨。它提供了一組 HTTP REST API 來創(chuàng)建和管理數(shù)據(jù)食拜。
Gnocchi 以在云就算環(huán)境中存儲大量 metric 信息為設(shè)計出發(fā)點(diǎn),為用戶提供 metric 和資源展示功能副编,同時它也很容易擴(kuò)展负甸。
Gnocchi 特點(diǎn)如下:
- HTTP RES 接口
- 水平擴(kuò)展
- Metric 聚合
- 支持批處理
- 支持歸檔功能
- 按 Metric 值查找(這個在 TSDB 很少見)
- 多租戶支持
- 對 Grafan 的支持
- 支持 Statsd 協(xié)議
Gnocchi 后端存儲支持一下4種方式:
- File
- Swift
- Ceph (推薦方式)
- InfluxDB (實(shí)驗(yàn)功能)
前三種方式基于一個名為 Carbonara 的庫,這個庫負(fù)責(zé)對時間序列數(shù)據(jù)的管理痹届,因?yàn)檫@三種存儲方案本身并不關(guān)心數(shù)據(jù)的特點(diǎn)呻待。InfluxDB 前面已經(jīng)說過,本身就是一個 TSDB队腐。
15.Newts
Newts 是基于 Cassandra 的時序列數(shù)據(jù)庫蚕捉。正如其名所示,它是一個 “New-fangled Timeseries Data Store”柴淘。它的開發(fā)者是 OpenNMS迫淹,這也是一個知名的開源網(wǎng)絡(luò)監(jiān)控和管理平臺。
Newts 基于 Cassandra为严,對寫優(yōu)化敛熬、完全分布式,吞吐量非常高梗脾;通過將類似的 metric 分組存儲荸型,讓寫和讀更高效。
16.SiteWhere
SiteWhere 是一個開源的 IoT 開放平臺炸茧,幫助用戶快速將 IoT 應(yīng)用推向市場瑞妇。SiteWhere 提供了一套完整的設(shè)備管理解決方案,通過 MQTT梭冠、AMQP辕狰、Stomp 和其他協(xié)議連接設(shè)備,支持自注冊控漠、REST 和批處理方式注冊設(shè)備蔓倍。
SiteWhere 也提供了可擴(kuò)展的大數(shù)據(jù)解決方案,底層采用經(jīng)優(yōu)化的 MongoDB 和 HBase盐捷,為存儲設(shè)備事件提供了時序列數(shù)據(jù)庫偶翅,且經(jīng)過 Hortonworks 和 Cloudera 的測試。
SiteWhere 還內(nèi)嵌了 Siddhi 用于 Complex Event Processing (CEP)碉渡,提供了 Azure EventHub聚谁、Apache Solr 以及 Twilio 的集成,以及 Android 和 Arduino 平臺開發(fā)用的 SDK滞诺。
SiteWhere 的部署方式也很靈活形导,支持公有云环疼、私有機(jī)房,Ubuntu Juju 和 Docker 的部署方式朵耕。
SiteWhere 也支持多租戶炫隶,不同的租戶數(shù)據(jù)分開存儲,還能為不同的租戶提供不同的處理引擎阎曹,租戶的啟動伪阶、停止互不影響。
SiteWhere 的 service provider interfaces(SPIs) 提供了平臺的核心對象模型芬膝,第三方可以對平臺進(jìn)行擴(kuò)展望门。
一句話點(diǎn)評:開源形娇、功能強(qiáng)大锰霜、一體化方案。作為 IoT 平臺桐早,SiteWhere 算是這幾個中不錯的癣缅。
建議你接著看一下它的 System Overview 和 System Architecture 以對這個系統(tǒng)有更深入的了解。
17.TempoIQ
TempoIQ 也是一個 IoT 平臺服務(wù)哄酝,它能幫助用戶快速友存、靈活的的創(chuàng)建 IoT 應(yīng)用,提供了實(shí)時的數(shù)據(jù)分析陶衅、報警屡立、儀表盤、報告功能搀军。2014 年 7 月從 TempoDB 改名為 TempoIQ膨俐,它的很多組件都有 IQ 結(jié)尾,代表智商很高罩句?
TempoIQ 主要由以下幾個部分組成:
- CloudIQ
TempoIQ 采用第四代 CoDA(Context Delivery Architecture)架構(gòu)焚刺,用戶可以不必心系復(fù)雜的基礎(chǔ)設(shè)施就可以部署 IoT 應(yīng)用。
- ConnectIQ
基于數(shù)據(jù)事件的 API门烂,用于連接任何設(shè)備乳愉,支持靈活的事件數(shù)據(jù)模型:REST API、HTTPs 和 MQTT屯远。它不關(guān)心設(shè)備來源蔓姚,可以及時進(jìn)行數(shù)據(jù)流處理,不需要提前安裝和配置慨丐。
- DataIQ
對所有 IoT 數(shù)據(jù)和分析報告進(jìn)行安全坡脐、持久的存儲,并提供報告下載功能咖气。
- AnalyzeIQ
用戶可以創(chuàng)建分析流(custom analytics streams)來洞悉 IoT 數(shù)據(jù)實(shí)時狀態(tài)挨措,自動將數(shù)據(jù)存儲到 DataIQ挖滤。并可以創(chuàng)建報警來持續(xù)監(jiān)控分析流,當(dāng)有超預(yù)期的變動或者達(dá)到致命條件時進(jìn)行實(shí)時報警浅役。
- ViewIQ
用戶使用 ViewIQ 可以創(chuàng)建實(shí)時的 IoT 儀表盤斩松、應(yīng)用和可視化組件觉既,而且不需要任何編碼工作惧盹。
18.Riak TS
Riak 作為 NoSQL 和 K/V 存儲可能更有名,而 Riak TS 是一個為時序列和為存儲 IoT 數(shù)據(jù)進(jìn)行了優(yōu)化的 NoSQL 數(shù)據(jù)庫軟件瞪讼。
在官方主頁上寫道:“Riak TS is engineered to be faster than Cassandra”钧椰。
由于其非開源性,網(wǎng)上(包括官網(wǎng))詳細(xì)資料都不是特別多符欠。
19.Cyanite
Cyanite 是一個用于接收和存儲時序列數(shù)據(jù)的守護(hù)進(jìn)程嫡霞,它的設(shè)計目標(biāo)是兼容 Graphite 生態(tài)系統(tǒng)。
Cyanite 默認(rèn)使用 Apache Cassandra 來存儲時序列數(shù)據(jù)希柿,它的特點(diǎn)如下:
- 可擴(kuò)展性
基于 Cassandra诊沪,Cyanite 可以實(shí)現(xiàn)高可用、具有彈性曾撤,以及低延遲的存儲端姚。
- 兼容性
由于 Graphite 已經(jīng)成為事實(shí)上管理時序列數(shù)據(jù)的標(biāo)準(zhǔn),不管是使用 graphite-web 還是 Grafana挤悉。Cyanite 將會盡可能的保持與這些生態(tài)系統(tǒng)的兼容以提供簡單地交互模式渐裸。
Cyanite 是一個典型的流式處理模型,它接收數(shù)據(jù)装悲,對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化昏鹃,然后進(jìn)行輸出。它的交互圖如下所示:
它的工作流程如下:
- 每條輸入都會產(chǎn)生規(guī)范化的 metrics衅斩,并添加到消息隊列
- 核心引擎從隊列取出數(shù)據(jù)并處理盆顾。
- 通過存儲和索引組件進(jìn)行時序列數(shù)據(jù)的存儲和 metric 名的索引
- API 組件用于處理引擎和其他查詢、存儲模塊的交互
- Cyanite 的輸入模塊支持 Carbon(Graphite組件)畏梆,而 Kafka 和 Pickle 則還在計劃中您宪。
索引(Index)模塊則用于對 metric 名進(jìn)行索引和查詢。這一模塊有兩種實(shí)現(xiàn)方式:
- memory 用于在內(nèi)存中存儲反向索引
- elasticsearch 用于在 elasticsearch 中存儲 metric 名(path-names)
一句話總結(jié):新生事物奠涌、值得關(guān)注宪巨。
20.總結(jié)
這里只是簡單的羅列了一些項目,及其簡單說明溜畅。
在后續(xù)的文章中捏卓,我們還會選擇一些常見的 TSDB 進(jìn)行實(shí)例講解。
本系列其他文章: