Apache Ignite 2.11:稳定优先

原创
09/23 09:45
阅读数 940

Apache Ignite社区于9月17日发布了2.11版本,这个版本很大程度上是一个以稳定为主的版本,解决了底层架构的一些技术债务和缺陷。在200多个已完成的任务中,120多个是缺陷修复,但是仍然有一些有价值的改进,下面简单看一下。

瘦客户端

分区感知在2.11版本中默认启用,允许瘦客户端直接向持有待处理数据的节点发送查询请求。在没有分区感知的情况下,应用需通过充当传入请求的代理的单个服务端节点执行所有查询和操作。另外Java瘦客户端中还添加了对持续查询的支持。

蜂窝集群部署

Apache Ignite内部具有所谓的切换(分区映射交换的一部分)过程,用于执行集群范围操作的原子执行并将集群从一个一致状态移动到另一个一致状态,例如,缓存创建/销毁、一个节点加入/离开/故障动作、快照创建等。在切换过程中,所有用户事务都会被停顿一小段时间,这反过来增加了整个集群的平均延迟和吞吐量。

将集群拆分为包含4-8个节点的虚拟单元可以提高集群的总体性能,并在节点故障的情况下最小化一个单元对另一个单元的影响。这种技术还显著提高了不受故障节点影响的单元上事务的恢复速度。事务在未受影响的单元上停顿的时间也会减少,这反过来又会减少整个集群操作的最差延迟。

从这个版本开始,用户可以使用RendezvousAffinityFunction关联函数和ClusterNodeAttributeColocatedBackupFilter将节点分组为虚拟单元。由于节点基线属性用作单元格标记,因此添加了相应的BASELINE_NODE_ATTRIBUTES系统视图。

新的页面替换策略

当开启了原生持久化且Ignite存储在磁盘上的数据量大于为数据区分配的堆外内存量时,应将某些页面从堆外退出到磁盘,以从磁盘加载其他必要的页面。这个过程称为页面替换。之前Apache Ignite使用的是Random-LRU页面替换算法,维护成本低,但是缺点很多,开始页面替换时对性能影响很大。在某些环境中,管理员甚至需要定期强制重启集群以避免页面替换。从这个版本开始,有一些新算法可以使用:

  • Segmented-LRU算法
  • CLOCK算法

页面替换算法可通过配置DataRegionConfigurationpageReplacementMode属性实现,现在默认使用CLOCK算法,具体请参见相关的文档。

快照的恢复和检查命令

检查

所有快照在集群范围的并发操作以及Ignite的持续更改方面完全保持一致。但是某些情况下,为了让用户安心,可能需要检查快照的完整性和数据一致性。Apache Ignite现在提供了一个内置的快照一致性检查命令,使用户能够验证内部数据一致性、计算数据分区哈希和页面校验和,并在发现问题时输出结果。check命令还将通过包含主分区的主键计算出的哈希值与相应的备份分区进行比较,并报告任何差异。

# This procedure does not require the cluster to be in the idle state.
control.(sh|bat) --snapshot check snapshot_name

恢复

以前只能手动执行快照恢复过程,即通过将持久化数据文件从快照目录完全复制到Apache Ignite工作目录。现在自动恢复过程允许用户使用Java API或命令行脚本(推荐使用命令行)从在线集群上的快照恢复缓存组。但是该恢复过程还有几个限制,详细信息请参见相关的文档。

#Start restoring all user-created cache groups from the snapshot "snapshot_09062021".
control.(sh|bat) --snapshot restore snapshot_09062021 --start

# Start restoring only "cache-group1" and "cache-group2" from the snapshot "snapshot_09062021".
control.(sh|bat) --snapshot restore snapshot_09062021 --start cache-group1,cache-group2

# Get the status of the restore operation for "snapshot_09062021".
control.(sh|bat) --snapshot restore snapshot_09062021 --status

# Cancel the restore operation for "snapshot_09062021".
control.(sh|bat) --snapshot restore snapshot_09062021 --cancel
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部