1_Hazelcast 概述

Hazelcast 概述

官方文档

Hazelcast 是一个分布式计算和存储平台,用于对事件流和传统数据源进行一致性低延迟查询、聚合和有状态计算。它允许你快速构建高效、实时的应用程序。你可以将它部署在任何规模的设备上,从小型边缘设备到大型云实例集群。

Hazelcast 可以将一组网络化和集群化的计算机上的内存(RAM)连接到一起用于处理数据,让集群中运行的应用程序可以通过 Hazelcast 共享数据。当数据存储在 RAM 中时,应用程序运行速度更快,因为它不需要从磁盘中检索并放入 RAM 中进行处理。使用 Hazelcast,你可以在 RAM 中进行数据存储和处理,同时数据在集群中的扩展和复制使你对集群成员的故障具有弹性。

Hazelcast 使用 Java 语言实现,并且具有 Java、C++、.NET、REST、Python、Go 和 Node.js 客户端。Hazelcast 还支持 Memcached 和 REST 协议。

你的云原生应用程序可以轻松使用 Hazelcast。它足够灵活,可以作为开箱即用的数据和计算平台,也可以作为自己的云原生应用程序和微服务框架。

Hazelcast 的设计旨在轻量化和易于使用。由于它作为一个紧凑的库交付,因此很容易集成进你的软件解决方案中。

它被设计为可扩展到数百个成员和数千个客户端。因此当你添加新成员时,它会自动发现集群并线性增加内存和处理能力。成员之间相互保持 TCP 连接,并且所有通信都通过此层进行。每个集群成员在功能上都被配置为相同。最老的成员(集群中创建的第一个成员)会自动执行对集群成员的数据分配。如果最老的成员死亡,第二老的成员将接管。

Hazelcast 提供了简单的可扩展性、分区(分片)和重新平衡,它不需要任何额外的协调过程。相比于 NoSQL 和传统数据库难以扩展和管理,需要额外的协调和高可用性的过程。使用 Hazelcast,当你启动另一个进程以增加更多容量时,数据和数据备份会自动均衡。

注意
“节点”和“成员”是 2个可以互换的概念,它们都表示 Hazelcast 服务实例

Hazelcast 可以用来做什么?

你可以使用 Hazelcast 客户端连接集群请求数据、监听事件、提交数据处理任务。Hazelcast 提供了多种语言实现的客户端,包括 Java、.Net、C++、Node.js、Go 和 Python。它还支持 Memcache 和 REST 协议。具体请参考 Hazelcast 客户端部分。

你可以使用 SQL 或 Java API 构建数据管道,使数据从应用程序流向数据源或从数据源流向分析数据库。一个非常简单的例子是从文件中读取单词,将它们转换为全大写,并将结果输出到控制台。请参考构建数据管道部分。

你可以从数据库、文件、消息系统、本地和云系统导入各种格式的数据(数据集成)。Hazelcast 为此提供了数据管道和加载/存储数据的接口。请参考接入数据部分。

你可以在你的 Map 数据或外部系统(如 Apache Kafka)中使用 SQL 查询数据。你还可以使用 API 在 Map 数据中过滤和检索数据。请参考分布式查询部分。

你可以将计算任务分配给集群中不同的成员(分布式计算);为此,你可以使用 Pipelines(管道)、Enter Processor(提交任务) 和 Executor Service(异步任务)。请参考分布式计算部分。

你可以使用各种分布式实现的数据结构如 map、缓存、队列、主题(发布/订阅)、并发工具等存储数据。请参考分布式数据结构部分。

你可以把它作为 Hibernate 的二级缓存,存储实体、集合、查询。当然也可以作为 Spring 框架应用程序的分布式共享缓存。

你可以在不同地域部署多个 Hazelcast 集群通过 WAN 保持集群状态的同步。请参考通过 WAN 跨地域同步数据章节。

你可以在数据结构和客户端上注册事件监听,当集群中发生相应事件时通知你。请参考分布式事件章节。

请参考开发解决方案章节了解 Hazelcast 可以实现的所有场景。

下面是一些使用示例:

  • 计算交易过程中每秒的交易数和处理时间
  • 在几毫秒内对信用卡和身份授权运行多种算法,以进行欺诈检测
  • 在电商系统中减少订单处理时间降低延迟
  • 作为实时流检测应用程序性能
  • 监听经常变化的数据并发出通知,例如:用户事件、消息队列和分布式后台任务
  • 作为一个分布式消息订阅服务,用于构建可扩展的在线聊天服务
  • 基于 Hazelcast 的 CP 子系统构建并发 API的强一致性层(Hazelcast 的 CP 子系统(CAP理论)是建立在 Raft 共识算法之上)
  • 跨集群分布用户对象状态,以便在对象之间传递消息并共享系统数据结构(静态初始化状态、镜像对象、对象标识生成器)
  • 作为多租户的缓存,每个租户都有自己的数据映射
  • 共享数据集,例如,类似表格的数据结构,供应用程序使用
  • 作为 Web 应用程序中会话数据的存储(支持 Web 应用程序的水平可扩展性)

应用程序从数据源获取数据,例如数据库。这些数据加载缓慢,因为它们并不是为即时响应而设计。Hazelcast 运行在应用程序和数据源之间,并且它运行在服务器集群的内存中,它从数据源获取数据缓存到内存,并以内存的速度供应用程序查询,这使得 Hazelcast 成为一个超低延迟的解决方案。

当涉及到流数据时,这些数据来自文件、Kafka、物联网、MQ等,它们是实时生成的。Hazelcast 可以实时捕获并在集群中处理这些数据,使得 Hazelcast 可以作为一个实时处理平台。

Hazelcast的独特功能是它能够处理批处理和流数据,具有低延迟和实时,支持事务和分析处理。

体系结构概述

Hazelcast 的基本关键组件如下:

  • 成员是 Hazelcast 中的计算和存储单元。通常是 JVM 程序。
  • Hazelcast 集群是一组相互通信的成员。运行 Hazelcast 的成员会自动发现彼此,并在运行时形成集群。
  • 分区是存储部分数据的内存段。它们均匀地分布在可用的集群成员中。它们可以保存非常多的数据量,具体取决于系统的内存容量。Hazelcast 支持自动分区备份,这些备份分区也分布在集群中。这使得 Hazelcast 对数据丢失具有弹性。

Hazelcast 的流引擎专注于数据转换,同时它完成了所有繁重的工作包括获取数据流和跨集群成员运行计算。它支持处理有界数据(批处理)和无界数据流(流处理)。

Hazelcast 的存储引擎是分布式、快速和可操作的,用于处理数据的持久性。

Hazelcast 提供开箱即用的多种 Source 和 Sink。Source 是 Hazelcast 获取数据的地方,而 Sink 是 Hazelcast 处理完数据后输出的地方。Source 和 Sink 也可以看作连接器,它们提供相同的连接 API 可以非常方便快捷的读取文件,跨数据源读取数据。有关统一连接器 API 和支持的 Source 和 Sink 请参考 Source 和 Sink 部分。

posted @ 2023-08-05 09:16  wcc1433  阅读(969)  评论(0)    收藏  举报