1

我想了解您的想法,如何通过跨多个服务器运行我的服务流程来水平扩展它。它是一个用 C# 编写的 Windows 服务,它的生活目的是订阅我们公司的 Exchange Web 服务 (EWS),以便在有新的传入电子邮件消息时(通过 HTTP 回调)得到通知。然后,该服务获取电子邮件消息,对其进行处理,如果可能,发送回复,然后返回睡眠状态并等待下一封传入的电子邮件。

如果我在不止一台机器上运行它,我可以让它们都订阅 EWS 通知,或者只让它们中的一个。如果我让他们都订阅,我会有点犹豫,因为它可能会给我们的 MS Exchange 基础架构增加负担。这也将导致所有机器接收和处理电子邮件。对于给定的请求消息,我不希望发件人收到 N 次回复(其中 N 是场中的服务器数量)!现在,如果我只有一台订阅 EWS 的机器,这会使我面临单点故障。

我想听听你关于如何解决这个问题的建议。我希望多台服务器通过在它们之间分发电子邮件来处理传入的消息(也许我必须通过使用消息队列服务器来做到这一点)。谢谢。

4

1 回答 1

1

取决于您是否正在扩展可靠性或吞吐量。

如果可靠性,可以有一个主进程和一个备用进程。主要进程订阅并处理所有电子邮件。备用进程与主进程交换保活消息,并在保活超时时接管为主进程。

如果吞吐量,那么消息队列机制,如您所建议的,可能是一个好方法。您可以像上面那样运行主服务器和备用服务器,但主服务器只是将电子邮件拉入队列。一组消息处理器退出队列。

于 2014-03-27T14:15:17.307 回答