转至http://www.kafka0102.com/2010/09/343.html
Terracotta最近推出了个新东西–BigMemory,使得Infoq上的这篇Terracotta’s BigMemory Aiming to Eliminate Garbage Collection for Java Caches文章引来长长的争论。像GigaSpaces、Infinispan等和Terracotta有竞争关系的商业或开源的对手,对BigMemory的诸多方面提出了疑问和质疑。如果BigMemory真的如Terracotta吹的那般好,那些竞争对手该情何以堪?就算它真的好,也要挑出它的不是,比如就有评论说现在都分布式年代了,还搞什么单JVM实例优化?暂且放下这些争论,看看BigMemory是个怎样的东西,值得大家如此大动神经。
JVM GC的问题可以说是“臭名昭著”,尽管现在一台服务器的内存可以动辄几十G到上百G,但单个JVM实例并不能充分利用硬件提供的内存资源,因为JVM内存容量越大,由GC带来的应用“暂停”现象就越明显。所以,通常单个JVM实例的内存容量要控制在一定范围内。这也使得,为了能有效利用机器的内存,一台机器会部署多个JVM实例。而对于需要大规模内存的Java应用,比如Cache系统,想不分布式都不行。
但Terracotta说了,他们的大多数客户并不需要分布式的Cache系统,单个Ehcache实例就够用了,只是客户们希望单个Ehcache实例能支持更大的内存容量,并且不要有性能问题。所以,BigMemory被创造出来了。BigMemory不是在JVM堆上分配内存的(off heap),内存的分配与回收不受GC控制,容量方面可以达到物理内存规模。因为BigMemory不是开源的,Terracotta没有透露出BigMemory的实现原理,但其使用文档指出,使用BigMemory需要配置MaxDirectMemorySize选项,并且其是100%Java开发的,所以BigMemory应该是基于DirectBuffer的。至于BigMemory的技术难度和复杂性,我还不好揣测,是不是通过DirectBuffer分配了一块大的ByteArray,然后有一套有效的堆外内存管理机制呢?
说说BigMemory的效果吧。以Ehcache为例,它原来支持两层store,即MemStore和DiskStore,MemStore的大小受限于GC影响,一般控制在(4G?,我有些记不清了,它的文档应该有说明的)以下为好;而DiskStore相比于MemStore,性能方面有百倍的差距,更适合做个备份。现在引入BigMemory后,Ehcache的Stroe就有三层:MemStore可以控制在较好的规模(比如2G),使得GC不会对应用服务产生严重的影响,并且能cache住大多数热的内容;BigMemory可以给出更大的容量,cache那些不是很热的内容,因为BigMemory保存的是对象序列化后的内容,所以对BigMemory管理的对象操作有个序列化和反序列化过程,使得BigMemory相比MemStore会有10倍左右的性能损失,但相比于分布式的cache读取,这些性能损失是已经很小了;而DiskStore,它就真的适合做个备份,以提升应用重启动时间。
如果Terracotta给出的数据和评测准确,我觉得BigMemory是个很不错的东西。即便是应用的分布式化盛行,但提升单个JVM的内存使用效果对很多场景还是很有价值的,君不见还有大公司热衷于mysql的单机优化吗?不知道是否会有有心人做出个通用的开源的BigMemory出来,甚至集成到JDK中,以造福Javaer们呢?
分享到:
相关推荐
当与Terracotta结合使用时,Ehcache可以实现分布式缓存,使得多台服务器上的应用可以共享同一份缓存数据,从而构建高可用的集群环境。在本篇中,我们将深入探讨如何在Java项目中配置Ehcache与Terracotta来实现这一...
Terracotta是一种分布式内存管理和数据共享平台,其核心产品BigMemory Max旨在帮助应用程序实现数据在内存中的高效管理,尤其适用于分布式服务器环境。Terracotta的核心优势在于能够跨多台服务器提供统一的数据访问...
terracotta license.key ,
通过将Java对象的状态存储在一个共享的内存空间(称为"BigMemory")中,Terracotta可以确保在集群中的所有服务器之间保持一致性和高可用性,特别适合处理session复制和负载均衡的需求。 **Tomcat Session集群** 在...
在本文中,我们将深入探讨Terracotta的技术细节、其在集群负载中的优势,以及如何利用terracotta-3.6.0版本来优化应用性能。 **一、Terracotta简介** Terracotta是一款开源软件,它的核心功能在于提供了一个分布式...
Terracotta集群Tomcat的配置是一项复杂而关键的任务,它涉及到分布式系统中的高可用性和负载均衡。以下将详细解释这个过程中的各个步骤和相关知识点。 首先,安装Terracotta 3.2.1版本是非常基础的一步。需要注意的...
【标题】:“使用Terracotta进行Web Session同步” 在分布式Web应用环境中,用户会话(Session)的共享和同步是一个重要的挑战。Terracotta是一款开源软件,它提供了一种高效且可靠的解决方案,允许在集群环境中...
### 通过Terracotta实现基于Tomcat的Web应用集群 #### 概述 本文主要介绍了如何利用Terracotta与Tomcat构建高效的Web应用集群。在实际应用中,通过集群技术可以显著提升系统的可用性和伸缩性,特别是对于高流量、...
【 Terracotta + Tomcat 集群配置详解】 在分布式计算环境中,集群技术是提升系统可用性和性能的重要手段。本文将深入探讨 Terracotta 与 Tomcat 集群的配置,以及如何利用 Terracotta 实现高效、可靠的 session ...
Terracotta是一款强大的分布式内存管理工具,主要用于Java应用程序的集群化和数据共享。在这个场景中,我们关注的是Terracotta企业版(terracotta-ee)的4.1.2版本,以及与其配套的许可证文件(terracotta-license....
Terracotta 3.2.1 英文文档
terracotta-ee-3.5.2破解版
### 使用Terracotta实现Session共享的关键知识点 #### Terracotta简介 Terracotta是一种开源的分布式内存技术,它提供了一种简单有效的方式来管理和共享应用程序的数据。对于Java应用程序而言,Terracotta可以实现...
记载了terracotta如何与tomcat、jetty等服务器的集群,解释了tc-config.xml中各个配置的作用
terracotta-eclipse-plugin-3.7.7-2013-08-19_16-03-48.tar(terracotta的Eclipse插件) 发现官网挺卡的,有时候下不了,先传上来吧,供国内用户下载,这个算最新的吧。2014-02-17下载的。
terracotta-toolkit-1.3-runtime-3.2.0.jar 集群实现JAR
暗示我们关注的是Terracotta公司,这是一个专注于提供分布式数据管理解决方案的公司,特别是以其开源产品Ehcache和分布式内存计算平台Quintessa闻名。 Terracotta的技术使应用程序能够利用集群硬件的资源来提高性能...