亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

時序數(shù)據庫連載系列: RISElab的大殺器Confluo

來源:轉載 發(fā)布時間:2019-02-23 16:57:29 閱讀量:1235

挑戰(zhàn)

隨著越來越多的應用達到每秒千萬級的數(shù)據點采集能力,比如終端IoT網絡監(jiān)控,智能家居,數(shù)據中心等等。 并且這些數(shù)據被應用于在線查詢展示,監(jiān)控,離線根因分析和系統(tǒng)優(yōu)化。 這些場景要求系統(tǒng)具備高速寫入,低延遲的在線查詢以及低開銷的離線查詢的能力。 然而已有的數(shù)據結構很難滿足這些要求。有些數(shù)據結構側重與高速的寫入和簡單的查詢, 有些則側重于復雜的查詢,比如即席查詢,離線查詢,霧化視圖等等,增加了維護開銷,犧牲了寫入的性能。
 
aa615815792fbdc76f10d92656939c6e1a6d23ad
為了解決這些挑戰(zhàn),Confluo應運而生。

前提和典型應用場景

Confluo之所以可以同時實現(xiàn)幾個挑戰(zhàn)目標,是因為在一些場景上做了取舍。一個典型的場景是遙感數(shù)據
 

f2403390c515bd424951404f9c797eec757e7556

這些遙測數(shù)據有以下幾個非常重要的特點:
  • write-once: 數(shù)據追加寫,無更新和刪除
  • 定長的數(shù)據類型
  • 并發(fā)場景下沒有事務,只保證原子性
針對這些數(shù)據特點,Confluo實現(xiàn)了一個創(chuàng)新型數(shù)據結構來實現(xiàn)高吞吐,在線/離線查詢。

特性

Confluo面向實時監(jiān)控和數(shù)據流分析場景,比如網絡監(jiān)控和診斷框架,時序數(shù)據庫,pub-sub的消息系統(tǒng),主要特性包括:
  1. 百萬級數(shù)據點高并發(fā)寫入
  2. 毫秒級在線查詢
  3. 占用很少的的CPU資源實現(xiàn)即席查詢

實現(xiàn)概要

Confluo的基本存儲抽象是新型的數(shù)據結構”Atomic MultiLog“,后面文章簡稱“AM”, AM依賴于2個關鍵性技術:
  • AM是無鎖并發(fā)日志集合,可以用來存儲原始數(shù)據,聚合統(tǒng)計,霧化視圖。每一個日志記錄writeTail和readTail并發(fā)讀寫。
  • 日志更新采用現(xiàn)代CPU硬件支持的原子指令集:AtomicLoad,AtomicStore,F(xiàn)etchAndAdd,CompareAndSwap
AM在接口方面同數(shù)據庫的表類似,所以應用在使用時首先創(chuàng)建一個固定schema的AM對象。然后按照這個schema寫入數(shù)據流。并且創(chuàng)建索引(index),過濾器(filter),聚合器(aggregate)以及觸發(fā)器(trigger)等等用于監(jiān)控和診斷。
4fab758bc2024cf8a2105df278b1d75ebee97aff

Confluo 數(shù)據模型

  • Confluo的數(shù)據模型是強類型集合。
  • 原生數(shù)據類型:BOOL, CHAR, SHORT, INT, LONG, FLOAT, DOUBLE, STRING.
     {
        timestamp: ULONG,
        op_latency_ms: DOUBLE,
        cpu_util: DOUBLE,
        mem_avail: DOUBLE,
        log_msg: STRING(100)
     }
     
    • 時間戳8個字節(jié),如果應用沒有寫入時間戳,Confluo會內置添加時間戳。
    • 指標數(shù)據包含double類型以及string類型。
  • 自定義類型。自定義類型通過實現(xiàn)屬性字段,注冊接口,類型獲取接口后,就可以作為schema的成員建立數(shù)據模型,追加數(shù)據以及執(zhí)行filter,trigger等操作。

寫入

  • 創(chuàng)建存儲數(shù)據的Store File
  • 創(chuàng)建具有固定Schema的AM AM有3種存儲模式:IN_MEMORY, DURABLE, DURABLE_RELAXED
    • IN_MEMORY:所有的數(shù)據存儲在內存中。
    • DURABLE:類似寫穿的方式,數(shù)據持久化到磁盤
    • DURABLE_RELAXED:數(shù)據在內存中緩存,周期性持久化。
  • 執(zhí)行AM基本操作。 AM定義了Index,F(xiàn)ilter, Aggregate, trigger
    • 添加Index, 應用層可以為每一個指標建立K叉樹索引.
    • 添加Filter, filter 由關系和布爾運算符組成,應用于指標的過濾.
