我正在研究 Windows Azure 上的大规模 Web 性能应用程序(目前是理论上的)架构,并想就“Windows Azure 队列(不是 SB)”以及如何最好地扩展/创建它们来开动脑筋。
我基本上在看 MVC 前端(Web 角色)、Windows Azure 队列(异步消息解耦)、工作角色和黑化的 SQL DB。
我的理解是,我们在 Web Role 上收到一条消息,然后将其传递给队列,Worker Role 将轮询队列 {做工作……例如 SQL DB CRUD 操作}并发回完成消息。
处理 Windows Azure 队列创建以实现规模化以及通过 Web 角色和工作角色来回传递消息的最佳方式是什么?最好有一个队列用于发送工作,例如订单,然后另一个队列用于通知,例如状态消息
我看到很多帖子说您应该在应用程序代码之外创建队列,这是有道理的,但是您如何使用当前的队列限制来扩展它“单个 Windows Azure 队列的可扩展性目标被“限制”在 500 个事务/秒”?
MSDN 有一些关于通过队列扩展的重要资源。
• 角色实例扩展是指添加和删除额外的Web 或工作者角色实例来处理时间点工作负载。这通常包括更改服务配置中的实例计数。增加实例计数将导致 Windows Azure 运行时启动新实例,而减少实例计数又会导致它关闭正在运行的实例。
• 进程(线程)扩展是指通过根据当前工作负载向上和向下调整线程数,在给定角色实例中的处理线程方面保持足够的容量。
简而言之,我正在寻找以下问题的答案:
- 队列创建最佳实践?
- Web 角色(MVC 应用程序)如何跟踪消息,即它是否在传递消息后轮询“通知”队列,在 Web 角色中处理消息相关性以发送回客户端的最佳方法是什么(网络消费者)?
- 扩展选项是最好的方法,还是我应该在运行时查看队列的动态扩展(如果是这样的话?我认为 SB 队列在这种情况下可能会更好)创建新队列以规避 500 个事务/秒的限制?
如前所述,我的问题目前更具理论性,我想设计和未来证明任何未来的解决方案。
谢谢