多服务或单服务多线程

S.K*_*S.K 1 .net architecture windows-services c#-4.0

我们正在重写我们的 .net 应用程序。当前应用程序有 4 个 windows 服务。第一个服务接受来自 UI 的请求,并通过发布刷新 UI 的事件来更新 UI。此服务在内部使用 2 个 thrall 池,每个池最多 16 个线程来服务 GUI。来自 UI 的任何需要业务处理的请求都会传递到工作进程 windows 服务(有 2 个这样的 windows 服务)。MSMQ 用于在服务之间来回传递请求。第四个 Windows 服务充当负载平衡,并将来自第一个服务的请求定向到工作人员。所有服务都在同一个盒子上运行

现在在重写时,我们想知道我们是否应该保持相同的架构,或者是否可以将其全部用单独的线程整合到同一个服务中。从性能的角度来看,哪个会更好。

Tay*_*yab 5

现在你是在同一个盒子上运行它,但你认为你将来可能需要扩展到多个盒子吗?

涉及多个服务的架构更具可扩展性、可维护性和灵活性。您获得的一些主要好处是,

  • 您的架构更加松散耦合
  • 您可以分别扩展每个服务/工作负载
  • 你可以用不同的技术替换每个服务(也许有一天你想在 Linux 上使用 C++ 实现你的工作进程),你可以灵活地做到这一点
  • 向您的系统添加新功能更容易,例如,如果您想添加额外的日志记录,您只需连接到 MSMQ 并开始记录您的消息,而无需触及您的实际代码

由于减少了延迟,多线程可能会给您带来一些性能提升,但是如果您在同一台机器上运行两个系统,那么就不会有太大区别。但是,如果您因高负载而陷入困境,并且只想扩展您的业务逻辑服务;那你就倒霉了。所以我总是会使用多服务(一种微服务架构),它可以分离关注点和其他好处。

我希望这有帮助。