概述
流数据是持续流动的实时信息,也是事件驱动架构软件模型的基础。现代应用可以使用流数据来支持数据处理、存储和分析。
我们可以将流数据理解为持续记录数据集的变更或事件,这类变更的速度一般非常快。
可作为流数据源的数据集往往都具有变化迅速、体量庞大的特点,其种类也丰富多样,涵盖了从金融交易、物联网(IoT)传感器数据,到物流运营、零售订单或医院患者监控的方方面面。与新一代消息传递类似,数据流也适用于需要实时响应事件的情况。
例如,流数据中的事件数据就是事件驱动架构的基础。事件驱动架构可以集合众多松散耦合的微服务,作为敏捷开发的一部分。
为什么流数据至关重要?
应用的用户都希望获得实时的数字体验。而能够使用和处理流数据的应用可以提高性能水平和客户满意度。
过去,需要实时响应事件的应用离不开数据库和消息处理系统。但这类系统无法应对如今不断产生的海量数据。例如,传统的请求驱动系统很难对多个源的快速移动数据请求做出迅速反应。
借助事件流模型,可以将事件写入日志,而非存入数据库。事件使用者可以读取流的任何部分,并且可以随时加入流。
事件流处理可用于检测流中有用的模式。事件流处理会使用数据流平台获取事件,并处理或转换事件流。
红帽资源
Apache Kafka 如何处理流数据?
Apache Kafka 是开源的分布式消息传递平台,它已经成为处理大量实时流数据的最热门方式之一。
软件开发人员可使用 Kafka 来构建数据管道和流应用。借助 Kafka,应用可以实现以下操作:
- 发布和订阅记录流。
- 存储记录流。
- 即时处理记录。
Kafka 可用于管理流数据,同时具备快速、可横向扩展和容错等特性。Kafka 能够最大程度减少某些应用中对数据共享的点对点集成需求,因而可以将延迟降至毫秒级。因此,用户可以更快地获取数据,为 IT 运维和电子商务等需要实时数据可用性的用例提供优势。
Apache Kafka 每秒可以处理数百万个数据点,是大数据挑战的理想方案。在许多数据处理用例中,如物联网和社交媒体,数据呈指数级增长,或许很快就会让按照当今数据容量构建的应用不堪重负。
数据流有哪些挑战?
按照定义,数据流必须实时传递顺序信息。流数据应用依赖于一致、高度可用的流,即使在活动高发时也是如此。传递和/或使用能够满足这些特性的数据流可能会成为难题。
数据流中的原始数据量可能会迅速增加。例如,股市暴跌期间股票交易产生的新数据突然呈指数级增长,大型体育赛事期间海量的社交媒体发布量,或系统失灵期间大量的日志活动。数据流在设计时必须考虑可扩展性。即使在活动高发期间,数据流仍需优先考虑适当的数据排序、数据一致性和可用性。数据流在设计时,还必须确保能在部分系统出现故障时保持耐久性。
在跨分布式混合云环境中,流数据集群需要注意一些特殊事项。典型的流数据代理是有状态的,必须在重启时保留。扩展时需仔细编排,确保消息传递服务按预期运行,且不会丢失任何记录。
为什么要使用流数据服务?
提供复杂、实时、高可用性的流数据平台的难点在于,可能会消耗大量资源。它需要相应的专业技能和硬件,而这通常超出了企业内部 IT 组织的能力范围。
因此,许多流数据用户通常会选择托管云服务,将基础架构和系统管理工作交给服务提供商负责。这种做法有助于企业专注于打造核心竞争力,而非管理繁杂的流数据解决方案。
红帽官方博客
获取有关我们的客户、合作伙伴和社区生态系统的最新信息。