clojure - Clojure 的 STM 模型可以在多个 JVM 上工作吗?

标签 clojure

我知道 Clojure 在多核计算机上运行良好,但我想知道它在分布在许多计算机上的 JVM 集群上工作是否有意义?

最佳答案

Runa为此研究了使用 Terracotta 并最终发布了 swarmiji作为分布式代理库。

SMP 系统和集群之间的真正区别之一是共享内存。在 Cluster 中,代码必须请求数据,而在 SMP 中,代码可以直接读取数据。这有一些很好的优点和一些(扩展)缺点。

Clojure 的 STM 与许多其他 STM 系统有很大不同,它建立在相对时间的概念之上,通过每个事务的生成计数器来测量。如果没有对这一代计数器的共同访问,它就无法给事件下达命令,也无法完成它的工作(请原谅这个过于简单的解释)。

STM 的主要动机之一是创建一个真正利用共享内存并发性的系统,例如确保读者永远不会等待写入者并且读者始终看到有效数据。因为这是为了利用共享内存而构建的,所以如果没有共享内存,它就会失去很多吸引力。

参与者模型(ala Erlang)更适合分布式计算。

或者,换句话说:也许我们不应该尝试在分布式并发孔中放置一个方钉。

关于clojure - Clojure 的 STM 模型可以在多个 JVM 上工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5746850/

相关文章:

clojure - clojure 中主机互操作点宏是如何实现的

clojure - 从代码调整 clojure-lanterna 终端/屏幕的大小

Emacs paredit-mode - 如何纠正被拉出的代码中的不平衡括号?

clojure - 从 map 注册 clojure.specs

hash - 简单的 Clojure 澄清重新 : hashes/values

clojure - Clojure 中基于参数类型返回的规范方法

mysql - 如何从 Clojure 中的文本文件动态编写 MySQL 查询

Clojure Heroku Worker Dyno 队列

postgresql - 使用 Korma 运行原始 sql 时如何在准备好的语句中传递 clojure 向量?

Clojure 按过滤器分区