就使用 Service Fabric 编写批处理器而言,最好的方法是啥?

Posted

技术标签:

【中文标题】就使用 Service Fabric 编写批处理器而言,最好的方法是啥?【英文标题】:What is the best way as far writing a batch processor using Service fabric?就使用 Service Fabric 编写批处理器而言,最好的方法是什么? 【发布时间】:2018-05-03 06:27:01 【问题描述】:

我们需要能够处理存储过程的结果记录集。每条记录的处理都是相同的,我们希望有多线程并且不会遇到任何锁定。你会在这里推荐演员还是有状态的?

【问题讨论】:

没有更多信息很难回答。记录集可能有多大?可以一次处理一条记录,还是需要以全有或全无的方式处理?处理每条记录需要多长时间?它们需要按顺序处理吗?如果记录集不是很大,我可能会使用一个 StatefulService 来生成许多 Actor。特别是如果处理需要您访问某种外部服务。它使代码非常简单,如果将来某些记录需要新的处理,您可以轻松地建立新的 Actor 类型。 【参考方案1】:

没有更多信息的粗略回答:

创建一个有状态服务来接收处理记录集的请求(包括要处理的记录集,或获取记录集的过程,或将其存储在某个地方以便可以调用它)。然后,在有状态服务内部,遍历记录集,将处理解析到各个参与者。如果您不关心有多少参与者,您可以生成随机 ID,或者您可以将处理限制为有限集。如果选择前者,则必须考虑规模——多少个处理器可以安全地同时运行而无需横向扩展?如果您使用后者,您需要在 Actor 中进行某种队列处理或发布/订阅基础设施,以便您可以分担工作并确保一切都完成。

【讨论】:

以上是关于就使用 Service Fabric 编写批处理器而言,最好的方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Service Fabric 中无状态服务的服务解析器

用于从本地 Service Fabric 探索和查询 ETW 日志的工具

https 与 Service Fabric 本地群集管理器

Service Fabric 本地群集管理器节点设置错误

Azure Service Fabric - 外部状态管理器

为 Service Fabric 应用程序类编写单元测试