gpt4 book ai didi

java - 两台机器之间的 JVM 堆复制

转载 作者:IT老高 更新时间:2023-10-28 21:06:41 26 4
gpt4 key购买 nike

连接在同一个网络中运行同一个 Java 应用程序的两台可分离计算机如何通过在彼此之间同步它们的堆来保持相同状态的基本原则是什么?

我相信 Terracotta完成这项任务,但我不知道某些伪代码将如何描述其核心功能。

我只是想了解这项技术。

最佳答案

Terracotta DSO 通过操作类(以及 JDK 的类等)的字节码来工作。关于如何以及何时执行此操作的说明是 Terracotta 配置文件的一部分。

字节码修改查找某些字节码,例如字段读取或写入或监视器进入或退出。每当出现这些指令时,就会在该位置周围添加代码,以在分布式存储中执行适当的操作。比如同步获取了一个monitor,也就获取了一个分布式锁(是读锁还是写锁,取决于配置)。如果共享对象中的字段被写入,分布式系统必须验证是否持有写锁,然后将数据值发送到集群服务器,集群服务器将其存储在磁盘上或通过网络共享。/p>

请注意,Terracotta 不共享整个堆,仅共享配置指示的对象图。一般来说,共享整个堆没有什么意义。相反,应用程序最好描述分布式应用程序所需的域对象。

为了提高上述操作的效率,采用了许多优化:只有字段增量通过网络发送,并且以一种比 Java 序列化更有效的形式,许多增量可以捆绑并分批发送,锁实际上是“ checkout ” "到特定客户端,这样如果应用程序数据在客户端之间进行分区,大多数分布式锁实际上是本地操作,不涉及网络调用等。

关于java - 两台机器之间的 JVM 堆复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6805135/

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