BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

使用EhCache Server部署1TB缓存

| 作者 Gavin Terrill 关注 1 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2008年9月3日. 估计阅读时间: 5 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT