如何使用 Druid 和 Kafka 構造 Kappa 架構完成流量分析

NTT 是一家全球電信公司,總部設在日本東京。在《財富》世界 500 強中,NTT 是世界第四大電信公司。NTT 通信 (NTT Com) 是 NTT 的子公司,其全球 IP 網絡 (GIN) 業務部擁有並運營着全球最大的一級 IP 骨幹網之一,爲歐洲、北美、南美、亞洲、大洋洲等主要國家提供高速、高容量的 IP 通信服務。

任何互聯網主幹的核心活動之一都是流量分析,它支持對許多技術方面 (容量規劃、流量工程等)、經濟方面(資源優化、收入泄漏檢測等) 和安全用例的全球流量進行可視化分析。NTT GIN 的流量分析以 “流量矩陣” 爲中心,它表示給定 Internet 域中所有可能的源和目的地對之間的所有流量。通過爲這些數據提供實時流量可視化和快速解釋的能力,我們爲整個組織釋放了巨大的商業價值。

NTT GIN 遺留的流量分析系統存在以下幾個問題:

  1. 這是一個黑盒子,很難進行故障排除並擴展以添加新功能,無論是在後端還是前端。
  2. 它沒有以經濟高效的方式進行擴展。
  3. 特定分析能力有限,而這對於快速理解數據異常而言非常重要。

image

當我們考慮對技術設施進行現代化改造時,我們評估了新構建流量分析的解決方案,而不是購買現有產品。因爲我們注意到現有產品中的主要問題是,沒有一款產品能夠精確匹配我們的需求。要知道我們是一家規模龐大的公司,需要大量定製功能來進行流量分析,儘管有些產品確實包含了允許我們進行擴展的 API,但仍然面臨着兩個問題:產品的高成本,以及擴展產品所需的工程資源數量。如果我們要投入工程資源的話,就需要更多的靈活性和控制力,因此,我們決定構建一個解決方案。

當我們開始評估解決方案時,我們將重點放在能夠擴展到我們的數據量的技術(即 “大數據” 技術)上,並測試了我們想要構建的新堆棧的每個部分的各種替代方案。最終,我們確定了一種設計,其中我們的核心架構將包含兩個組件:用於從流量矩陣傳遞數據的事件總線,以及用於收集、存儲和分析這些數據的查詢系統。一組由工程師組成的團隊對數據管道的不同部分進行了評估。經過深入評估之後,我們選擇了 Apache Kafka 作爲事件總線,部分原因是由於它在內部測試期間所展現出來的可擴展性、可靠性及性能。而查詢系統則選擇了 Apache Druid。儘管有許多開源和商業解決方案可供選擇,但我們對 Druid 在內部測試時的表現印象特別深刻。與面向日誌搜索 / 面向文檔的數據庫相比,我們發現,Druid 在大規模分析方面更高效,而且與時間序列數據庫相比,在接受、存儲和查詢相同數量的數據時,所需的資源更少。特別是 Druid 在提供非時間維度的SQL GROUP BYWHERE查詢方面非常出色,而這正是對我們的流量矩陣進行特定分析的重要功能。

除了 Druid 的查詢功能之外,它最重要的特點之一就是能夠與 Kafka 進行本地集成。Druid 可以從 Kafka 精確地使用一次數據,並允許我們構建完整的端到端流分析堆棧。這種類型的體系結構成爲 Kappa 體系架構,最初是在博文 Questioning the Lambda Architecture(《Lambda 架構的問題》https://www.oreilly.com/ideas/questioning-the-lambda-architecture)提到的。NTT GIN 是世界上最早在實踐中實施這種創新體系架構的公司之一,到目前爲止,它不僅解決了我們傳統解決方案的問題,還讓我們得以能夠在此前從未有過的數據探索中創建新用例。爲完成我們堆棧,我們與 Druid 幕後的公司 Imply 合作,並利用他們的 Pivot UI 進行數據分析。Pivot 易於進行特定分析。通過簡單地拖放數據庫維度來生成各種特定可視化,非常簡單,這點對我們理解異常數據模式而言至關重要。

image

現在,我們的新棧在生產環境中運行,每秒接收超過 10 萬次事件。雖然大多數 UI 工具(尤其是以流量爲中心的 UI 工具)僅針對一類用戶設計:通常用於操作(容量分析)、工程(直接分析流量矩陣),或開發中。但我們通過 Kafka、Druid、Imply 的 Pivot 的解決方案,能夠使組織中許多不同級別的用戶能夠自由探索數據,而不會限制他們訪問預定義儀表板。用戶已經掌握了用於容量分析、流量矩陣分析和域間流量分析(對等分析)的新用例。用戶還可以創建自己的自定義儀表板,並在不同團隊中自由分享見解。

通過爲網絡流量分析奠定堅實的基礎,併爲基礎設施 / 拓撲數據、轉發平面數據和控制平面數據提供單一環境,我們現在計劃擴展工作範圍,並添加更多信息源來關聯數據。這包括用於主動測量的數據(翻翻時間、抖動、數據包丟失等)、網絡路徑質量,以及用於域間擼油安全分析的 RPKI/ROA 驗證,這對於第一層網絡骨幹網的全球互聯網的穩定性來說,至關重要。

如果你遇到與我們類似的情況,我們強烈建議你去了解 Apache Druid 和 Apach Kafka。

原文鏈接:
https://imply.io/post/kappa-architecture-at-ntt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章