Apache Ignite 2.12.0版本发布,CDC、索引查询和漏洞修复

漏洞更新

Apache Ignite的2.11.1及之前的版本,存在CVE-2021-44832漏洞,该漏洞与ignite-log4j2模块有关。本次更新还修复了其他模块的十余个CVE漏洞。

变更数据捕获

CDC是一种数据处理模式,用于异步接收本地节点变更的数据,以便对这些数据执行后续的动作。

CDC的使用场景如下:

  • 数仓的流式数据变更处理;
  • 更新检索索引;
  • 统计计算;
  • 审计日志;
  • 与外部系统的异步交互:审核、业务流程调用等等。

Ignite通过ignite-cdc.sh应用及其API实现了CDC。

下面是CDC应用与Ignite节点通过WAL段进行集成的示意图:

开启CDC之后,Ignite服务端节点会在一个特定的db/cdc/{consistency_id}目录中,为每个WAL存档段创建一个硬链接,ignite-cdc.sh会在一个单独的JVM进程中运行然后处理新的WAL存档段,这些存档段在被ignite-cdc.sh处理完后会被删除,CDC和存档被删除之后,实际的磁盘空间会被释放。

消费的状态会指向最后处理的事件,消费端可以通知ignite-cdc.sh来保存消费状态,事件处理启动后,会从最后保存的状态处继续处理。

IndexQuery API

Ignite现在为已有的索引提供了一套IndexQuery API,索引查询会处理分布式的索引,然后返回匹配指定查询的数据集。

这在如下场景中会非常有用:

  • SQL不适用于业务系统;
  • 由于性能原因,IndexScan优于ScanQuery

代码示例:

// Find the persons who work in Organization 1 and have salary more than 1,000.
QueryCursor<cache.entry<integer, person>&gt; cursor = cache.query(
    new IndexQuery<integer, person>(Person.class, "ORG_SALARY_IDX")
        .setCriteria(eq("orgId", 1), gt("salary", 1000))
);

快照

以前的版本只能在同一集群拓扑中执行快照恢复。新版本提供了在不同集群拓扑上恢复快照的能力。此外,还增加了对加密缓存的支持。

分布式环境测试

实现了新的测试框架,主要目标是拥有足够大的集成测试集,覆盖大多数典型的集群使用场景。

特性

  • Ignite节点可以使用任意的配置在Docker或者实际的集群环境进行启停;
  • 支持任意Ignite版本(已发布版本或者从源代码构建);
  • Ignite分叉版本也是支持的(直接支持);
  • 其他应用的执行也是可能的,比如现在已经实现了Spark和ZooKeeper的启动器;
  • 集群可以使用control.sh进行管理,这也是测试API的一部分;
  • 不管有没有胖瘦客户端,自定义的Java代码也都可以在远端执行;
  • SSH命令也可以远程执行,执行结果在本地也是可用的;
  • 可以通过编辑iptables破坏网络,来测试网络问题;
  • 当集群大小超过测试所需时,测试可以并行执行。

测试框架来自于Kafka社区的Ducktape,这也是我们将其称为Ducktests的原因。

部分模块迁移至Ignite扩展库

部分模块前移到了扩展库:

  • GCE、AWS、Azure模块迁移到了gceawsazure扩展库;
  • CacheSpringStoreSessionListener迁移到了spring-tx扩展库;
  • TcpDiscoveryZookeeperIpFinder迁移到了zookeeper-ip-finder扩展库。

因此Ignite的二进制包整体体积减小了10%。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章