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%。

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