Java 共享地址空间和消息传递并行编程范例



共享地址空间模型中,共享一个公共地址空间进程并表示为内存中的数据结构(如ConcurrentHashMap)。这提供了非常快速的数据共享的优势,因为共享对象位于一台计算机上(为了简单起见,让我们假设如此)。由于进程可能会发生冲突,因此各种锁定机制(互斥锁)有助于确保在访问共享内存时相互排斥。这种方案缺乏可扩展性,因为处理器数量的增加可能会以几何方式增加共享内存上的流量,并且一台计算机不能拥有超过 8 个处理器。

消息传递模型中,没有全局地址空间的感觉。每进程有一个专用本地内存。进程可以与每个进程通信其他通过传递消息。与共享地址空间不同,消息传递模型提供了处理器和内存之间的可伸缩性,尽管需要复制公共数据。处理器的增加也会按比例增加内存(对于该数据)大小,尽管在这种情况下不需要锁定机制。

阅读"在Java中思考"以获得灵感,我发现只有关于具有同步原则的共享地址空间模型的讨论。随着我的问题变得越来越复杂,我将尝试消息传递范式,就我不是盲目的而言,这本书中没有介绍。

您能否推荐 Java 本机类或任何经过验证的外部库来使用消息传递模型,例如 C++ 中的 MPI?任何指向该来源的链接将不胜感激!

Akka 是 JVM 常用的 actor 框架 - 可用于 Java 和 Scala。

Apache Hadoop软件库是一个框架,它允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。http://hadoop.apache.org/

最新更新