漏洞更新
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>> 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模块迁移到了
gce
、aws
、azure
扩展库; - CacheSpringStoreSessionListener迁移到了
spring-tx
扩展库; TcpDiscoveryZookeeperIpFinder
迁移到了zookeeper-ip-finder
扩展库。
因此Ignite的二进制包整体体积减小了10%。