【问题标题】:Behavior of executor service in cluster集群中执行器服务的行为
【发布时间】:2015-12-01 11:45:22
【问题描述】:

我在java中使用执行器服务编写了一个代码。在这里,我创建了 10 个工作线程来处理数据库获取的行。每个线程将被分配一个结果行。当应用程序在单个实例/节点上部署和运行时,这种方法可以正常工作。

谁能建议当我的应用程序部署在多个节点/集群中时这将如何表现? 在部署到集群之前,我是否必须处理任何部分代码?

04/12/15:还有什么建议吗?

【问题讨论】:

  • 还有什么建议吗?

标签: java multithreading executorservice threadpoolexecutor scheduledexecutorservice


【解决方案1】:

您应该考虑每个任务的开销。除非任务大小适中,否则您可能需要对它们进行批处理。

在分布式上下文中,开销会更高,因此您更有可能需要批处理工作。

您将需要一个框架,因此考虑因素将取决于您选择的框架。

【讨论】:

  • 嗨,彼得,感谢您的宝贵时间。我在理解您的回复时有些困惑。您能否详细说明您在这里指的是哪种批处理工作?是春季批次吗?
  • @user4325796 我的意思是你每个任务传递不止一行。对于您拥有的每个 CPU,您只需要大约两个任务。超过此值可能会增加开销。
  • 嗨,彼得,是的,按照建议,我会将工作线程的数量减少到 2 个,并将所有工作分配给它们。
  • @user4325796 你有多少个 CPU?将其乘以 2,这就是要使用的线程数。例如如果您有 8 个 CPU,请使用 16 个线程。
  • 嗨,彼得,现在我不确定我们将要使用的 CPU 数量。在完成实施之前,我会牢记这一点。如果您能解释为什么每个 cpu 只有 2 个线程,这将很有帮助?如果有任何文章,请提供链接。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
相关资源
最近更新 更多