azure - Azure 上管理大量数据并将其按订单交付给许多订阅者的最佳服务是什么

标签 azure bigdata iot servicebus

生产方

我们正在尝试将大量数据提取到 Azure 云。数据来自传感器。速率约为每秒 13 个数据包,每个传感器的总量约为 500 KiB/s。将有 10 万个传感器。

消费者端

然后,我们有一些消费者应用程序需要检索这些数据(以尽可能低的延迟),并且生产者以相同的顺序发送数据。每个应用程序都需要一个传感器的所有数据。每个传感器将有 5-10 个应用程序/消费者。

enter image description here

第一种方法

首先,我们尝试使用 EventHubs 解决此问题。就数据排队并将其分发给消费者而言,这看起来最有前途。但在负载测试期间,我们发现将数据存储在一个分区上存在硬性限制(这是我们所需要的,因为数据需要随时排序)。通过一个分区和给定的负载,我们可以处理大约 4-5 个消费者。当消费者超过 5 个时,事情会变得迟缓,消费者无法再与生产者保持同步。

显然,这是 EventHub 分区本身的限制,与层(标准与高级 --> 没有区别)或扩展单位(增加扩展单位没有任何区别)无关。

Azure 对于提高吞吐量的建议很简单:增加每个 EventHub 的分区数量。但这样我们就会失去事件的顺序,并且客户将被要求自己做(这实际上是不可能实现的)。因此,在我们看来,EventHub 并不完全是我们所需要的,或者我们没有正确使用它们。

进一步思考

然后,我们搜索了大量可以为我们提供所需功能的其他服务。我们查看了ServiceBus(我们已经将其用于微服务通信)。但在那里,数据量的限制似乎更加严格。

问题

解决上述问题的理想解决方案是什么?是否可以通过一个服务来解决,或者我们是否需要组合多个服务(例如EventHub --> Stream analytivs jobs --> ServiceBus)?

最佳答案

以下是我将做的概念证明:

-使用 Azure 事件中心(具有多个分区)

-使用某些窗口函数近乎实时地设置 Azure 流分析和查询事件。然后,我会将数据接收到 Azure 服务总线主题,订阅者稍后将使用该主题。

关于azure - Azure 上管理大量数据并将其按订单交付给许多订阅者的最佳服务是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73634594/

相关文章:

c# - 备份 IoT 核心镜像

azure - 为什么我无法将 dependent_on block 添加到具有提供程序配置的模块?

r - 在硬盘上存储的非常大的数据集上训练 SVM

hadoop - Hadoop:操作期间发生错误-copyFromLocal

linux - adb 和 ifconfig 命令在带有 android things 的英特尔爱迪生中不起作用所以

javascript - 通过 Azure 存储以 HTML 格式获取 JSON 文件

azure - 限制从 Azure 函数子网对存储帐户的访问

wcf - IIS上托管的WCF服务的入口方法是什么?

node.js - 使用 Azure AD、ReactJS 和 NodeJS 对用户进行身份验证并使用 Graph API

hadoop - Oozie 编译问题