《构建实时分析系统》——实时分析介绍

2,104 阅读14分钟

在商业环境中,许多数据被视为无限的,因为它随着时间的推移逐渐到达。昨天和今天,客户、雇主和机器产生了数据,并将继续在明天产生更多的数据。除非你破产,否则这个过程永远不会结束,因此数据集在任何有意义的方式上都不会完整。

今天,许多企业采用流数据和实时分析来做出更快、更可靠和更准确的决策,从而在其市场领域获得竞争优势。 本章介绍了流数据和实时分析的概念。我们将从流数据的基本概念开始,然后解释为什么组织机构希望在这些数据上应用分析。在介绍了一些用例后,我们将总结可构建的实时分析应用程序的类型。

什么是事件流?

流媒体(streaming)是指一种连续不断、永不停止的数据流。数据以逐渐增量的方式随着时间的推移而提供,这意味着您可以在不必等待整个数据集可供下载的情况下对其进行处理。数据流由一系列按时间顺序排列的数据点组成,即按时间顺序排列,如图1-1所示。

image.png

每个数据点都代表一个事件或业务状态的变化。例如,这些事件可能是来自组织的交易流或来自物联网(IoT)传感器的读数流等实时事件。

即使是流媒体也有一个共同点,那就是只要业务存在,它们就会继续产生数据。事件流由业务中不同的数据源以各种格式和容量生成。

我们还可以将数据流视为不可变、按时间顺序排序的事件流,其中包含有关业务中发生的状态更改的事实。这些来源包括但不限于电子商务购买、游戏中的玩家活动、社交网络信息、点击流数据、Web服务器的活动日志、传感器数据以及与数据中心中的连接设备或仪器的遥测数据。

以下是一个事件的示例: 用户ID 1234于2022年6月12日12:23:212以3.99美元购买了物品567 事件是过去发生的事实的不可变表示。该事件的事实如表1-1所示。

截屏2023-09-28 11.18.44.png

通过聚合和分析事件流,企业可以发现有关其客户的见解,并利用这些见解来改进其产品或服务。在下一节中,我们将讨论不同的方式来理解事件。

理解流数据的含义

事件有一定的保质期。事件的商业价值会随时间迅速减少,如图1-2所示。

image.png

你越早了解事件的行为,就越能及早采取行动,最大化你的业务结果。例如,如果我们有一个用户放弃了他们的购物车的事件,我们可以通过短信或电子邮件与他们联系,了解为什么会发生这种情况。也许我们可以为他们购物车中的某件物品提供一张优惠券,以诱使他们回来完成交易。

但只有在我们能够实时对购物车的放弃做出反应的情况下才能实现这一点。如果我们明天才发现它,用户可能已经忘记了他们正在做什么,并且很可能会忽略我们的电子邮件。

什么是实时分析?

实时分析(RTA)描述了一种数据处理方法,允许我们在事件变为可用时立即从中提取价值。

实时分析与批处理有很大的区别,批处理是指我们将数据分批收集,然后处理它,通常在事件时间和处理时间之间存在相当长的延迟。图1-3提供了批处理的可视化表示。

image.png

相比之下,实时分析是指在事件发生后立即做出反应,如图1-4所示。

image.png

传统上,批处理是数据分析的唯一手段,但它需要我们划定人为的时间边界,以便将数据分成固定时间段的块并进行批处理。例如,我们可能会在每天结束时处理一天的数据,或者在每小时结束时处理一小时的数据。对于许多用户来说,这太慢了,因为它会产生陈旧的结果,不允许他们对正在发生的事情做出反应。

随着时间的推移,这些问题的影响通过将处理批次的大小减小到分钟甚至秒的程度而减小,最终导致事件在到达时被处理,而固定的时间切片被抛弃。这就是实时分析背后的整个理念! 实时分析系统捕获、分析并立即处理事件,一旦事件变为可用状态。它们是批处理系统的无边界、增量处理的对应物,这些系统多年来一直主导着数据分析领域。

实时分析的好处

