转载

Hazelcast 简介

Hazelcast 是一种分布式 IMDG,即内存数据网格,被 Nissan、JPMorgan、Tmobile 等公司广泛应用于各行各业。 它提供了各种丰富的功能,包括用于存储键值对的分布式缓存、用于创建和使用分布式数据结构的构造,以及一种在集群中的节点之间分配计算和查询的方法。 Hazelcast 是开发需要高可扩展性、性能和可用性的应用程序的非常有用的工具。

分布式内存数据网格

数据网格是分布式缓存的超集。分布式缓存通常仅用于存储和检索分布在缓存服务器上的键值对。但是,数据网格除了支持键值对的存储外,还支持其他功能,例如
它支持其他数据结构,如锁、信号量、集合、列表和队列。它提供了一种通过丰富的查询语言(例如 SQL)查询存储数据的方法。它提供了一个分布式执行引擎,有助于并行操作数据。

Hazelcast 的好处

支持多种数据结构-Hazelcast 支持与 Map 一起使用多种数据结构。一些示例是锁、信号量、队列、列表等。快速 R/W 访问-鉴于所有数据都在内存中,Hazelcast 提供非常高速的数据读/写访问。高可用性-Hazelcast 支持跨机器分发数据以及额外的备份支持。这意味着数据不是存储在一台机器上。因此,即使机器出现故障(在分布式环境中经常发生),数据也不会丢失。高性能-Hazelcast 提供了可用于在多个工作机器之间分配工作负载/计算/查询的构造。这意味着计算/查询使用资源 fROM 多台机器,这大大减少了执行时间。易于使用-Hazelcast 实现并扩展了许多 java.util.concurrent 结构,这使得它非常易于使用和与代码集成。在机器上开始使用 Hazelcast 的配置只需要将 Hazelcast jar 添加到我们的类路径中。

Hazelcast 与其他缓存和键值存储的比较

将 Hazelcast 与 Ehcache、Guava 和 Caffeine 等其他缓存进行比较可能不是很有用。这是因为,与其他缓存不同,Hazelcast 是分布式缓存,即跨机器/JVM 传播数据。虽然 Hazelcast 在单个 JVM 上也能很好地工作,但是在分布式环境中更有用。
类似地将其与像 MongoDB 这样的数据库进行比较也没有多大用处。这是因为,Hazelcast 主要将数据存储在内存中(虽然它也支持写入磁盘)。因此,它提供了较高的 R/W 速度,但限制了数据需要存储在内存中。
Hazelcast 还支持缓存/存储复杂的数据类型,并提供查询它们的接口,这与其他数据存储不同。
不过,可以与 Redis 进行比较,它也提供类似的功能。

Hazelcast 与 Redis

在功能方面,Redis 和 Hazelcast 都非常相似。但是,以下是 Hazelcast 在 Redis 上的得分-
  • 从头开始为分布式环境构建-与作为单机缓存开始的 Redis 不同,Hazelcast 从一开始就是为分布式环境构建的。
  • 简单的集群扩展/扩展-在 Hazelcast 的情况下,维护一个添加或删除节点的集群非常简单,例如,添加一个节点是启动具有所需节点的节点的问题配置。删除节点需要简单地关闭节点。 Hazelcast 会自动处理数据的分区等。对 Redis 进行相同的设置并执行上述操作需要更多的预防措施和手动操作。
  • 支持故障转移所需的资源更少-Redis 遵循主从方法。对于故障转移,Redis 需要额外的资源来设置 Redis Sentinel。如果原始主节点出现故障,这些 Sentinel 节点负责将一个从节点提升为主节点。在 Hazelcast 中,所有节点都被平等对待,一个节点的故障会被其他节点检测到。因此,节点宕机的情况会得到非常透明的处理,而且无需任何额外的监控服务器集。
  • 简单分布式计算-Hazelcast 及其 EntryProcessor 提供了一个简单的接口来将代码发送到数据以进行并行处理。这减少了在线数据传输。 Redis 也支持这一点,但是,要实现这一点,需要了解 Lua 脚本,这会增加额外的学习曲线。
正文到此结束
Loading...