【事件驱动架构】连续流式事件处理
现代事件驱动解决方案的基本要素之一是能够处理连续事件流以获得洞察力和智能。您可以使用专门的流分析引擎跨事件流运行状态分析和复杂事件处理工作负载,同时保持低延迟处理时间。
通过将这些引擎作为事件驱动架构的一部分,您可以启用以下功能:
分析和理解事件流
从流中提取事件数据,以便数据科学家可以理解并推导出机器学习模型
针对事件流运行分析过程和机器学习模型
跨流和时间窗匹配复杂事件模式以做出决策并采取行动
流分析
流分析提供了查看和理解流经无界事件流的事件的功能。流应用程序处理事件流,并允许将数据和分析功能应用于流中的信息。这些应用程序被编写为跨这些功能的多步流程:
- 摄取许多事件来源
- 通过转换,过滤,关联和聚合某些指标以及使用其他数据源进行数据丰富来准备数据
- 使用评分和分类检测和预测事件模式
- 通过应用业务规则和业务逻辑来决定
- 直接运行操作,或者在事件驱动的系统中,发布事件通知或命令
流分析的基本功能
为了支持无界事件流的分析处理,这些功能对于事件流处理组件至关重要:
- 连续事件摄取和分析处理
- 跨事件流处理
- 低延迟处理,不需要存储数据
- 处理高容量和高速数据流
- 持续查询和分析Feed
- 事件和流之间的相关性
- 窗口化和有状态处理
- 查询和分析存储的数据
- 开发和运行数据管道
- 开发和运行分析管道
- 在事件流处理中对机器学习模型进行评分
支持分析和决策
除了基本的流功能之外,还可以考虑在事件流处理组件中支持其他常见的事件流类型和处理功能。通过在流应用程序代码中为这些流类型和流程创建函数,您可以简化问题并缩短开发时间。此列表包含其他事件流类型和进程的示例:
- 地理空间
- 基于位置的分析
- 地理围栏和地图匹配
- 时空聚会检测
- 时间序列分析
- 带时间戳的数据分析
- 异常检测和预测
- 文本分析
- 自然语言处理(NLP)和自然语言理解(NLU)
- 情感分析和实体提取
- 视频和音频
- 语音到文本转换
- 图像识别
- 规则:被描述为业务逻辑的决策
- 复杂事件处理(CEP):时间模式检测
- 实体分析
- 实体之间的关系
- 概率匹配
应用程序编程语言和标准
事件流应用程序和语言几乎没有标准。通常,流引擎提供与特定平台相关的特定于语言的编程模型。常用语言如下:
- Python支持数据处理,深受数据科学家和数据工程师的欢迎。
- Java™是一种普遍的应用程序开发语言。
- Scala将函数式编程和不可变对象添加到Java中。
其他平台特定的语言出现,因为实时处理需要更严格的性能要求。例如,Google启动了Apache Beam项目,为流分析应用程序提供统一的编程模型。 Beam是一种更高级别的统一编程模型,它提供了使用许多支持语言(包括Java,Python,Go和SQL)编写流分析应用程序的标准方法。流分析引擎通常通过Beam运行器支持此统一编程模型,该运行器获取代码并将其转换为特定引擎的平台本地可执行代码。
有关更多信息,请参阅支持引擎和功能的详细信息。领先的引擎包括Google Cloud Dataflow,Apache Flink,Apache Spark,Apache Apex和IBM®Streams。
运行时特性
在运营方面,流式分析引擎必须持续接收和分析到达的数据:
- Feed从不结束:
- 该系列无限制。
- 该模型不基于请求响应集。
- 消防水带不停止:
- 继续喝酒,保持健康。
- 处理速率大于或等于进给速率。
- 分析引擎必须具有弹性和自我修复能力。
许多其他信息处理环境中没有这些专门的需求和关注点。这些问题导致高度优化的运行时和引擎,用于跨事件流对分析工作负载进行状态,并行处理。
原文: https://www.ibm.com/cloud/garage/architectures/eventDrivenArchitecture/event-driven-event-streams
讨论:加入知识星球【首席架构师圈】
- 168 次浏览