速度是决策制定中的决定性因素,那些能够快速理解和响应事件的组织更容易成为市场领导者,而其他组织则保持跟随者的地位。因此,实时分析系统可以在许多方面对业务产生益处,如图1-5所示。

image.png

在本节中,我们将探讨实时分析系统的几个优点。

新的收入来源

实时分析可以通过以下几种方式为组织创造新的收入来源。通过允许最终用户访问分析查询功能,组织可以开发全新的以数据为中心的产品,这些产品足够引人入胜,用户愿意支付以获取访问权限。

此外,实时分析可以使现有应用程序更具吸引力,增加用户参与度和保留率,增加应用程序的使用率,最终为组织创造更多收入。

及时获取洞察信息

实时分析通过及时提供可操作的见解,使决策变得更好、更快、更高效。通过实时了解并响应事件,企业可以最大程度地增加利润并减少损失。例如,实时客户行为分析导致启动动态和更有针对性的营销活动,通常带来高额回报。此外,实时温度监控系统可以根据温度波动来关闭空调,从而降低成本。

降低基础设施成本

在传统的批处理中,数据存储和计算通常耦合在一起,随着数据量随时间增长,基础设施成本呈指数级增长。在实时分析中,数据在到达时被处理,消除了昂贵的数据存储和处理系统的需求。

提升整体客户体验

过去,解决客户问题采取了一种较为被动的方式,因为问题需要报告、诊断并在较长的时间框架内解决。借助实时分析,企业可以通过不断监控潜在问题并自动修复它们来主动关注客户,从而提高整体客户满意度。

实时分析的用例

实时分析并不是一件新鲜事物。它在许多行业中已经存在了相当长的时间。在本节中,我们将看一下实时分析适用的几个现实世界用例,以及它们已经为企业提供了价值。

实时分析有各种各样的用例,每个用例对于查询吞吐量、查询延迟、查询复杂性和数据准确性都有不同的要求。实时度量指标的用例需要更高的数据准确性,但如果查询返回需要更长时间也可以接受。另一方面,面向用户的分析应用程序必须优化查询速度。

表1-2描述了一些用例及其查询属性。

截屏2023-09-28 11.36.07.png

面向用户的分析

组织已经长时间生成和收集大量数据。对这些数据的分析在分析用户行为、增长潜力和收入支出方面发挥着关键作用,使员工和高管能够做出关键的业务决策。

这种分析大多数情况下是在组织内部进行的,但越来越多地有了将这种分析能力直接提供给最终用户的愿望。这样做将使决策民主化,并提供更加个性化的体验。术语"面向用户的分析"用于描述这个过程。

关键要求是高吞吐量和低查询延迟,因为这直接影响用户体验。

个性化

个性化是一种特殊类型的面向用户的分析,用于为特定用户个性化产品体验。这可能意味着向他们展示他们特别感兴趣的内容,或者向他们提供特定于他们兴趣的优惠券。

这是通过查看用户的活动和产品互动,并提取实时特征来实现的,然后使用这些特征生成个性化的建议或操作。

指标

实时跟踪业务指标允许我们获取关键绩效指标(KPIs)的最新视图。这使组织能够及时识别问题并采取积极的措施解决问题。

能够做到这一点对于运营智能、异常/欺诈检测和财务规划尤为关键。 这个用例需要每秒大量查询以及低延迟。我们还必须实现高度的数据准确性。

异常检测和根本原因分析

在处理时间序列数据时,异常检测和根本原因分析是一个常见的用例。时间序列数据是一段时间内收集的数据点的序列。 在电子商务领域,这可能包括每天的交易次数、平均交易价值或退货次数等数据。 异常检测是指识别数据中的异常模式,这些异常模式可能表明我们需要解决的问题。这个问题可能是某种产品的订单突然激增,或者甚至是存在欺诈活动。

无论哪种情况,我们都需要迅速找出问题出在哪里。了解到问题发生在24小时前是没有用的,我们需要立刻知道! 一旦我们检测到发生了异常情况,我们还需要了解哪些维度导致了任何异常情况。换句话说,我们需要找出问题的根本原因。 这个用例在每秒高数量的查询上执行时间扫描和Group By查询。

