Golang開源:Poseidon - 360 出品的日志搜索平臺
波塞冬: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
存放了相關的技術文檔。
- 項目設計文檔 </li>
- 微服務
- HDFS數據讀取微服務 hdfsreader
- ID生成中心微服務 idgenerator
- 元數據存取微服務 meta
- 核心搜索引擎服務 searcher
- 搜索引擎代理服務 proxy </ul> </li> </ul>
- hdfsreader :讀取HDFS中某個文件路徑的一段數據。
- /service/hdfsreader
- idgenerator :全局的ID生成中心
- /service/idgenerator </ul> </li>
- meta :針對存放Meta信息的NoSQL提供統一的HTTP接口服務
- /service/meta/business/doc/get : DocGzMeta 信息查詢接口
- /service/meta/business/doc/set : DocGzMeta 信息更新接口
- /service/meta/business/index/get : InvertedIndexGzMeta 信息查詢接口
- /service/meta/business/index/set : InvertedIndexGzMeta 信息更新接口 </ul> </li>
- searcher :Poseidon搜索引擎的核心檢索服務
- proxy :searcher的一個代理,并能實現跨時間的查詢服務
- allinone : 為簡化部署,將 idgenerator/meta/searcher/proxy 四個微服務集成在一個進程中,提供統一的服務接口 </ul>
service
這里存放的是各個HTTP微服務服務的程序
本文由用戶 acfc4096 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!