【问题标题】:Help with design multi-threaded execution engine for Loosely coupled systems帮助设计用于松散耦合系统的多线程执行引擎
【发布时间】:2011-09-12 19:42:45
【问题描述】:

我需要构建一个“执行引擎”来监听来自各种系统的请求并执行那些请求的任务。
我想在“执行引擎”中公开一个 Web 服务,每个系统都可以访问这个 Web 服务,要求进行一些操作。所有操作都将保存在磁盘中以处理故障(所有任务都是异步的)

例如,add_email_to_block_list,我们的一个网站可以要求“执行引擎”在邮件系统中执行此任务。

“执行引擎”假设在一分钟内(将来)处理超过 100 个请求。

很可能我将不得不使用 C# 来完成此类任务。 (对于 JAVA 也是一个机会)。

  1. 在设计这种核心引擎时需要考虑什么?
  2. 您知道 WEB 上关于这种系统的某种用例吗?(可能是一些文章/教程?)
  3. 我所说的这个“执行引擎”的专业名称是什么(这样我可以更好地在 google 中搜索)?

谢谢

【问题讨论】:

    标签: android android-asynctask loose-coupling


    【解决方案1】:

    您正在描述一个经典的Remote Procedure Call 界面。通常,为 RPC 设计 Web 服务的主要考虑因素是可伸缩性。为了在阻止系统接收其他请求的同时不处理太多数据,通常最好将数据卸载到其他作业线程。但是,您不应该创建一个每个请求一个线程的系统,除非是作为小型玩具系统,因为这可能是主要的系统资源占用。相反,您应该考虑使用某种Thread Pool 来处理传入的任务。

    这种系统到处都在使用,而且确实是网络服务的主要用途。请查看Web Services as RPC 的任何描述以了解更多详细信息。

    【讨论】:

      【解决方案2】:

      尽量减少全局数据的使用,并使用关键部分(或互斥体、信号量或其他)保护对它们的访问。对于文件等外部资源也是如此。然后为每个传入请求创建一个新线程(如果您的服务器基于 Unix,则在某些情况下新进程可能会更好),您应该没问题。

      【讨论】:

        猜你喜欢
        • 2010-09-22
        • 1970-01-01
        • 2011-01-01
        • 2012-09-01
        • 2010-11-28
        • 2017-06-05
        • 1970-01-01
        • 2013-07-29
        • 2014-03-15
        相关资源
        最近更新 更多