可视化

关于仪表板的“消亡”已经有很多言论,但仪表板在实时分析领域仍然有一定作用。 这可以是一个简单的仪表板,显示不同图表上的指标,也可以是复杂的地理空间可视化、聚类、趋势分析等。与典型仪表板的主要区别在于,随着新数据的到来,表格和图表将不断更新。 服务层必须与现有的可视化解决方案集成,如Apache Superset和Grafana。

自由分析

分析师经常希望进行实时数据探索,以调试问题并在事件被摄取时检测模式。这意味着我们需要能够针对服务层运行SQL查询。

分析师还希望对实时数据进行一些分析,将其与历史数据相结合。例如,他们可能想要查看与往年同月相比,本月业务表现如何。这意味着我们要么需要将历史数据带入服务层,要么使用分布式SQL查询引擎,它可以结合多个数据源。每秒查询的数量会较慢,但查询复杂性可能较高。

日志分析/文本搜索

在应用程序日志数据上运行实时文本搜索查询是一个不太常见但仍然重要的用例。由于日志通常是非结构化的,因此我们必须能够对这些数据运行类似正则表达式的文本搜索,以对生产问题进行分类。 对于大多数应用程序来说,每秒查询的数量会较低,但如果我们正在调试面向用户的应用程序,查询的数量会增加。

对实时分析应用进行分类

既然您已经了解了流式数据和实时分析,以及它的好处和一些行业用例,本书的剩余章节将逐步介绍构建实时分析应用程序的过程,以从流式数据中获取价值。

在开始构建之前,让我们根据受众和它们服务的用例对实时分析应用程序进行分类。这有助于我们选择正确的应用程序类型来解决我们的分析需求。

图1-6中显示的四象限图将实时分析应用程序分为四个类别,沿着两个轴划分。

image.png

内部与外部面向

实时分析应用有两种类型:内部面向和外部面向。

内部面向意味着应用程序产生的见解在组织范围内使用,可能用于内部用例。例如,一个运输公司监控车辆性能以优化燃油效率和检测维护问题,或者一个电信服务提供商监控网络性能和网络容量。 外部面向意味着见解被组织外的受众使用,可能是最终用户。例如,使用拼车应用程序的用户实时跟踪行程的位置,或者一个医疗保健应用程序实时跟踪患者的生命体征,并提醒医疗保健专业人员注意任何需要关注的变化。

传统上,许多应用程序都是为内部用户构建的,因为这样做比较容易。同时访问内部应用程序的用户数量通常相对较少,而且他们对查询延迟有更高的容忍度——如果查询需要10秒才能运行,也可以接受。 另一方面,外部用户不太宽容。他们期望查询立即返回结果,并且访问给定应用程序的这些用户更多,他们很可能会同时使用系统。另一方面,向外部用户提供实时分析为我们提供了重大机会,如图1-7所示。

image.png

实时分析改进了我们提供给外部用户的产品。反过来,这意味着更多的用户将使用并与这些产品互动,从中生成更多数据,我们可以利用这些数据来创建新的产品。

机器面向与人类面向

人类面向的应用程序生成的分析结果通过用户界面(例如仪表板)传递,并由人类使用,包括决策者、分析师、操作员、工程师和最终用户。这些应用程序的主要目标是进行自发交互式的见解探索。

机器面向的分析应用程序由机器使用,例如微服务、推荐引擎和机器学习算法。在这里,生成分析的逻辑在执行之前被编程到应用程序中,消除了任何人为干预。机器面向的应用程序的主要目标是速度和准确性,而人类通常在规模上难以达到这些目标。

总结

在本章中,我们学习了事件流如何构成实时分析的基础,实时分析是一种在事件可用时立即分析事件的实践。我们还讨论了实时分析的好处,以及一些行业用例。最后,我们根据它们为何服务的受众对实时分析应用程序进行了分类。

在下一章中,我们将深入探讨实时分析领域,以识别典型实时分析基础设施中存在的关键组件。