Azure云服务项目 - 架构

时间:2014-03-23 15:30:54

标签: azure notifications azure-worker-roles azureservicebus xsockets.net

我已经四处寻找了很多概念,现在我需要提出我的计划进行一些审查。

我将创建一个云服务,从另一家公司的Web API接收通知,并使用它们的REST服务。

代表在我的网站上注册的用户处理数据。所以他们做了一些设置并离开了网站。云服务现在开始处理检索到的数据并对Web API进行操作 - 将存储一些数据以呈现给用户。

我每天要花几千到几十万次通知。也许更晚。几百个用户,可能会增加到1000+以上。

所以,我这样想:

网络角色

  • 组成前端,负责管理其设置的用户 并显示数据。
  • 将用户凭据和设置存储在SQL数据库中。
  • 还提供管理所有用户的管理界面。
  • 接收来自Web API的通知(包含DTO的数据,主要是数据类型字符串的最多20-30个属性),并将其转发给 工人角色。
  • 将有关通知的数据存储在一个(或两个)Azure表(表1和表2)中。
  • 查询这些表格(和表格4),在网络用户界面中向用户显示“鼠标悬停”数据。

工作人员角色A

  • 接收来自webrole的中继通知,评估类型 通知和:
  • 要求REST API获取更多数据,或者:
  • async'ly将通知DTO放入Azure表(表3)中,以便工作者角色B继续工作。
  • 经常为工作者角色B创建的作业以及POST到REST API创建一个Azure队列。
  • 将有关POST的数据存储在另一个Azure表(表4)

工作人员角色B

  • 经常阅读表3以获取有关DTO的通知
  • 根据通知类型,使用DTO中的数据构造查询,查询SQL数据库并检索匹配的用户 设置,进行评估和构建要放在的工作 队列,工人角色A弹出和POST。
  • 将一些剩余(未完成)的工作继续在另一轮中继续,在第五个表格中(表5)。

这几乎就是整个事情。

我想让通知由XSockets.NET管理,因为我认为SignalR需要Windows 8,或者我错在这里?

我的问题:

  1. 我应该使用Service Bus Queue进行Web角色和Worker角色A之间的通信吗?或者可能是内部端点?还是一个队列?我认为不断轮询队列是不必要的负载,但是每秒一次ping可能不是很重要吗?
  2. 服务总线队列是否会维护正在发送的通知的实时特征,还是会减慢速度?
  3. 可以将工作者角色A与Web角色合并,而不会冒被IIS删除线程的风险吗?
  4. 整个事情就像this Azure tutorial一样,他们显然认为有必要为这个简单的任务提供2个工作角色和一个Web角色。

    在此先感谢,任何提示和澄清指示都表示赞赏!

1 个答案:

答案 0 :(得分:0)

如果您在工作者角色中托管WCF,那么1-内部端点将非常有用,因此使用队列进行角色之间的通信是我自己多次使用的方法。

2-不会让事情变得缓慢

3-毫无疑问存在风险,但值得一试。

相关问题