当前位置: 首页 > 知识库问答 >
问题:

如何设计任务处理的多线程/多进程系统

养学
2023-03-14

我有以下的要求要设计。

  1. 有多个作业要完成。每个作业都有一个作业id和一个系统id。作业id是唯一的,但同一系统id可能有多个作业
  2. 应顺序处理给定系统id的作业
  3. 其中某些作业可能处于等待状态,如果处于等待状态,则在x秒/分钟之前不应重新尝试返回

系统约束

  1. 唯一系统ID的数目可以是lakhs
  2. 每个系统ID的作业数可以是lakh

我曾考虑过使用kafka,但如果一个系统被阻塞,那么该分区中不同系统的所有作业也会被阻塞,因为unqiue系统太多了,我无法创建那么多分区。

同时,我正在考虑使用mysql来维护作业,并编写一个多线程/多进程系统,它将轮询下一个作业并处理它。太多的线程最终可能会争用同一行

感谢您在设计本系统时提供的任何帮助

共有1个答案

阳航
2023-03-14

看看spring批处理框架。我们在我过去工作的一个生产、金融批处理驱动系统中使用了它,它有很多一流的概念来满足这些需求。

 类似资料:
  • 12.1.1 Windows 3.x的协同多任务 在16位的Windows 3.x中,应用程序具有对CPU的控制权。只有在调用了GetMessage、PeekMessage、WaitMessage或Yield后,程序才有可能把CPU控制权交给系统,系统再把控制权转交给别的应用程序。如果应用程序在长时间内无法调用上述四个函数之一,那么程序就一直独占CPU,系统会被挂起而无法接受用户的输入。 因此,在

  • 默认情况下,C++容器应该是线程安全的。我必须错误地使用多线程,因为对于此代码: 我得到了:

  • 多任务是一个操作系统可以同时执行多个程序的能力。基本上,操作系统使用一个硬件时钟为同时执行的每个程序配置「时间片段」。如果时间片段够小,并且机器也没有由于太多的程序而超出负荷时,那么在使用者看来,所有的这些程序似乎在同时执行着。 多任务并不是什么新的东西。在大型计算机上,多任务是必然的。这些大型主机通常有几十甚至几百个终端机和它连结,而每个终端机使用者都应该感觉到他或者她独占了整个计算机。另外,大

  • 问题内容: Java如何确定分配线程或进程的内核?有什么办法可以控制吗?防止两个大线程在同一内核上执行? 基本上,我要问的是有关Java中多线程如何工作或如何在Java中控制它的更多信息。 问题答案: 您不能为特定线程设置处理器关联。但是,如果将程序分为两个进程,则应该能够将这些进程分配给操作系统级别的特定处理器。 http://www.cyberciti.biz/tips/setting-pro

  • 我使用Timer和TimerTask为聊天应用程序长轮询新消息。我想研究两种“稍微”不同的可能性: 1:计时器声明为局部变量 *问题:每次调用该方法时,我都会看到创建了一个新线程,[Timer-1]、[Timer-2]等等。。在Eclipse调试窗口中,即使在getLastMessages(..)之后,它们似乎都在运行完成运行并向客户端返回值。如果计时器实际使用线程,并且在几次事务之后,服务器最终

  • 我知道子进程是进程,而不是线程。我使用了错误的语义,因为大多数人在谈到“多线程”时都知道您的意图。所以我会把它保留在标题中。 想象一下这样一个场景:使用一个自定义函数或模块,您连续有多个类似和复杂的事情要做。使用所有可用的核心/线程(例如8/16)非常有意义,这就是的目的。 理想情况下,您需要多个同时工作的人员,并向一个控制器发送/从一个控制器发送/回调消息。 node cpool、fork po