Golang開源:Poseidon - 360 出品的日志搜索平臺

acfc4096 8年前發布 | 13K 次閱讀 Go語言 Google Go/Golang開發

波塞冬:Poseidon

波塞冬,是希臘神話中的海神,在這里是寓意著海量數據的主宰者。

Poseidon 系統是一個日志搜索平臺,可以在數百萬億條、數百PB大小的日志數據中快速分析和檢索特定字符串。 360公司是一個安全公司,在追蹤 APT(高級持續威脅)事件時,經常需要在海量的歷史日志數據中檢索某些信息, 例如某個惡意樣本在某個時間段內的活動情況。在 Poseidon 系統出現之前,都是寫 Map/Reduce 計算任務在 Hadoop 集群中做計算, 一次任務所需的計算時間從數小時到數天不等,大大制約了 APT 事件的追蹤效率。 Poseidon 系統就是為了解決這個需求,能在幾秒鐘內從數百萬億條規模的數據集中找出我們需要的數據,大大提高工作效率; 同時,這些數據不需要額外存儲,仍然存放在Hadoop集群中,節省了大量存儲和計算資源。該系統可以應用于任何結構化或非結構化海量(從萬億到千萬億規模)數據的查詢檢索需求。

Quick Start

所用技術

  • 倒排索引:構建日志搜索引擎的核心技術
  • Hadoop:用于存放原始數據和索引數據,并用來運行Map/Reduce程序來構建索引
  • Java:構建索引時是用Java開發的Map/Reduce程序
  • Golang:檢索程序是用Golang開發的
  • Redis/Memcached:用于存儲 Meta 元數據信息

目錄結構

builder

這里存放的是數據生成工具

  • doc :將原始日志轉換為Poseidon格式的數據。
  • docmeta :將Doc相關的元數據信息寫入NoSQL庫中的工具。
  • index :從原始日志生成倒排索引數據的程序工具,是Hadoop 的 Map/Reduce 作業程序。
  • indexmeta :將倒排索引的元數據寫入NoSQL庫中的工具。

common

目前僅僅用來存放該項目中用到的 protobuf 定義

docs

存放了相關的技術文檔。

 本文由用戶 acfc4096 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!