RealWorld HazelCast

30

有没有人对Hazelcast分布式数据网格和执行产品有实际应用经验?你使用它的效果如何?它有一个令人惊讶地简单的 API 和功能,对于这样一个易于使用的工具来说,似乎太好了。我已经做了一些非常简单的应用程序,到目前为止它似乎就像广告中所描述的那样工作。所以,我在这里寻求现实世界的“实际检验”。谢谢。

7个回答

11

自从版本1.8+起,我们一直在生产环境中使用它,主要使用分布式锁定功能。 它运行良好,我们发现了一些解决方法/错误,但这些问题被相对快速地解决了。

截至目前为止,每天有180万个锁定,我们没有发现任何问题。

我建议开始使用版本1.9.4.4。


9

该开发仍存在一些问题,
http://code.google.com/p/hazelcast/issues/list
通常,您可以选择让它使用自己的组播算法或指定自己的IP。我们在局域网环境中尝试过,效果还不错。性能方面还不错,但监控工具并没有很好地工作,大多数时候都无法更新。如果您可以接受当前存在的问题,则可以尝试使用它。我认为这是一个非常好用的工具,但需要谨慎使用。

更新: 我们已经使用Hazelcast几个月了,它运行得非常好。设置相对容易进行,并且通过新的更新,足以自定义诸如读/写操作中允许的线程数之类的小细节。


7
我们目前在生产过程中使用Hazelcast (1.9.4.6)与复杂的事务服务相结合。它被添加以缓解即时数据库吞吐量问题。我们发现我们经常不得不停止它至少一个小时,导致所有交易服务都崩溃。我们正在以超级客户端模式运行客户端,因为这是唯一一个远远达到我们性能要求的选项(大约比本地客户端快4倍)。不幸的是,停止超级客户端节点会导致拆分脑问题,并导致网格丢失记录,迫使完全关闭服务。我们已经试图让这个产品为我们工作了近一年时间,甚至支付了两个Hazelcast代表前来协助。他们无法提供解决方案,但能够让我们知道我们可能在做错了。在他们看来,它应该工作得更好,但基本上是一次浪费的旅行。
在这一点上,我们需要支付六位数的许可费用,并且我们当前需要使用五倍的资源来保持网格的活力并满足我们的性能需求,而如果使用集群和优化的数据库堆栈,我们只需要使用原来的资源量。这对我们来说绝对是错误的决定。
这个产品正在消耗我们。请谨慎使用,仅适用于简单的服务。

1
你解决了吗?你是通过隔离问题还是转向另一种技术来解决的?你提到的许可费是多少?我认为azelcast的核心是免费的。 - David Roussel
7
这个你看到了什么的老笑话。 - Crowie
@james,鉴于这个答案是很久以前给出的,Hazelcast现在的情况如何?您是否能够通过新版本解决问题,还是使用了其他解决方案?很有趣,希望能知道。 - frewper

2
如果我的公司和项目算作真实世界的话,这就是我的经验。我想尽可能地接近消除外部(磁盘)存储,取而代之的是无限和持久的“RAM”。首先,这会消除 CRUD 管道,这有时占据了所谓“中间层”的 90%。还有其他好处。由于 RAM 是您的“数据库”,因此您不需要任何复杂的缓存或 HTTP 会话复制(从而消除了丑陋的黏性会话技术)。
我相信 RAM 是未来,而 Hazelcast 拥有成为内存数据库所需的一切:查询、事务等。因此,我编写了一个迷你框架来抽象它:从持久存储中加载数据(我可以插入任何可以存储 BLOB 的东西-最快的结果是 MySQL)。解释为什么我不喜欢 Hazelcast 内置的持久化支持太长了。它相当普遍和基础。他们应该去掉它。实现自己的分布式和优化的后台写和写到前面并不是什么难事。用了我一个星期。
一切都很好,直到我开始进行性能测试。查询很慢-在我所做的所有优化之后:索引、便携式序列化、显式比较器等。对于一组 60K 的 1K 记录(map entries)上的一个索引字段上的简单“大于”查询需要 30 秒。我相信 Hazelcast 团队已经尽力了。尽管我不愿意承认,但与超级优化的 C++ 代码普通数据库相比,Java 集合仍然很慢。有一些开源的 Java 项目可以解决这个问题。但是,在此时期,查询持久性是无法接受的。它应该在单个本地实例上立即完成。毕竟,这是一种内存技术。
我改用 Mongo 作为数据库,但将 Hazelcast 用于共享运行时数据-即会话。一旦他们提高查询性能,我就会切换回来。

我现在正在评估Ignite(http://apacheignite.readme.io/docs/overview)。它具有与Hazelcast相同的功能-至少是我需要的那些。 我会在一周内告诉你。 - Alex Rogachevsky
1
一个简单的索引字段上的“大于”查询在60K个1K记录(映射条目)集合上需要30秒。这个数据是如此不真实和错误,以至于在任何良好的性能分析过程中都应该引起警惕。它看起来非常可怕,我会问一些问题,比如:“为什么那么多人还在使用它?”或者“为什么网络上有那么多关于毫秒延迟和每秒100k插入阈值的性能测试?”最终,我会开始质疑我的测试的有效性。 - Gergely Bacso

0

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

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

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


0

如果你有其他的选择,可以先看看这些。我们正在生产环境中使用它,但仍然存在一些问题,请查看开放问题。 不过,与Spring、Hibernate等的集成非常好,设置也非常容易 :)


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接