使用 Azure 事件中心和 Azure 函数进行管道处理

Pipeline processing with Azure Event hubs and Azure functions

我是 Azure 事件中心的新手,正在尝试查看 是否有使用 EventHubs/azure 函数实现流水线处理(组件链,其中第一个输出到下一个链中的组件链)的选项?

我有来自事件中心的数据流,我有一些组件,其中每个组件执行特定功能并将结果传递给下一个组件。下一个组件可能需要事件原始数据和前一个组件生成的结果(可以具有排序依赖性)。 event hub/azure 函数适合这种场景吗?我的理解是每个消费者都有自己的事件副本,所以它不能对消费者进行流水线操作。

在天蓝色的大量事件流上设计组件流水线(以便在需要时可以在流水线中添加新组件)的最佳方法是什么? 或者 azure even hub 中的唯一选择是让单个消费者创建组件的完整处理管道(这将有些耦合)。 我不想在每个组件之间使用不同的事件中心(即使完全分离,但要管理的事件中心太多)

事件中心形成 data/event 管道的数据摄取端。然后从那里处理、分析(实时)和存储数据,并可能对数据进行分类,然后分析历史数据。这形成了一个典型的流水线。 您希望使用不同的 components/rule 引擎等对引入到事件中心的每条消息应用一系列不同类型的处理。

我能想到的选项是

1) EventProcessorHost - 在这里您可以编写自己的自定义代码(一个接一个的组件)以异步方式从事件中心的所有或特定分区接收消息。这涉及在代码中连接所有逻辑。所以如果你需要引入一个新的组件意味着它会涉及代码更改和新部署。

2) 根据您的观点,您还可以拥有多个中间事件中心并进行处理,但这可能会变得昂贵。您可能希望将服务总线队列视为加载消息以进行后续处理的中间点,这将是一个更便宜的选择。

3) 逻辑应用程序为您提供工作流编排类型模型。在这种情况下,您可以将事件中心的事件作为启动工作流的触发器。但我不确定这是否完全符合您的要求,而且如果摄入的数据量很大,可能会有缩放和性能问号。