【问题标题】:Multiple services or single service with multiple threads多个服务或具有多个线程的单个服务
【发布时间】:2016-08-11 03:30:03
【问题描述】:

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

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

【问题讨论】:

    标签: .net c#-4.0 architecture windows-services


    【解决方案1】:

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

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

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

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

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多