漏洞更新
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%。