我们正在尝试创建一个应用程序来扫描员工收到的邮件中是否存在恶意软件。
我们将有 2 台自动扩展服务器,它们之间有 AWS SQS。 一台服务器用于请求处理 (RS),另一台服务器用于处理电子邮件 (PS)。
是这样的:
S1-S2-S3-...(RS)
===SQS===
S4-S5-S6...(PS)
这就是它的工作原理:
RS 使用 Microsoft 的 Graph API 订阅大量 Outlook 邮箱。 对于用户收到的每封电子邮件,RS 路由都会受到影响。
RS 在 SQS 中接收点击并推送通知。
PS 长轮询,一次检索 10 条消息,使用 Graph API 获取电子邮件,并同时对其进行处理。 如果恶意,它会将电子邮件保存到 S3bucket。
注意事项:-
如果我有 400,000 个用户,平均每天发送 10 封电子邮件,那么我们每天将获得 40,00,000 次点击。
对于请求处理,我正在考虑使用 hyper-express,而不是express。
对于加工,我很担心。 我现在考虑只使用集群模块,看看会发生什么。
但是,我正在阅读有关 Azure 事件中心的信息。 他们说它们是可扩展的,当您有大量订阅时应该使用它们。 它看起来像SQS FIFO。 而且我还没有找到事件中心直接订阅邮箱的方法。
任何指导/帮助表示赞赏。
谢谢你。
Microsoft Graph 订阅支持直接向 Azure 事件中心发送更改通知,从而消除了解决方案中对
RS
服务的需要。
相反,您的
PS
服务将直接从 Azure 事件中心 读取并处理消息。由于事件中心(如 Kafka)具有持久性并允许多个使用者,因此您可以部署一个 Azure Function App,它可以根据传入的消息数量进行处理和扩展。
借助 Azure Functions,您可以简单地使用事件中心的绑定,当在消耗计划上使用和运行时,它会自动扩展您的函数应用程序以处理传入的负载。