Hazelcast - 简介



分布式内存数据网格

数据网格是分布式缓存的超集。分布式缓存通常仅用于存储和检索跨缓存服务器分布的键值对。但是,数据网格除了支持存储键值对之外,还支持其他功能,例如:

  • 它支持其他数据结构,如锁、信号量、集合、列表和队列。

  • 它提供了一种通过丰富的查询语言(例如 SQL)查询存储数据的途径。

  • 它提供了一个分布式执行引擎,有助于并行操作数据。

Hazelcast 的优势

  • 支持多种数据结构 - Hazelcast 支持除了 Map 之外使用多种数据结构。一些示例包括 Lock、Semaphore、Queue、List 等。

  • 快速读写访问 - 鉴于所有数据都在内存中,Hazelcast 提供了非常高速的数据读写访问。

  • 高可用性 - Hazelcast 支持跨机器分布数据,并额外支持备份。这意味着数据不会存储在单个机器上。因此,即使机器出现故障(这在分布式环境中经常发生),数据也不会丢失。

  • 高性能 - Hazelcast 提供了可用于在多台工作机器之间分配工作负载/计算/查询的构造。这意味着计算/查询使用来自多台机器的资源,从而大大减少了执行时间。

  • 易于使用 - Hazelcast 实现并扩展了许多 java.util.concurrent 构造,这使得它非常易于使用和集成到代码中。在机器上开始使用 Hazelcast 的配置只需将 Hazelcast jar 添加到我们的类路径中。

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

将 Hazelcast 与其他缓存(如 Ehcache、Guava 和 Caffeine)进行比较可能没有多大用处。这是因为,与其他缓存不同,Hazelcast 是一个分布式缓存,也就是说,它将数据分布在机器/JVM 上。虽然 Hazelcast 也可以在单个 JVM 上很好地工作,但它在分布式环境中更有用。

类似地,将它与 MongoDB 等数据库进行比较也没有多大用处。这是因为 Hazelcast 主要将数据存储在内存中(尽管它也支持写入磁盘)。因此,它提供了高读写速度,但数据需要存储在内存中的限制。

Hazelcast 还支持缓存/存储复杂数据类型并提供查询它们的接口,这与其他数据存储不同。

但是,可以与Redis进行比较,Redis 也提供了类似的功能。

Hazelcast 与 Redis 的比较

在功能方面,Redis 和 Hazelcast 非常相似。但是,以下是 Hazelcast 在 Redis 上得分更高的几点:

  • 从一开始就构建用于分布式环境 - 与最初作为单机缓存的 Redis 不同,Hazelcast 从一开始就构建用于分布式环境。

  • 简单的集群扩展/缩容 - 在 Hazelcast 中,维护一个添加或删除节点的集群非常简单,例如,添加节点只需启动具有所需配置的节点即可。删除节点需要简单地关闭节点。Hazelcast 自动处理数据的划分等。在 Redis 上拥有相同的设置并执行上述操作需要更多预防措施和手动操作。

  • 支持故障转移所需的资源更少 - Redis 遵循主从方法。为了进行故障转移,Redis 需要额外的资源来设置Redis Sentinel。这些 Sentinel 节点负责在原始主节点出现故障时将从节点提升为主节点。在 Hazelcast 中,所有节点都被视为平等的,其他节点检测到节点故障。因此,节点出现故障的情况处理得非常透明,而且无需任何额外的监控服务器集。

  • 简单的分布式计算 - Hazelcast 通过其EntryProcessor提供了一个简单的接口,用于将代码发送到数据以进行并行处理。这减少了网络上的数据传输。Redis 也支持这一点,但是实现这一点需要了解 Lua 脚本,这增加了额外的学习曲线。

广告