InfoQ

新闻

使用EhCache Server部署1TB缓存

作者 Gavin Terrill 译者 张龙 发布于 2008年9月2日 上午7时22分

社区
Architecture,
Java
主题
集群与缓存,
REST
标签
缓存,
JSR 311

EhCache小组的Greg Luck在8月初宣布了针对缓存的SOAP和RESTful APIs。正如文档所述:

Ehcache现在已经有了一个Cache Server,它以两种形式出现:适合大多数Web容器的WAR以及独立的服务器。Cache Server有两种类型的API:面向资源的RESTful以及SOAP。这两种API都支持任何编程语言。

在随后的一个帖子中,Greg简述了部署1TB缓存理论上的方式:

最大的Ehcache单实例在内存中可以缓存20GB。最大的磁盘可以缓存100GB。我们可以将节点整合在一起,这样缓存数据就可以跨越节点,以此获得更大的容量。将缓存20GB的50个节点整合在一起就是1TB了。

第一种、也是最简单的方式就是装配运行着Ehcache Server的几个节点,然后让客户端根据对象的Hashcode来决定使用哪个Server:

String[] cacheservers = new String[]{"cacheserver0.company.com", "cacheserver1.company.com", "cacheserver2.company.com", "cacheserver3.company.com", "cacheserver4.company.com", "cacheserver5.company.com"};
Object key = "123231";
int hash = Math.abs(key.hashCode());
int cacheserverIndex = hash % cacheservers.length;
String cacheserver =cacheservers[cacheserverIndex];

我们使用一个负载均衡器(load balancer)来支持冗余,每个节点运行两个Ehcache Server实例,通过使用现有的分布式缓存方案(RMI或者JGroups)支持节点之间的数据复制。在这种方式下,客户端依旧使用Hashcode来决定使用哪个Server,但是现在我们可以在负载均衡器所分配的虚拟IP后透明地处理失败。

Greg谈到的第三种方式就是转换职责以将请求路由给负载均衡器。

EhCache Server的RESTful版基于Jersey——JSR 311参考实现。Jersey的开发者之一Paul Sandoz谈到了如何使用Jersey的客户端API以访问缓存来创建并得到一个示例XML文档:

// retrieving a node
Node n = r.accept("application/xml").get(DOMSource.class).getNode();
// creating a node
String xmlDocument = "...";
Client c = Client.create();
WebResource r = c.resource(http://localhost:8080/ehcache/rest/sampleCache2/2);
r.type("application/xml").put(xmlDocument);

那么RESTful缓存适合于哪种场景呢?James Webster说已经有越来越多的大公司采取这种架构方式了:

我注意到一些投资银行所采取的架构模式就是一种分布式的内存缓冲,该缓存由RESTful的前端通过HTTP来访问,以得到市场数据(如股票价格、利率曲线,或者诸如表面波动和相互关系之类的引伸价值)和静态数据(如对等细节、结算拖欠)。我们可以“轻松”扩展该分布式缓存以容纳大量数据集,同时前端也允许用其他方式访问数据,只要客户端能访问HTTP就行。

正如James指出的那样,我们想要看看厂商(如OracleGigaspaces)到底要花多久才能在其产品中支持RESTful接口。

查看英文原文:Deploying a 1 Terabyte Cache using EhCache Server

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。