操作符
示例
等于
dst_port=80
范圍
cpu_util>.8
volt>200 && temp>100
cpu_util>.8 mem_avail<.1
不等于
transport_protocol != TCP
 
  • 添加Aggregate:適用于filter之后的記錄聚合,比如: SUM,MIN,MAX,COUNT,AVG
  • 添加Trigger:是一個布爾條件,適用于結果集上的操作 比如:MAX(latency_ms) > 100
73864f95e63ee4fc09b35d7d9ef73f9d37647042

查詢

Confluo既可以離線查詢也可以實時查詢,區(qū)別在于是否要預定義規(guī)則。
  • 離線查詢主要面向診斷分析,如果fExpressio已經定義,增直接查看FilterLog,否則通過IndexLog方式查詢原始數(shù)據。
  • 實時流式查詢主要面向實時監(jiān)控和報警,需要預定義規(guī)則。比如通過定義triggers實現(xiàn)報警能力,類似SUM(pktSize)>1GB的報警規(guī)則定義。
61b75c9833e414bd5f27ee7487ee4694d936998c
  • 解析器:語法解析的實現(xiàn)采用了spirit.對于這類小型符合EBNF語法規(guī)范的數(shù)據模型,spirit還是比較靈活。Confluo定義了exp,term,factor,predicate,identificate, value, quoted_string等幾種語法規(guī)則.
  • 執(zhí)行計劃:解析器生成表達式后,通過查詢計劃器生成執(zhí)行計劃為agg->filter->index。Confluo內置了一個簡單的評估器,根據近似count計算cost判斷走index或者full scan。
034b4bad9b553719459d57a1a1f21cadb55e708c

數(shù)據歸檔和壓縮

Confluo除了存儲原始數(shù)據,同時需要存儲索引,預定義的過濾,聚合等等,因此這些數(shù)據帶來了存儲開銷的膨脹。通過引入歸檔方式把部分數(shù)據存儲到冷設備,從而解決這一問題。目前支持3種數(shù)據歸檔方式:周期性的歸檔,強制性的歸檔,基于內存的歸檔。
  • 周期性的歸檔。 默認情況下,每5分鐘數(shù)據會歸檔一次。后臺歸檔管理任務周期性檢測AM日志配置的大小,一旦超過限制DataLog,IndexLog,F(xiàn)ilterLog會歸檔到冷設備存儲。
  • 強制性的歸檔 無論歸檔是否開啟,用戶都可以調用接口強制性歸檔。 接口上既支持全量歸檔,也支持基于偏移量的增量歸檔。
  • 基于內存的歸檔 當周期性歸檔持續(xù)低于高速寫入的數(shù)據量時內存會溢出,為避免這種情況,引入基于內存大小的歸檔機制。當系統(tǒng)內存達到自定義的閾值時,內存分配被阻塞,直到所有的AM歸檔到冷數(shù)據。
  • 編碼 歸檔時HeaderLog默認采用LZ4壓縮,IndexLog和FilterLog采用Delta壓縮。 解壓在讀取的時候由底層引擎完成,通過引用計數(shù)避免歸檔線程與讀取線程之間的并發(fā)性訪問。

核心技術點

Atomic MultiLog
Atomic MultiLog是整個系統(tǒng)的核心技術點。主要包括DataLog,IndexLog, FilterLog, AggregateLog以及如何原子性的操作這些日志。
 
b653eaf5fc6f6d7de4e32c35b8c746ccd3807785
  • DataLog 分為2部分offset和原始數(shù)據點,offset是原始數(shù)據的唯一標識。
  • IndexLog 是datalog的索引部分,采用radix樹組織索引,radix樹是通用的字典類型數(shù)據結構,比如在監(jiān)控場景中的IP地址,網絡地址有大量的prefix是可以共享的。
  • FilterLog 存儲了基于時間窗口切分的原始數(shù)據offset,按照radix樹索引filter和窗口。
  • AggregateLog 同其它日志相似,也是基于時間分片的索引數(shù)據方式。由于聚合日志需要讀后寫,設計了thread-local的集合來保證安全訪問。

集成方式:

Confluo是一個開源C++項目。有2種集成模式:
  • 可以作為嵌入式的依賴庫,支持在線和離線分析。
  • 可以作為獨立的服務,對外暴露RPC接口通信。
總結
大名鼎鼎的riseLab新鮮出爐的Confluo,核心創(chuàng)新在于數(shù)據結構Atomic MultiLog,可以支持高速并發(fā)讀寫,單核可以運行1000個trigger,10個Filter。非常好的一個閃光點,找到某個特定業(yè)務場景,采用新硬件的原子操作和無鎖日志做到了實時,離線,高速寫入的統(tǒng)一。


標簽: 數(shù)據庫
分享:
評論:
你還沒有登錄,請先