Verticle造成的系统拥塞

System congestion by verticles

有一个应用程序。它由许多 Verticle 组成。他们运行一个接一个地串成一串。以下每一项都是前一项成功实施的结果。很多。他们向外部系统发出多个请求。主会话按时间间隔开始。

我的问题是如果 运行ning 会话没有时间完成会怎样?它会停止吗?或者它会与下一个并行工作吗?如果两者都没有实现并且第三个会话开始?这一切会导致系统过载吗?

这是一个非常理论化的问题,但我会尽力解释。

假设您有任务链 A1->A2->A3->A4,这需要 4 秒,而您的新 "session" 在 3 秒后开始。下一条链将是 B1->B2->B3->B4

Vert.x 的操作方式是有一个任务队列。因此,在第二个周期开始时,您的队列将变为 B4, B3, B2, B1, A4

之后循环一次C4, C3, C2, C1, B4, B3

等等。队列中的任务不会消耗 CPU,但它们会消耗一些内存,因此最终,您会 运行 离开它。

请注意,在现实生活中,尤其是考虑到外部系统时,您的任务不会以完全相同的顺序离开队列。并且有 Vert.x 使用多反应器模式的概念,因此您有多个队列。但是思路是一样的。

现在您将不会遇到 "excessive system load",因为这些任务中的大部分都是空闲的,并且它们的内存占用相对较慢。您将遇到的更多是内存泄漏。但这仍然是最好避免的情况。