- 浏览: 156357 次
- 来自: ...
文章分类
- 全部博客 (151)
- Liferay.in.Action (3)
- 集群 (12)
- web (5)
- jna (2)
- 数据库 (7)
- Terracotta (11)
- xml (1)
- Hibernate (3)
- Jdbc (2)
- DDD (10)
- nosql (7)
- 云存储 (3)
- 云产品 (7)
- 云计算 (26)
- Hadoop (11)
- 虚拟化 (5)
- REST (3)
- 程序人生 (11)
- google (2)
- 安全应用 (5)
- LDAP (0)
- 安全技术 (5)
- android (4)
- 网络妙语 (1)
- HTML5 (1)
- 搜索引擎 (1)
- 架构设计 (5)
- redis (3)
- Cassandra (2)
最新评论
-
liwanfeng:
情况是这样的,你的文件我觉得还是比较小,我现在需要处理的XML ...
dom4j处理大文件
缓存是最重要的一个方面,以提高应用程序性能的存储对象的缓存
(内存)减少数据库负载。
缓存在群集环境中,需要分布式缓存
解决方案,可以支持故障切换情景和数据的可靠性。 在这个后我想探索的能力, Memcached和terracotta兵马俑的分布式缓存
解决方案。
Memcached是一个高性能的分布式对象缓存
系统, 客户端的API为的Perl , PHP中,巨蟒, Ruby和Java语言。 以下是一些其能力和局限性(使用Java客户端API ) :
要求对象是可序列化
对象标识是不保留
支持高速缓存
到期
不处理故障情景
对于一个特定对象选择一个服务器从池缓存
服务器基于Hash的关键
容易配置(通过SockIOPool级)
terracotta秦始皇是一个开源基于Java的JVM集群解决方案。 分布式缓存
可以实现使用兵马俑terracotta使用java.util.HashMap或开放源码的缓存
解决方案,如EHCache , OSCache和JBoss TreeCache 。
保护对象的身份
通过有效地管理虚拟内存堆
声明要求锁定支持
简单的配置文件与Eclipse工具支持
良好的文件,支持和积极发展
由于性质及其执行某些类别不是便携式,因此无法使用
很难确定第三方班便携式
不需要类是可序列化
容易配置并开始!
有
一个老外网友使用terracotta后,发现CPU是相当高负荷下和GC时间以来被杀的应用响应时间是关键的Web应用程序。于是认为使用
Memcached好,而兵马俑公司首席技术官阿里Zilka
认为:Memcached是因为使用非Java编写,所以没有GC,但他认为Memcached存在下面问题:
1 。 memcache分区是非常静态的(除非你改变它,或自定义) 。 这可能是一个大问题,因为您的网站成长 、
2 。 memcache分区会丢失数据。 如果您重新启动memcache服务器,数据丢失 。
有人说:如果你想使用mamcache有一个以上的服务器,你是到一些重型编码和算法思想。 有些人已经做了一些,但就我可以告诉不是类型的精度要求或映射。
http://translate.google.cn/translate?prev=hp&hl=zh-CN&js=n&u=http://hankliblog.blogspot.com/2008/01/bye-bye-terracotta-other-java-caches.html&sl=en&tl=zh-CN&history_state0=
memcached是一个非常简单的解决方案,分布式数据缓存
。它提供了一个地图一样的API ,而不是基于Java (尽管它有一个的Java API ) 。 因此,它会永远需要您的Java代码能够与一个单独的进程( memcached守护程序) 。
GigaSpaces和兵马俑都是纯Java的解决方案,提供的,远远不止缓存
,虽然采取了不同的办法了。
Terracotta 是在JVM级别集群
你的应用,可以只花一点点代码变化就能将应用运行在多个JVM上。这样你能得到分布式缓存
(Terracotta guys call it Network Attached Memory) 和分布式进程. 这种方式很干净。
GigaSpaces产品为您提供全面的运行平台,实施高度可扩展的分布式应用。这样的做法是制定您的应用程序上的一个可扩展的平台从第1天,而不是集群
它特设更多的可扩展性。
该产品集成了非常丰富的分布式缓存
执行,信息功能和独特的SLA驱动,自我愈合的部署平台,让您的企业应用都需要加以电网启用。
http://www.gigaspaces.com/os_downloads.html.
有人做过测试,如果目标是20K tps, TC兵马俑之需要32 服务器而竞争对手的缓存
需要160台服务器. (This is my recollection, at least)
http://forum.springsource.org/showpost.php?s=4473cedb3ff6bb0ac39b624b04ac5922&p=168447&postcount=10
Voldemort is a distributed key-value storage system,开源的。
已
经在著名网站LinkedIn中使用,他们几位工程师写的构建 TB 级的 key-value 系统的经验:Building a
terabyte-scale data cycle at LinkedIn with Hadoop and Project Voldemort:
http://project-voldemort.com/blog/2009/06/building-a-1-tb-data-cycle-at-linkedin-with-hadoop-and-project-voldemort/
Voldemort开源:
http://project-voldemort.com/
使用terracott作为Hibernate二级缓存
后的测试结果,非常让人惊喜。
http://tech.puredanger.com/2009/07/22/terracotta-hibernate-cache-tooling/
Memcached属于一种集中式的分布式结构,当某一台服务器宕掉以后,宕掉的这台服务器缓存 内容就丢失。Terractto不知道是怎么做的?缓存内容在多个JVM中重复保存?还是配对复制,还是其它的?
terracotta采取的是内存矩阵,通过对JVM的Heap进行复制实现共享,可以认为是一种分布式JVM,不存在单点风险,是真正的集群
式的分布式缓存
,常用于云计算
之中。
唯一所谓缺点就是用Java编制,但这也不是缺点,你做一个Java接口就可以,因为memcached面向应用也是一个接口。
昨天一篇文章:FACEBOOK'S MEMCACHED MULTIGET HOLE: MORE MACHINES != MORE CAPACITY
提出:Facebook在2008年已经有超过800台memcached服务器,他们已经发现了memcached存在的一些问题,他们称为Multiget Hole。
出乎意料之外的是,增加memcached服务器并不能增加处理容量。这就象在一个洞里,通过简单增加服务器并不能把你挖出来。
解决multiget hole一个方式就是复制,因为本质是缺少CPU处理能力,需要更多CPU来处理,创造两组服务器,每组有两个memcached,前面再加一个负载平衡器,每个服务器只能得到一半的请求,这样就只做一半工作。
CTO Ari Zilka Says Terracotta is Fast
Ari
Zilka, the CTO of Terracotta, 自己宣布在和市场上 Memcache, JBoss cache,
和来自大型公司比如 Oracle 和
IBM比较和,Terracotta的性能是最好的。他说:比他们每一个都提高3到10倍速度,如果使用3.2版本则大概比当前Terracotta要快
4倍。
这个测试是基于Spring PetClinic 应用做出的,但是好像没有看到准确测试报告,Java领域最好单机缓存
EHCache被Terracotta收购后,将于1.7版本推出整合了Terracotta的分布式缓存
。
采取CQRS命令和查询分离策略
,Memcached和terracotta在读query架构中,当有命令command进来改变模型状态时,发出事件通过事件总线更新读架构中缓存
。
如果你无法进行清晰的读写分离,直接使用Key-value存储,因为象Tokyo Cabinet 和Tyrant 这些产品,内部已经考虑了如何进行分布式环境一致性更新的问题,不用应用者考虑,很方便。
是的,保存的是聚合根,根据ID找那个聚合根实体对象即可。
因
为是聚合根,必然聚合了很多其他子对象,不能将整个聚合对象群都在分布式服务器之间拷贝,这和关系数据库带有关系数据复制就类似了,效率
差,terracotta的更新策略就比较智能,而memcache则没有提供智能更新策略,它的使用策略是,将数据库数据都装进来,反正没有资源限制。
Memcached使用上主要考虑如下问题:
1、脏数据更新,几乎所有应用了缓存
的场合都需要考虑这个问题
2、down掉一台机后,命中率问题
1的话各有各的解决办法,2尽量采用圆周算法
最近总结:
比较这两个缓存
,还是要从CAP定律
角度来考虑。
MC就只是一个缓存
,可以把MC和Java中的Ehcache比较,MC之间没有数据复制替换,对付负载平衡的方式就是用HASH圆圈,减少影响面,粗一看,似乎很粗糙,但是有大道至朴的因素在里面,这样我们可以基于CAP定律来自己设计适合我们应用的缓存
架构。比如你可以实现BASE架构。降低一致性要求,提高性能可用性。
而兵马俑设计则比MC要进一步,它是由兵马俑自己来实现CAP定律,比如实现状态在所有机器中复制,一致性很好,低延迟,这个方向其实是数据库或内存数据库的方向,但是如果你需要复制的状态数据很多,可用性就不是很好。这是一种非透明化的方案。
这两个方案可以综合使用在CQRD架构
中,使用MC或Ehcache来实现分布式查询;而使用兵马俑来实现状态分布式,但是机器不宜多。
最新消息,Terracotta和Eucalyptus整合,提供基于兵马俑的应用程序可以无缝运行在云环境中:
Terracotta and Eucalyptus Integration Provides Data Management and Elastic Provisioning in the Cloud
最新消息:Ehcache和MemCache性能比较测试
:memcache在存取数据上慢于ehcache一点,而查询获取上快了那么一点点。无论如何Memcache是C语言,而Ehcache是Java。
Memcache and SpyMemcache Client
10000 sets: 3396ms
10000 gets: 3551ms
10000 getMulti: 2132ms
10000 deletes: 2065ms
Ehcache 0.9 with Ehcache 2.0.0
10000 puts: 2961ms
10000 gets: 3841ms
10000 deletes: 2685ms
发表评论
-
Terracotta收购Ehcache
2010-11-03 21:54 1038原文 http://www.infoq.com/cn/news ... -
Terracotta大规模吞吐测试
2010-11-03 21:52 1174原文 http://www.jdon.com/jivejdo ... -
Terracotta放弃Java垃圾回收机制,使用BigMemory
2010-11-02 22:41 1507原文 http://qmkemail.iteye.com/ad ... -
通过 Terracotta实现基于Tomcat的Web应用集群
2010-10-17 17:05 992原文 http://blog.csdn.net/lima01/ ... -
Quartz与Terracotta的集成
2010-10-17 17:03 877原文 http://blog.csdn.net/lim ... -
Terracotta服务器的不同配置方式
2010-10-17 16:59 909原文 http://blog.csdn.net/lim ... -
Terracotta 3.2.1简介 (三)
2010-10-17 16:56 871原文 http://blog.csdn.net/lima01/ ... -
Terracotta 3.2.1简介 (二)
2010-10-17 16:55 921原文 http://blog.csdn.net/lima01/ ... -
Terracotta 3.2.1简介 (一)
2010-10-17 16:54 1074原文 http://blog.csdn.net/l ... -
Terrocotta - 基于JVM的Java应用集群解决方案
2010-10-17 16:30 1364原文 http://blog.csdn.net/lima01/ ...
相关推荐
主要在开发过程中针对memcached和redis选用时进行比较
它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过...
它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过...
在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装 3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动...
memcached 和 activeMQ 的入门级示例代码,JAVA eclipse工程
文件详细描述了Memcached相关原理和使用方法,内容包括:Memcached原理介绍、Memcached安装和使用说明、Memcached使用的技巧等。
memcached和spring集成、内附测试例子
memcached 64位 window memcached 64位 window memcached 64位 window
Memcached 原理和使用详解
memcached, libevent, MemCachedClient
资源名称:memcached原理和使用详解内容简介: Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库...
TTServer经过两年左右的发展,目前成为应用很广的NoSQL存储方案。性能好,有复制功能、代码量小,容易吃透,在key-value数据存储领域很有优势。 hash方式结合复制功能,数据安全性较高,运行稳定。...
详细介绍安装Memcached及Memcached配置
memcached版本:memcached-1.5.2.tar.gz libevent版本:libevent-2.0.22-stable.tar.gz 依赖包:java_memcached-release_2.6.3.jar等
安装Memcached及Memcached配置
中文名: Apache, MySQL, memcached和Perl开发Web应用程序 原名: Developing Web Applications with Apache, MySQL, memcached, and Perl 作者: Patrick Galbraith资源格式: PDF 版本: 文字版 出版社: Wrox书号: ...
memcached安装软件 libevent-2.0.21-stable.tar.gz magent.tar.gz memcached-1.4.15.tar.gz
memcached是分布式高效内存对象缓存系统
python-memcached python-memcached