azure - 分布式计算/横向扩展模式的良好资源

标签 azure architecture parallel-processing cloud distributed-computing

我们即将开始开发并行云处理应用程序,我正在寻找如何设置的良好资源。让我设置上下文:

  • 首先我们加载包含大量数据的数据库
  • 然后,我们有 n 个云服务实例,可以根据数据生成 PDF
  • 随后 PDF 将被合并,同样应该可以缩放
  • 结果存储在数据库中
  • 完成。

我正在寻找资源来帮助我回答以下问题:

  • 如何衡量所有这些实例的进度?我假设有一个正在监视的 Controller 实例。我们应该使用轮询还是发布/订阅系统?
  • 如何控制这些 n 个实例来启动/停止/暂停?
  • Controller 进程应该了解处理器,还是应该监听广播?
  • 我们正在考虑“数据”队列,每个 PDF 生成实例从中获取要处理的指令的队列,我们​​是否还应该使用“命令”队列来执行“启动/停止”等命令?

或者 - 是否已经有现成的东西可以做到这一点?我正在寻找“企业应用程序架构模式”,但专为横向扩展/并行/云处理而定制。

有什么想法吗?

编辑 谢谢你的-1。如果您有疑问,我已经在 Google 上搜索过,我已经搜索过 PluralSight,并且还浏览了 Azure 视频。我还没有遇到任何描述过程 Controller /处理器设置的模式。

最佳答案

正如 @JuneT 提到的,看看 Cloud Design Patterns指导。我会推荐评论中提到的领导者选举模式。

其他一些想法:

  • 我认为您不应该考虑拥有一个 Controller 实例。所有实例都应该有平等的机会成为领导者。这样你就可以确保领导者不会失败。为了决定领导者,您应该查看Lease Blob功能。
  • 您应该研究 Windows Azure Diagnostics 作为监控这些实例运行状况的方法。 Windows Azure Diagnostics 还支持自定义性能计数器,您可以使用它来监控每个实例的有效性。对于扩展,您可以依靠门户中提供的 Windows Azure Auto Scaling 功能,或者寻找第三方解决方案,例如来自 Paraleap 软件的 AzureWatch。恕我直言,负责扩展的流程不应成为您的解决方案的一部分。它应该位于外面的某个地方。

因此事件的一般顺序可能是:

  1. 所有个体都会为了成为领导者而相互斗争。只有一个实例会被选为领导者。所有其他实例将等待领导者的消息(我们称其为追随者)。
  2. Leader将从数据库中获取数据并将信息推送到队列中。关注者将轮询此队列。一旦消息到达队列,追随者将开始处理这些消息。一旦追随者完成一项任务,他们就会回到队列,看看是否还有更多的工作要做。一旦领导者将所有消息放入队列,它将成为追随者并处理消息。
  3. 处理完所有消息后,所有实例都将返回到步骤 1。

关于azure - 分布式计算/横向扩展模式的良好资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22531547/

相关文章:

ios - '无效的位码版本(生产者: '902.0.39.2_0' Reader: '900.0.37_0' )'

node.js - 成功登录后Azure身份验证返回登录页面-node.js

database-design - Trello 如何如此快速地显示历史?

c# - 此版本的 SQL Server 不支持已弃用的功能 'INSERT NULL into TIMESTAMP columns'

.net - Microsoft Orleans 和联合托管客户

c# - 如何在 C# 中以低延迟/非常小的延迟在 C# 中播放音频文件?

ruby - 为什么使用Parallel gem运行 “knife solo cook”会给出端口错误?

c++ - 多线程计算mean和std并不能提高效率

ruby - 适用于 Ruby 的 Azure SDK : Table Storage - query_entities page, 计数,跳过实体?

azure - 我的 Azure Web 应用程序可以访问虚拟网络的内部 DNS 吗?