我已经四处寻找了很多概念,现在我需要提出我的计划进行一些审查。
我将创建一个云服务,从另一家公司的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,或者我错在这里?
我的问题:
- 我应该使用Service Bus Queue进行Web角色和Worker角色A之间的通信吗?或者可能是内部端点?还是一个队列?我认为不断轮询队列是不必要的负载,但是每秒一次ping可能不是很重要吗?
- 服务总线队列是否会维护正在发送的通知的实时特征,还是会减慢速度?
- 可以将工作者角色A与Web角色合并,而不会冒被IIS删除线程的风险吗?
醇>
整个事情就像this Azure tutorial一样,他们显然认为有必要为这个简单的任务提供2个工作角色和一个Web角色。
在此先感谢,任何提示和澄清指示都表示赞赏!