帮助松散耦合系统的设计多线程执行引擎

时间:2011-09-12 19:42:45

标签: android android-asynctask loose-coupling

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

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

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

我很可能必须使用C#来完成这类任务。 (也是JAVA的机会)。

  1. 在设计这种核心引擎时需要考虑什么?
  2. 您是否知道WEB上有关此类系统的某种用例?(某些文章/教程可能?)
  3. 我所说的“执行引擎”的专业名称是什么(所以我可以在谷歌搜索得更好)?
  4. 由于

2 个答案:

答案 0 :(得分:1)

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

这种系统遍布各处,实际上是Web服务的主要用途。请查看Web Services as RPC的任何说明以获取更多详细信息。

答案 1 :(得分:0)

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