Hazelcast – 介绍

Hazelcast – 介绍


分布式内存数据网格

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

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

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

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

Hazelcast 的好处

  • 支持多种数据结构– Hazelcast 支持使用多种数据结构以及 Map。一些示例是锁、信号量、队列、列表等。

  • Fast R/W access – 鉴于所有数据都在内存中,Hazelcast 提供非常高速的数据读/写访问。

  • 高可用性– Hazelcast 支持跨机器分发数据以及额外的备份支持。这意味着数据不是存储在一台机器上。因此,即使在分布式环境中频繁发生的机器宕机,数据也不会丢失。

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

  • 易于使用– 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 从一开始就是为分布式环境构建的。

  • Simple cluster scale in/out – 在 Hazelcast 的情况下,维护添加或删除节点的集群非常简单,例如,添加节点是启动具有所需配置的节点的问题。删除节点需要简单地关闭节点。Hazelcast 会自动处理数据的分区等。对 Redis 进行相同的设置并执行上述操作需要更多的预防措施和手动操作。

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

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

觉得文章有用?

点个广告表达一下你的爱意吧 !😁