Terracotta是分布式缓存吗?
4 回答
尽管您没有具体说明您所谈论的是哪种产品,但我假设您指的是开源平台本身。简短的回答是否定的,但它可以用来编写分布式缓存,并且已经在他们自己的产品之一(Ehcache)中。
您可以在此处查看核心引擎的概述(似乎他们现在将其开源平台上的信息隐藏在注册墙后面)。它是一个不使用J2EE技术的集群引擎,其主要目的是简化分布式计算开发。除了缓存之外,明显的用例还涉及高可用性和可扩展性需求。可以将其视为使相对简单的 java 代码能够“在云中”运行,而不必担心可能涉及的许多细节。
Terracotta 与“缓存”无关,尽管大多数实现都将它用于缓存目的。兵马俑是关于集群的,兵马俑本身是使用 java 实现的(据我所知)。
Terracotta是如何实现聚类的:
1)JVM1运行APP 2)JVM2运行APP(同) 3)JVM3运行APP(同)
如果没有 Terracotta,所有 JVM 都在独立运行,而彼此不知道执行一些冗余任务并维护它们的独立堆
当您在这 3 个 JVM 上启用 Terracotta(一个正在运行的 Terracotta 服务器)时(配置为使用 Terracotta 服务器)
Terracotta 提供了将所有 3 个 JVM 作为单个 JVM 的逻辑视图。您指定存储在 Server(Root) 的任何对象图对所有 3 个 JVM 都可用,就像任何本地对象一样,但每个 JVM 都可以读取/写入该对象,其更改立即(~)可供其他 JVM 使用。
出于这个原因,Terracotta 主要用于缓存和分布式计算,因为如果工作单元对象被指定为可共享的,那么没有工作的空闲 JVM 可以处理负载很重的滞后 JVM 的工作。
您的问题不清楚(Terracotta 有几种产品),但是是的,Terracotta 平台确实为分布式缓存提供了解决方案。
L2 缓存是处理器(在我们的例子中是 JVM)外部并在它们之间共享的缓存。作为一个透明的二级缓存,Terracotta 将您的多计算机组合成一个多处理器。因此,它是一个分布式缓存。但是,您似乎没有得到它,因为您是从未想过它可以透明的 SW 人。您期望缓存是具有 get/set 方法和需要在应用程序级别解决的一致性问题的东西。
阅读“兵马俑绝对指南”。作者直截了当地说 Terracotta 是一个分布式缓存。我认为他们比在这里回答说“不”的任何人都更了解这一点。