RealWorld HazelCast [关闭]
Posted
技术标签:
【中文标题】RealWorld HazelCast [关闭]【英文标题】:RealWorld HazelCast [closed] 【发布时间】:2011-05-14 03:23:36 【问题描述】:有人对Hazelcast 分布式数据网格和执行产品有任何实际经验吗?它对你有什么作用?它有一个非常简单的 API 和功能,对于这样一个简单易用的工具来说似乎几乎是真的。我已经做了一些非常简单的应用程序,到目前为止它似乎可以像宣传的那样工作。所以在这里我正在寻找现实世界的“现实检查”。谢谢你。
【问题讨论】:
【参考方案1】:我们从 1.8+ 版本开始在生产中使用它,主要使用分布式锁定功能。效果很好,我们发现了一些变通方法/错误,但修复得相对较快。
每天有 180 万个锁,到目前为止,我们没有发现任何问题。
我建议开始使用 1.9.4.4 版本。
【讨论】:
【参考方案2】:它的开发还存在一些问题,http://code.google.com/p/hazelcast/issues/list 通常,您可以选择让它使用自己的多播算法或指定您自己的 ip。我们已经在 LAN 环境中进行了尝试,效果很好。性能方面还不错,但监控工具并不能很好地工作,因为它大部分时间都无法更新。如果您可以忍受当前的问题,那么请务必去做。我会谨慎使用它,但恕我直言,它是一个很好的工作工具。
更新: 我们已经使用 Hazelcast 几个月了,它运行良好。这些设置相对容易设置,并且通过新的更新,它足够全面,可以自定义即使是很小的事情,比如读/写操作中允许的线程数。
【讨论】:
【参考方案3】:我们在生产中使用 Hazelcast(现在是 1.9.4.6)与复杂的事务服务集成。添加它是为了缓解即时的数据库吞吐量问题。我们发现我们经常不得不停止它,至少一个小时内关闭所有交易服务。我们在超级客户端模式下运行客户端,因为它是远程满足我们性能要求的唯一选项(比本地客户端快大约 4 倍。)不幸的是,停止超级客户端节点会导致脑裂问题并导致网格丢失记录,从而强制完成关闭服务。近一年来,我们一直在努力让这个产品为我们工作,甚至还花钱请了 2 名 hazelcast 代表来帮忙。他们无法提出解决方案,但能够让我们知道我们可能做错了。在他们看来,它应该工作得更好,但这几乎是一次浪费的旅行。
在这一点上,我们每年要支付超过 6 位数的许可费用,而我们目前使用的资源大约是使用集群和优化后的 5 倍来保持网格的活力并满足我们的性能需求数据库堆栈。这对我们来说绝对是错误的决定。
这个产品正在扼杀我们。谨慎、谨慎地使用,并且仅用于简单的服务。
【讨论】:
您解决了吗?您是隔离了问题,还是转向了另一种技术?你提到的许可费是多少? azelcast 的核心是免费的,我想。 老what did you see笑话 @james,鉴于这个答案是很久以前给出的,Hazelcast 目前的情况如何。您是否能够使用较新的版本解决您的问题,或者您是否使用其他解决方案。知道会很有趣。【参考方案4】:如果我自己的公司和项目算作现实世界,这是我的经验。我想尽可能地消除外部(磁盘)存储,以支持无限和持久的“RAM”。对于消除 CRUD 管道的初学者来说,CRUD 管道有时占所谓的“中间层”的 90%。还有其他好处。由于 RAM 是您的“数据库”,因此您不需要任何复杂的缓存或 HTTP 会话复制(这反过来又消除了丑陋的粘性会话技术)。
我相信 RAM 是未来,Hazelcast 具备成为内存数据库的一切:查询、事务等。所以我写了一个迷你框架来抽象它:从持久存储加载数据(我可以插入任何可以存储 BLOB——最快的是 mysql)。解释为什么我不喜欢 Hazelcast 的内置持久性支持太长了。这是相当通用和基本的。他们应该删除它。实现自己的分布式和优化后写和直写并不是火箭科学。花了我一个星期。
在我开始性能测试之前一切都很好。查询很慢——在我做了所有优化之后:索引、便携式序列化、显式比较器等。对索引字段的简单“大于”查询在 60K 的 1K 记录(映射条目)上需要 30 秒。我相信 Hazelcast 团队已尽其所能。尽管我不想这么说,与普通数据库使用的超级优化 C++ 代码相比,Java 集合仍然很慢。有一些开源 Java 项目可以解决这个问题。但是此时查询持久性是不可接受的。它应该在单个本地实例上是即时的。毕竟这是一种内存技术。
我切换到 Mongo 用于数据库,但离开 Hazelcast 用于共享运行时数据 - 即会话。一旦他们提高了查询性能,我就会切换回来。
【讨论】:
我现在正在评估 Ignite (apacheignite.readme.io/docs/overview)。它具有与 Hazelcast 相同的功能 - 至少是我需要的功能。我会在一周内通知你。 在 60K 的 1K 记录(映射条目)的集合上,对索引字段的简单“大于”查询需要 30 秒。 这个数据非常不切实际,以至于在任何体面的性能分析中,它都应该引起注意。它看起来太可怕了,以至于我会问这样的问题:“为什么这么多人使用它?” / 为什么网上有这么多性能测试讨论毫秒延迟和每秒 10 万次插入的阈值?” 最后我会开始质疑我自己测试的有效性。【参考方案5】:如果您有 hazelcast 的替代品,不妨先看看这些。我们有它在运行生产模式,它仍然有很多错误,只需检查未解决的问题。 但是,与 Spring、Hibernate 等的集成非常好,而且设置非常简单:)
【讨论】:
【参考方案6】:我们在电子商务应用程序中使用 Hazelcast 以确保我们的库存保持一致。
我们广泛使用分布式锁定来确保以原子方式修改库存的 SKU 项目,因为我们的 Web 应用程序集群中有数百个节点同时对这些项目进行操作。
此外,我们使用分布式地图进行缓存,这些地图在所有节点之间共享。由于 Hazelcast 中的扩展节点非常简单,而且它利用了所有的 CPU 内核,因此它比 redis 或任何其他缓存框架更具优势。
【讨论】:
【参考方案7】:我们在电子商务应用程序中使用了过去 3 年的 Hazelcast,以确保可用性(供需)是一致的、原子的、可用的和可扩展的。 我们使用 IMap(分布式映射)来缓存数据,并使用 Entry Processor 进行读写操作,以便在 IMap 上进行快速的内存操作,而无需担心锁。
【讨论】:
以上是关于RealWorld HazelCast [关闭]的主要内容,如果未能解决你的问题,请参考以下文章