Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading Azure Worker角色,在内存中聚合数据的最佳方法?_Multithreading_Azure_Aggregate_Azure Storage Queues - Fatal编程技术网

Multithreading Azure Worker角色,在内存中聚合数据的最佳方法?

Multithreading Azure Worker角色,在内存中聚合数据的最佳方法?,multithreading,azure,aggregate,azure-storage-queues,Multithreading,Azure,Aggregate,Azure Storage Queues,我有X个工人角色,它们将使用多个线程处理Azure队列。在这些队列中流动的数据相当简单(对于这个客户机ID,我们有操作A、B或C,每个事务一个操作),但是会有很多操作,每秒超过5000个事务。现在我需要以一种显示客户ID的格式对这些数据进行汇总,43个a类型的事务,20个B类型的事务,11个C类型的事务。基本上对它们进行汇总。但是队列上的GetMessages只能从队列中检索32条消息 我的问题是——我是否应该一直检索32个,直到我说出1000,然后遍历它们并将其汇总?或者在列表、队列或缓存中保

我有X个工人角色,它们将使用多个线程处理Azure队列。在这些队列中流动的数据相当简单(对于这个客户机ID,我们有操作A、B或C,每个事务一个操作),但是会有很多操作,每秒超过5000个事务。现在我需要以一种显示客户ID的格式对这些数据进行汇总,43个a类型的事务,20个B类型的事务,11个C类型的事务。基本上对它们进行汇总。但是队列上的GetMessages只能从队列中检索32条消息

我的问题是——我是否应该一直检索32个,直到我说出1000,然后遍历它们并将其汇总?或者在列表、队列或缓存中保存总计


知道可能有10个工作者角色和5个线程随时从这些队列获取消息,您会为我的场景推荐什么样的最佳聚合器机制?

首先,我认为最好阅读本文以及有关在Azure中构建可伸缩计数器的相关内容


简言之,它说的是每个工作者角色都有一个线程安全计数器(在您的例子中,针对每个客户机和消息类型)。线程在处理每条消息时更新这些计数器。然后,后台线程会定期将这些值写入底层存储。

我以前也这样做过。您需要的准确度是多少?是100%还是可以容忍一些滑动(比如说,在这种情况下,实例下降)。@Lucifure-这不是关键数据,因此有一些空间可以使用。等待你的建议:)如果准确性不是关键,奈特弗尔的回答是金钱。尽可能快地读取和删除消息,(一次32条,可能在多个线程上),将摘要数据保存在内存中,并定期将其写出。