RealWorld HazelCast

时间:2010-11-22 22:21:32

标签: java datagrid replication cluster-computing hazelcast

有没有人对Hazelcast分布式数据网格和执行产品有任何实际经验?它对你有用吗?它有一个非常简单的API和功能,对于这样一个简单易用的工具来说似乎很不错。我做了一些非常简单的应用程序,它似乎像目前为止宣传的那样工作。所以我在这里寻找现实世界的'现实检查'。谢谢。

7 个答案:

答案 0 :(得分:11)

我们自1.8+版以来一直在生产中使用它,主要使用分布式锁定功能。它工作得很好,我们发现了一些变通方法/错误,但是它们的修复速度相对较快。

每天有1.8M的锁,到目前为止我们没有发现任何问题。

我建议开始使用版本1.9.4.4。

答案 1 :(得分:9)

其发展仍存在一些问题,
http://code.google.com/p/hazelcast/issues/list
通常,您可以选择让它使用自己的多播算法,也可以指定自己的ip。我们在局域网环境中尝试过,它运行良好。性能方面也不错,但监控工具效果不佳,因为大部分时间都无法更新。如果你可以忍受当前的问题那么所有的意思都是为了它。我会谨慎使用它,但它是一个很棒的工具恕我直言。

更新: 我们已经使用Hazelcast几个月了,而且效果非常好。这些设置相对容易设置并且具有新的更新,非常全面,可以自定义甚至很小的内容,例如读/写操作中允许的线程数。

答案 2 :(得分:7)

我们正在使用Hazelcast(现在的1.9.4.6)与复杂的交易服务集成的生产。添加它是为了缓解即时数据库吞吐量问题。我们发现,我们经常不得不停止将所有交易服务降低至少一个小时。我们以超级客户端模式运行客户端,因为它是唯一可以远程满足我们的性能要求的选项(比本机客户端快4倍。)不幸的是,停止超级客户端节点会导致大脑分裂问题并导致网格丢失记录,从而导致完整关闭服务。我们一直在努力让这个产品为我们工作近一整年,甚至付钱让2名淡淡的代表飞来帮忙。他们无法提供解决方案,但能够让我们知道我们可能做错了。在他们看来它应该更好,但这几乎是一个浪费的旅行。

此时我们已经处理了每年超过6个数字的许可费用,我们目前正在使用大约5倍的资源来保持网格活跃并满足我们的性能需求,而不是使用群集和优化数据库堆栈。这对我们来说绝对是错误的决定。

这个产品让我们失望。谨慎使用,谨慎使用,仅限于简单的服务。

答案 3 :(得分:2)

如果我自己的公司和项目算作现实世界,这是我的经验。我希望尽可能地消除外部(磁盘)存储,转而采用无限且持久的“RAM”。对于那些消除CRUD管道的初学者来说,有时占据了所谓的“中间层”的90%。还有其他好处。由于RAM是您的“数据库”,因此您不需要任何复杂的缓存或HTTP会话复制(这反过来又消除了丑陋的粘性会话技术)。

我相信RAM是未来,Hazelcast拥有一切内存数据库:查询,交易等。所以我写了一个迷你框架来抽象它:从持久存储加载数据(我可以插入任何东西可以存储BLOB - 最快的结果是MySQL)。解释为什么我不喜欢Hazelcast的内置持久性支持这太长了。这是相当普遍和基本的。他们应该删除它。实现您自己的分布式和优化的后写和直写并不是火箭科学。花了我一个星期。

在我开始进行性能测试之前一切都很好。查询很慢 - 在我完成的所有优化之后:索引,便携式序列化,显式比较器等。索引字段上的简单“大于”查询在60K的1K记录集(映射条目)上花费30秒。我相信Hazelcast团队尽其所能。尽管我不愿意这样说,但与正常数据库使用的超级优化C ++代码相比,Java集合仍然很慢。有一些开源Java项目可以解决这个问题。但是,此时查询持久性是不可接受的。它应该是一个本地实例上的即时消息。毕竟,它是一种内存技术。

我切换到Mongo获取数据库,但是将Hazelcast留给了共享的运行时数据 - 即会话。一旦他们提高了查询性能,我就会切换回来。

答案 4 :(得分:0)

如果你有替代hazelcast可能先看看这些。我们已经在运行生产模式,它仍然是非常错误,只是检查未解决的问题。 但是,与Spring,Hibernate等的集成非常好,并且设置非常简单:)

答案 5 :(得分:0)

我们在电子商务应用程序中使用Hazelcast以确保我们的库存一致。

我们大量使用分布式锁定来确保SKU库存项目以原子方式进行修改,因为我们的Web应用程序集群中有数百个节点同时对这些项目进行操作。

此外,我们使用分布式映射进行缓存,并在所有节点之间共享。由于Hazelcast中的扩展节点非常简单并且它利用了所有CPU核心,因此它比redis或任何其他缓存框架具有更多优势。

答案 6 :(得分:0)

我们在电子商务应用程序中使用了过去3年的Hazelcast,以确保可用性(供应和需求)是一致的,原子的,可用的和可扩展性。 我们使用IMap(分布式地图)来缓存数据,并使用Entry Processor进行读取和读取。编写操作以在IMap上执行快速内存操作,而无需担心锁定。