可视化大量网络流量需要快速索引(归功于 MergeTrees)和模糊匹配的结合。在本篇博客中,Benocs 分享了他们如何使用 ClickHouse 为电信运营商提供网络流量优化和监控。
关于 BENOCS
我们的客户,其中一些是世界上最大的电信运营商,需要监控和分析海量流量。为此,流量分析 需要一个强大的数据库支持。市场上不乏数据库管理系统,这意味着我们必须进行大量测试,才能决定哪一种能够使 BENOCS 流量分析 正常工作。
虽然互联网包含着海量数据,但这些数据并非静态,而是像威廉·夏特纳乘坐火箭飞往太空一样在网络空间中疾驰。而且不只一个威廉·夏特纳进行着 10 分钟的旅程:每天都有无数的数据传输在进行。这种流动意味着我们需要考虑另一个维度:时间。BENOCS 流量分析 用户需要调查特定时间段内发生的事件,因此能够快速访问特定时间范围并忽略其余数据成为一项基本要求。
为了以这种方式可视化网络流量,我们需要衡量一段时间内的流量量,向用户展示数据从源头到最终目的地的旅程中是如何运行的。
自愈推式架构
分析高度复杂和高速的网络流量是一项挑战,尤其是在具有异步数据馈送的不同环境中。然而,我们喜欢挑战,而这正是 BENOCS 运营和必须处理的设置。BENOCS 在不同的网络设置中统一了数据源,并将传入的网络信息相关联。
在 BENOCS,我们每天处理和关联数十太字节的数据馈送。数据处理建立在数据从不同来源变为可用,然后被推送到多个作业的基础之上。这本质上成为一种数据推式架构,它在数据变得可用时进行处理。
在上述场景中,三个数据馈送产生了三种不同数据类型的结果。此外,每个单独的馈送都有自己的时间分辨率,以及数据应该 可用的延迟——然而,有时它会延迟。在数据延迟的情况下,处理不应该停止,而应该跳过延迟的部分,直到它们变得可用。一旦可用,它们也必须变得可用。
那么为什么选择 ClickHouse 呢?
在 BENOCS,我们选择以 ClickHouse 为核心构建这种架构,原因有很多。总而言之,这些原因是快速索引和数据流上的模糊匹配。
快速索引
快速索引是 BENOCS 大量使用 ClickHouse 的最重要的原因。它归结为 ClickHouse 由于其 MergeTree 表设计而提供极其快速的特定维度查找。ClickHouse 允许根据主键在几秒钟内跳过大量数据,而根本不需要考虑无关数据中的数据。
对于 BENOCS,这个维度是时间。在我们运行的 ClickHouse 管道中,基于时间的查找是任何作业安排的第一步。
让我们以结果 2 为例。这只有在馈送 A/_C _有数据时才能处理。但是,如果馈送 A 的数据丢失,则可以部分处理数据。用数字来说,这意味着如果馈送 A 为特定小时准备了 10 个 5 分钟时间戳的数据,而馈送 C 具有与该特定小时匹配的时间戳,那么至少可以计算出结果 2 中的四个时间戳中的两个。另外两个时间戳需要等到馈送 A 使其数据可用为止。
ClickHouse 通过快速查找时间维度为 BENOCS 解决这个问题。通过对主索引列运行DISTINCT SELECT 查询,可以在几秒钟内搜索数太字节的数据。这使得尽管数据负荷很重,但检查数据可用性的操作仍然很轻便。
但是,有效地搜索时间戳并找到差距并非全部。相同原则也适用于实际数据处理相关性。ClickHouse 根据时间跳过数据的能力使表大小几乎变得无关紧要,因为它可以有效地放大到所需数据。这使得单个时间范围的处理时间独立于实际表大小以及数据中的位置。这种 ClickHouse 机制使 BENOCS 能够在面对不可靠的数据流时运行高效的自愈数据流。
模糊匹配
在处理不同的时间尺度时,联接表通常意味着统一匹配列以具有完全 匹配。但是,在处理截然不同的时间尺度(参见馈送 B/C)时,这会变得非常复杂,因为馈送 B 可能对馈送 C 中的一个键有多个不同的匹配。此外,由于数据丢失/不完整,其他维度会使情况更加复杂。
这就是 ClickHouse 的ASOF 联接为 BENOCS 提供帮助的地方。这意味着能够找到最接近的匹配项,而不是使用联接找到精确的匹配项。结合精心选择的WHERE 子句,这成为一项功能强大的功能,可以极大地加快和简化查询。
总结
BENOCS 在 ClickHouse 中处理大量数据,利用其强大的引擎。能够锁定所需数据并忽略无关数据使 BENOCS 能够构建一个自愈数据管道,能够将不可靠和易变的数据馈送处理为稳定的分析,供其客户使用。
如果您是希望优化网络流量的电信运营商,请访问 www.benocs.com 并注册免费的 Demolytics 帐户,以了解 BENOCS 流量分析 的实际操作。
作者:Ingmar Poese & Rebecca Maschke,BENOCS