Apache Ignite 2.9.0发行版-新增功能

Apache Ignite是一个开放源代码的高性能分布式数据库,旨在跨节点群集存储和分布式处理大量数据。我们在Sberbank积极使用它,并且我们有一个团队开发此产品。2020年10月23日,发布了新版本的Apache Ignite 2.9.0。作为此发行版的经理,代表整个Apache Ignite开发团队,我希望分享有关主要创新的信息。



  • 快照(备份)
  • 追踪
  • 瘦客户机的新功能
  • 集群操作模式“只读”
  • 在沙盒中运行自定义代码
  • 透明数据加密:主密钥轮换
  • 中断用户任务和请求的工具
  • 平台端缓存(.NET)
  • 通过NAT将客户端节点连接到服务器节点




快照(备份)



在Ignite 2.9.0中,可以从整个群集创建磁盘上存储的所有缓存(即,以Ignite Native Persistence模式运行的缓存)的备份副本可以在具有用户负载的活动群集上在线创建快照。这将创建所有群集数据的完全一致的副本。



您可以通过以下方式之一开始创建备份:



  • 使用命令行实用程序control.sh:control.sh --snapshot create <snapshot name>;
  • JMX操作:MBean group="Snapshot", name=SnapshotMXBeanImpl, createSnapshot(<snapshot name>);
  • 通过Java的API :Ignite.snapshot().createSnapshot("<snapshot name>")


<snapshot name>快照的唯一名称 在哪里



work/snapshots/<snapshot name>每个节点的目录中(默认设置)完成快照形成后,将在快照启动时重新创建该节点的文件存储结构。通过使用快照目录中的文件将节点数据替换为文件,将来可以使用生成的文件结构从备份副本中还原。



您可以在官方文档中找到有关使用快照的更多详细信息



追踪



Ignite监视系统不断改进,而2.9版中的一项重大创新就是跟踪子系统。跟踪使您可以获得有用的信息,这些信息对于开发阶段的调试和事件分析都是有用的。借助跟踪,可以收集有关集群中运行的各种任务的进度的分布式低级信息,并使用此信息来诊断性能问题。跟踪以树的形式显示了系统中任务的路径,每个跟踪的下一级比上一级提供更详细的信息。



在Ignite 2.9.0中,跟踪涵盖以下内部组件:



  • 发现消息;
  • 通讯讯息
  • 交流过程;
  • 交易。


要查看跟踪,必须将其导出到外部系统。为此,Ignite使用OpenCensus库,该库开箱即用为多个系统(例如Zipkin)提供了多个导出程序。



您可以通过将上述一个或多个组件设置为范围并设置采样频率来限制导出的信息量(设置可在运行时更改)。



您可以在官方文档中找到有关跟踪的更多详细信息



瘦客户机的新功能



Java和.NET瘦客户端现在具有Ignite功能,该功能以前仅在胖客户端中可用。



使用能力:



  • cluster API & cluster group API ( .NET java):
    • ;
    • ;
    • , ;
    • ;
  • compute API ( .NET java):
    • . , p2p class loader , class-path ( );
  • Service Grid ( java):
    • Ignite. compute API, , .


此外,.NET瘦客户端还收到了自动服务器节点发现功能,该功能与分区感知功能结合使用。当使用“分区意识”时,客户端不与一个服务器节点建立连接,而是与多个服务器节点建立连接,以便在可能的情况下向该节点发送请求,该请求是该请求中数据的主要节点。同时,群集节点的自动发现不允许在客户端配置中列出群集节点的所有地址。客户端可以使用配置中列出的地址连接到至少一台实时主机就足够了。客户端将从群集中接收其余节点的地址。



有关如何使用新功能的更多信息,请参见Java瘦客户端和.NET瘦客户端文档的相应小节



集群操作模式“只读”



在2.9.0发行版之前,Ignite仅具有集群的两种状态:集群可以是非活动的(节点是在拓扑中收集的,但是禁止了任何具有缓存的操作),或者是活动的(允许任何操作)。在2.9.0版中,添加了新的群集状态-“只读”。这对于执行某些维护工作(例如,检查数据完整性)很有用。



您可以在官方文档中找到有关群集状态的更多详细信息



在沙盒中运行自定义代码



Ignite可以在服务器节点上运行自定义代码(例如计算任务,事件侦听器,各种过滤器)。这样的代码以与Ignite系统代码相同的权限执行,并且可以不受限制地使用整个Java API。潜在的不安全代码可能会破坏群集的性能(例如,删除Ignite数据文件,终止JVM等)。



在版本2.9.0中,可以在“沙盒”中执行这些代码,而这些权限已明确分配给请求执行此代码的访问主题(例如,客户端节点)。分配给访问者的权限是类对象的集合,这些类对象java.security.Permission在执行某些操作之前已由java检查。



为了使Ignite Sandbox正常运行,必须安装并启用两个组件:



  • Java安全管理器。调用系统java库时负责授权主题。默认禁用
  • 点燃安全处理器。负责认证访问主题。不提供带有Ignite的“开箱即用”,需要独立实现并使用插件进行连接。


您可以在官方文档中找到有关Ignite Sandbox的更多详细信息



透明数据加密:主密钥轮换



透明数据加密(TDE)是一项功能,允许您不以明文形式在磁盘上存储数据。例如,为了进行PCI DSS数据安全认证,需要使用DBMS对磁盘上的数据进行加密。在Apache Ignite中,基本的TDE功能(第1阶段)在2.7版中实现。在当前版本中,已实现TDE的第二阶段-旋转主密钥(使用主密钥对存储在磁盘上的缓存密钥进行加密)。TDE的第三阶段(缓存键旋转)将在下一个版本中实现。



您可以在官方文档中找到有关主键旋转的更多详细信息



中断用户任务和请求的工具



早期版本的Ignite没有一致的机制来中断管理员的用户任务和请求。用户可以选择取消其任务和请求。对于管理员来说,可以使用彼此不相关的单独工具(例如,可以通过列表,过滤器,通过JMX或control.sh实用程序中止事务,然后使用SQL命令“杀死” SQL查询KILL QUERY)。在当前版本中,管理员可以中断



  • 各种类型的查询(SQL,扫描,连续)
  • 交易,
  • 计算任务,
  • 点燃服务,


使用统一的界面。



所有这些类型的任务和请求都可以通过以下任意方式中断:



  • control.sh实用程序;
  • 通过JMX;
  • SQL命令。


有关中断用户任务和请求的更多信息,请参阅官方文档



平台端缓存(.NET)



在Ignite.NET中,已添加了使用.NET平台一侧的附加缓存层的功能。该层.NET内存中的数据以反序列化形式存储,因此您可以读取已缓存的数据,而无需其他JNI调用和反序列化。这显着提高了非事务性读取的速度。



有关平台端缓存的更多信息,请参见官方文档



通过NAT将客户端节点连接到服务器节点



在Ignite 2.9.0中,出现了一种网络交互模式,其中“胖”客户端和服务器之间的连接仅在客户端上启动(服务器不启动与客户端的连接,但是,如果需要与客户端直接交互,它将要求客户端通过已经建立的连接到该客户端。客户端与其他服务器的连接)。这种操作模式允许使用群集配置,其中NAT位于客户端和服务器节点之间(例如,当客户端在虚拟环境中运行时)。



您可以在官方文档中找到有关通过NAT连接客户端节点的更多详细信息



结论



以上是Apache Ignite 2.9.0发行版中最重要的更改。但是更改列表并不限于这些。与往常一样,我们已修复了许多错误,并进行了许多其他有用的改进。更改的完整列表可以在发行说明中找到



All Articles