Reactor Java 应用程序中可以拥有的发布者或订阅者数量是否有上限?

Is there an upper limit on the number of Publishers or Subscribers you can have in a Reactor Java Application?

在基于 Reactor Java 的应用程序中,我们通过创建稍后订阅的发布者来释放线程。

我可以创建无限 数量的发布者来扩展我的应用程序吗?创建发布者的限制是什么。

您可以根据需要创建任意数量的发布者 - 在您订阅之前不会发生任何事情(至少对于标准的冷发布者),所以在那之前它们就像任何其他 POJO 一样。显然你必须有足够的堆space,但仅此而已。

如果您要询问的是活跃发布者的上限(即,一旦您订阅)- 这会稍微复杂一些。在传统的每线程模型中,上限通常是您可以在上下文之间切换的线程数(通常是几千个)。反应式框架基本上通过仅使用一个事件循环来消除该限制,这意味着实际限制通常由下式给出其中之一:

  • I/O 带宽。如果您有如此多的请求,您没有足够的网络带宽来及时(或根本)响应它们,那么这就是您的极限。
  • CPU 周期。如果您有足够的网络带宽,但您的发布者正在执行 CPU 密集型操作,那么这很可能是您 运行 首先要做的 - 虽然您不再有上下文切换的开销,但它仍然需要一定数量的 CPU 周期来处理每个请求,而你在这里只有有限的资源。

但实际上,以上两种设置因设置而异 - 因此,了解您将 运行 进入什么限制以及何时 运行 进入的唯一真正方法是对您的应用程序和硬件进行基准测试以找出答案。