gpt4 book ai didi

scala - 代码执行的并行化/集群选项

转载 作者:行者123 更新时间:2023-12-04 16:13:04 26 4
gpt4 key购买 nike

我来自 java 背景,并且遇到了一个 CPU 绑定(bind)问题,我正在尝试并行化以提高性能。我已经分解了我的代码以模块化方式执行,以便它可以以并行方式分发和运行(希望如此)。

@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public void runMyJob(List<String> some params){
doComplexEnoughStuffAndWriteToMysqlDB();
}

现在,我一直在考虑以下选项来并行化这个问题,我想知道人们在这方面的想法/经验。

我目前正在考虑的选项:

1) 使用Java EE(例如JBoss)集群和MessageDrivenBeans。 MDB 位于集群中的从属节点上。每个 MDB 都可以选择一个启动上述工作的事件。 AFAIK Java EE MDB 由应用服务器多线程处理,因此希望它也能够利用多核。因此,它应该是垂直和水平可扩展的。

2) 我可以考虑使用 Hadoop 和 Map Reduce 之类的东西。我在这里担心的是我的作业处理逻辑实际上是相当高级的,所以我不确定它对 Map Reduce 的可翻译性。另外,我是 MR 的新手。

3)我可以看看像 Scala 这样的东西,我相信它可以让并发编程变得更简单。然而,虽然这是垂直可扩展的,但它不是集群/水平可扩展的解决方案。

无论如何,希望所有这些都是有道理的,非常感谢您提供的任何帮助。

最佳答案

您正在寻找的解决方案是 Akka。集群是一个正在开发的特性,通常会包含在 Akka 2.1 中

  • 优秀的Scala和Java Api,非常完整
  • 纯面向消息的模式,没有共享状态
  • 抗故障和可扩展
  • 非常容易分配工作

  • 如果您仍然准时,请摆脱 J2EE。非常欢迎您加入 Akka 邮件列表来提出您的问题。

    关于scala - 代码执行的并行化/集群选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4805702/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com