BT

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

开源数据网格平台Infinispan访谈

| 作者 Mark Little 关注 13 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2009年6月3日. 估计阅读时间: 7 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

在这个虚拟访谈中,我们有幸邀请到了JBoss CacheInfinispan的项目经理Manik Surtani(以下简称MS)一起探讨关于Infinispan的方方面面。

InfoQ:请简单说说Infinispan到底是干什么的?

MS:Infinispan是个开源的数据网格平台。它公开了一个简单的数据结构(一个Cache)来存储对象。虽然可以在本地模式下运行Infinspan,但其真正的价值在于分布式,在这种模式下,Infinispan可以将集群缓存起来并公开大容量的堆内存。这可比简单的复制强大的多,因为它会为每个结点分配固定数量的副本——服务器故障的一种恢复手段——同时还提升了可伸缩性,这是由于存储每个结点所需的工作量是与集群大小息息相关的。

InfoQ:这又为开发者带来了什么呢?

MS:Infinispan提供了一种简单的机制来利用大容量的堆内存。如果对每个结点维护一个拷贝,假如集群当中有100个结点,每个结点分配2GB的堆内存,那么网格中的任何实例都能使用多达100GB的空间,这可都是内存,显然速度会非常快。同时Infinispan还兼容于JTA,这样它就能很好地处理事务了。我们还有一个超级强大的异步API,它可以保证同步的网络调用以及异步调用的并行性及可伸缩性。比方说:
Future f = cache.putAsync(k, v)
可以阻塞线程,再调用f.get()可以让网络调用继续进行或是忽略掉f。更为重要的是,线程还可以做别的事情,这一点非常有用。然后再回来通过调用f.get()来检查该网络调用是否能继续进行。可以将其看作是NIO与传统的阻塞性IO之间的关系。

InfoQ:能否谈谈持久化呢?

MS:Infinispan公开了一个CacheStore接口和几个高性能的实现,包括JDBC CacheStores、基于文件系统的CacheStores以及Amazon S3 CacheStores等等。CacheStores可用作“温启动(warm starts)”或是确保网格中的数据在重启后依然可用,同时在内存耗尽时还能将数据写到磁盘上。

InfoQ: 你觉得Infinispan与其他产品的不同之处在于哪呢?

MS:大多数的开源产品在使用上都有很多限制,要么集群数量太少,没有提供数据分发功能、要么没有提供一个完整的平台。同时Infinispan和一些私有产品间也存在着一些明显差异,而且据我所知,Infinispan的异步API是独一无二的。

InfoQ:该项目的动机又是什么呢?

MS:到现在为止,我已经担任了几年的JBoss Cache项目经理,在这期间看到大家对开源数据网格平台的需求与日俱增。我最抱怨的事情就是商业产品太贵了而且还不开源,而开源的产品无论在API、可用性、性能、稳定性以及可伸缩性方面都不尽如人意,当然也包括JBoss Cache。因此构建JBoss Cache的下一代产品(提供更加广阔的应用领域)就成为我们的目标了。

InfoQ:有没有什么东西是只能用在其他的JBoss项目中的,换句话说,我能否将其用在其他地方呢?

MS:只要有兼容于Java 5的JVM就行了。因为是基于LGPL协议,因此可以用在商业及OEM产品中。

InfoQ:什么是数据网格?它与云的区别是什么?

MS:我觉得云的含义是指计算机资源的按需供应,包括存储、处理器、操作系统及内存等等。目前流行用虚拟化的方式来使用它。数据网格超越了服务的概念,是内存与服务器的统一体。通常将数据网格部署在云上。

InfoQ:什么情况下应该使用网格,什么情况下不应该使用?

MS:只要在数据库成为无法忍受的瓶颈时——在进行扩展时很容易出现这种情况,就来用数据网格吧:-)。数据网格的可伸缩性非常棒。此外,如果使用计算网格并行处理任务,通常也需要一个数据网格来为其提供清理状态。虽然我看到过有人用数据网格进行消息传递,但显然这么做是不合时宜的,这会给结点带来不必要的压力。如果需要分布式的工具进行消息传递,采用JMS吧,这是其最佳的应用场合了。

InfoQ:Infinispan与JSR-107和JBoss Cache的关系如何?

MS:Infinispan的Cache接口的开发是遵照JSR-107规范进行的,因此它兼容于当前的规范,它还实现了JSR-107所有可选的部分,包括兼容于JTA和集群。Infinispan与JBoss Cache没啥关系——除了一些设计特性,还有一些可重用的类是从那里摘抄过来的。基本上来说Infinispan是个全新的事物。

InfoQ:Infinispan需要运行在集群中么?

MS:不需要。它还是一个可运行在本地模式下的高性能缓存。我们已经实现了高质量的并发容器算法,只需很少的互斥体(mutex)如锁和同步块。Infinispan可以在多CPU及多核服务器上处理高并发操作。同时逐出(eviction)算法也在高并发的环境下具有良好的表现。

InfoQ:Infinispan的路线图中还有哪些新玩意?

MS:除了上面提到的那些以外我们还会增加不少新特性。大家可以看看Infinispan项目主页上的路线图以了解详细信息,这里我打算谈谈其中两个激动人心的特性。

  • 路线图中包含了一个基于NIO的服务器模块。它采用了两种协议:一个是兼容于memcached的RESTful协议,另一个是客户化的二进制协议。凭借第一个协议,任何现有的memcached客户端(在任何平台使用任何语言编写)都能与Infinispan协同工作,这样Infinispan的使用就不再局限于Java了。第二个协议包含了一些额外信息,比如服务器集群拓扑和一致的hash函数等,这样一些能够处理负载平衡与失败恢复的“智能客户端”就可以使用该协议了。我们已经为其提供了一个Java客户端,我希望看到其他平台上也能涌现出更多的客户端。
  • 路线图中还包含一个超级强大的Query API。我们可以对缓存状态加索引,这样就能搜索整个网格了。通常这都是并发行为,因为每个结点都会在其本地的缓存状态上接收并执行查询,最后返回结果。恩,这有点像Map/Reduce:-)。

InfoQ:Manik,非常感谢你抽时间接受我们的采访。大家可以访问Infinispan的项目主页以了解更多信息。

查看英文原文:Infinispan Interview

评价本文

专业度
风格

您好,朋友!

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

获得来自InfoQ的更多体验。

告诉我们您的想法

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

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

infinispan很多bug by 阿 海

infinispan很多bug

允许的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通知我

1 讨论

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


找回密码....

Follow

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

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

Like

内容自由定制

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

Notifications

获取更新

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

BT