Apache Ignite 3
Apache Ignite 3 是 Apache Ignite 的下一代版本,产品从里到外进行了重新设计和开发,将其带入互联网络和快节奏、快速扩展环境的新时代。本章节将介绍和Ignite 2 相比的主要改进。
1.主要改进
Ignite 的主要功能已经过重新设计,以更好地与最常见的使用场景保持一致。
1.1.简化的表
在 Ignite 2 中,数据以二进制对象格式存储在缓存
中。为了避免 SQL 和其他 API 中的差异,Ignite 3 已更改为同时直接处理 SQL 和键值 API。因此数据现在存储在表
中。
由于 Ignite 2 中数据的存储方式,同一份存储由具有单独模式的多个对象表示。这可能会导致配置关系时出现问题,并可能导致数据一致性问题。在 Ignite 3 中,所有对象都映射到相同的模式。这样,无论存储什么以及目标是什么,都只有一个交互点和统一的 API。
1.2.可扩展和完整的事务支持
在 Ignite 2 中支持事务需要更改缓存的原子性模式,并且以牺牲缓存性能为代价。事务配置同样麻烦,需要正确的并发和隔离配置才能获得最佳结果。Ignite 3 中的事务支持得到了极大的改进:
- 所有表默认都是事务性的,对性能没有重大影响;
- SQL和键值API都支持事务;
- 所有事务都是基于 MVCC 的,确保没有死锁;
- 所有事务都是可序列化的;
- 引入了新的只读事务,不需要对数据进行锁定。
1.3.更简单的数据并置和分布
Ignite 2 有多种方式来处理集群中的数据分布 - 数据关联、备份配置、基线拓扑等。需要的配置可能很难找到,并且很难理解配置是如何相互交互的。Ignite 3 将与数据分布相关的所有属性合并到分发区中。在分布区的配置中,可以设置存储数据的方式和位置。数据关联也与分布区绑定,只需指定要作为数据关联依据的键即可。
Ignite 3 删除了自定义关联函数,而是使用约会哈希算法来可靠地提供一致的数据分布。与 Ignite 2 不同,开发者现在无法创建自定义关联函数。自定义关联函数虽然功能强大,但自定义实现的一个小问题都可能导致安全性和稳定性风险。相反,以前需要自定义关联性的大多数场景现在都可以通过分布区安全可靠地处理。
2.更好的客户端
Ignite 3 摒弃了胖客户端的概念,仅提供瘦客户端,其支持与集群的所有交互。使用 Ignite 3 的瘦客户端,应用程序不再需要持有完整的Ignite实例。
从代码作为客户端节点启动 Ignite 的选项仍然存在,但这种操作模式不再是使用集群的主要方式,现在该模式称为在嵌入式模式下运行 Ignite。
3.对分布式计算的更精细控制
Ignite 3 中的分布式计算 API 扩展了 Ignite 2,Ignite 2 中的分布式计算的所有功能都被保留,并添加了新的 API 来主动跟踪任务执行队列和任务故障转移。
4.管理方式改进
Ignite 2 的管理工具提供对其所有功能的访问,但在许多领域很难访问配置的特定部分,或者配置特定属性的位置可能不太透明。
Ignite 3 的配置采用了轻量级且可读性强的 HOCON 格式,易于理解和编辑。配置还分为集群范围的配置和节点范围的配置,使每个节点都更易于管理。
4.1.管理工具
Ignite 2 在其生命周期中整合了许多管理脚本,每个脚本都有不同的用途。这可能会导致在使用脚本配置集群时出现混淆,或者必须使用多个不同的脚本来配置特定内容。该脚本也是发行版的一部分。
Ignite 3 提供了一个全新的管理工具,可以与集群中的任何节点通信以无缝应用配置,并为用户提供了一个选项,即在交互模式下支持命令的自动完成。这个新工具单独发布,因此可以在任何有权访问节点地址的机器上进行操作。
18624049226