Apache Ignite 2.8版本經過了一年多的開發,現已發布。這是個大版本更新,新增了大量的功能,也解決了近一年中開發者反饋的大量問題,推薦開發者更新,更新內容清單非常長,現把重點內容摘錄如下:
Apache Ignite 2.8.0
Ignite 實驗性 API:
- 新增了監控API - 向外部接收者輸出Ignite指標信息;
- 使用withReadRepair擴展IgniteCache API對每個緩存執行備份節點一致性檢查;
- 將MVCC特性標記為試驗性 (2.7.0版本新增);
Ignite 監控:
- 新增將對象暴露為系統視圖的支持 (直接支持SQL, JMX輸出);
- 新增對指標信息進行存儲和更新的支持 (直接支持JMX, SQL, Log, OpenCensus的輸出);
- 新增SQL_QUERIES系統視圖;
- 新增CLIENT_CONNECTIONS系統視圖 (JDBC, ODBC, 瘦客戶端) ;
- 新增NODES系統視圖;
- 新增TABLE_COLUMNS系統視圖;
- 新增CONTINUOUS_QUERIES系統視圖;
- 新增DATA_REGION_PAGE_LISTS系統視圖;
- 新增INDEXES系統視圖;
- 新增PME耗時的指標;
- 新增事務持續時間的指標;
- 新增度量緩存API性能的指標;
- 新增顯示索引構建過程的指標;
- 新增SCAN_QUERIES系統視圖;
- 新增SCHEMAS系統視圖;
- 新增STRIPED_THREADPOOL_QUEUE系統視圖;
- 新增對通過JMX對指標進行配置的支持;
- 新增TABLES系統視圖;
- 如果發生了檢查點限流,新增了線程停頓的總時間指標;
- 新增TRANSACTIONS系統視圖;
- 將CacheGroupMetrics移到了新的框架;
- 將ClusterMetricsMxBean移到了新的框架;
- 將Communication指標移到了新的框架;
- 將GridJobMetricsProcessor移到了新的框架;
- 將GridLocalMetrics移到了新的框架;
- 將IgniteMXBean移到了新的框架;
- 將QueryMetrics移到了新的框架;
- 將TransactionMetricsMxBean移到了新的框架;
Ignite 核心層:
- 新增@IgniteExperimental註解,用於通知用戶可用API的早期狀態;
- 新增IGNITE_CONSISTENT_ID系統屬性;
- 新增IGNITE_DISCOVERY_DISABLE_CACHE_METRICS_UPDATE系統屬性;
- 新增IGNITE_YARN_QUEUE屬性,用於覆蓋YARN隊列名;
- 新增JMX從拓撲中排除節點的功能;
- 新增分區映射耗時的JMX指標;
- 新增ZookeeperSpi的SSL支持;
- 新增Spark SQL表模式規範;
- 新增WAL頁面快照記錄壓縮;
- 新增通過JVM節點參數選項覆蓋所有緩存的'rebalanceThrottle'選項的功能;
- 新增在配置中設定索引重建的默認并行度的功能;
- 新增跟蹤事務中花費的系統/用戶時間的功能;
- 新增數據結構中的Queue的二進位模式 (withKeepBinary) ;
- 新增主節點的緩存驗證邏輯;
- 新增集群的激活/凍結事件;
- 新增通過Spring配置文件的顯式插件配置;
- 新增磁碟頁面壓縮的支持;
- 在TcpDiscoverySpi實現中為客戶端/服務端連接新增了額外的日誌;
- 在檢查點啟動消息中新增了可能的長時間GC信息;
- 新增了Spark2.4的初始支持;
- 在CacheWriteBehindStore中新增相同鍵的并行寫入&退出功能;
- 集群中的不同節點新增可以有不同的再平衡線程池大小的功能;
- TcpCommunicationSpi新增TLSv1.3支持;
- TcpDiscoveryS3IpFinder新增客戶端側加密支持;
- UriDeploymentSpi新增對JAR文件的支持;
- 緩存支持將數組作為主鍵;
- 基線拓撲新增對自動調整的支持;
- Kubernetes發現中新增對非就緒配置組的支持;
- 新增對SpringData更新/刪除操作的支持;
- PME之外新增了邏輯恢復階段;
- 瘦客戶端新增對最優映射的支持 (分區感知);
- 新增通過AWS ELB進行節點發現的支持;
- 新增事務化緩存的相關事件 (比如EVT_TX_STARTED, EVT_TX_COMMITTED);
- 瘦客戶端新增了事務支持;
- 為TextQuery的構造函數和構造器新增了'limit'參數;
- 新增ignite-spring-data_2.2模塊,用於Spring Framework 5.2.x和Spring Data 2.2.x;
- 新增hibernate 5.3的集成支持;
- 在節點退出時新增對非阻塞PME的支持;
- 在IgniteSpark的內部dataStreamer中新增了skipStore選項(IgniteRdd和Ignite DataFrame);
- 在PME期間避免了存儲管理器的同步初始化;
- 禁止將持久化的節點加入內存集群;
- IGNITE_DISABLE_WAL_DURING_REBALANCING屬性默認打開;
- Ignite內部優化了CRC32演算法;
- 改進了LRT診斷消息;
- 改進了全分區映射生成期間的PME速度(并行執行);
- 改進了全分區映射更新期間的PME速度(并行執行);
- 改進了節點加入期間啟動多個緩存時的PME速度;
- 改進了大規模集群發現過程中的元數據交換 (通過數據壓縮實現);
- 改進了索引重建過程的日誌輸出;
- 改進了WAL段歸檔的速度;
- 優化了再平衡過程的GC壓力;
- 優化了HistoryAffinityAssignment的堆使用;
- 啟動緩存組時的映射初始化性能優化;
- 刪除了IGNITE_SERVICES_COMPATIBILITY_MODE系統屬性;
- 從IgniteSystemProperties和IgniteProductVersion中刪除了Java 7和AI 1.x殘留;
- 將IGNITE_BINARY_META_UPDATE_TIMEOUT替換為IGNITE_WAIT_SCHEMA_UPDATE;
- 大量的性能、穩定性改進和錯誤修復。
SQL:
- 新增了Decimal類型的精度和標度約束;
- 新增了KILL QUERY命令;
- 本地查詢新增了行計數統計;
- CREATE TABLE的WITH子句新增了查詢并行度配置的支持;
- 在發生CorruptedTreeException時新增了自動化的頁面歷史轉儲;
- 為正在運行的查詢新增了集群範圍的唯一標識;
- 在緩存組指標中新增了索引重建的分區離開計數;
- 新增了默認的查詢超時配置;
- 新增了刪除_VER欄位的支持;
- 對於整形類型,從BETWEEN和範圍條件中抽取了分區信息;
- 從JOIN中抽取了分區信息;
- 為本地查詢新增了延遲執行的能力;
- 新增了查詢歷史統計API;
- 在ScanQuery, SqlQuery 和 SqlFieldsQuery中新增了數據頁掃描的支持;
- 剛創建的數據區在第一次分配緩存時新增對內存分配的支持;
- 查詢游標迭代器在所有數據讀完后支持自動關閉;
- 在查詢的發起節點支持對所有正在運行的查詢的跟蹤;
- 在不使用包裝對象時新增了對主鍵索引的驗證;
- 超時時新增了長時間執行的查詢的警告信息(而不是查詢完成時);
- 當queryParallelizm > 1時,禁用了隱式分散式關聯;
- 對於CHAR/VARCHAR 和 DECIMAL類型,在QueryEntity中不再存儲默認的精度和標度;
- 在DML操作中禁止混合_key和主鍵列;
- 將再平衡配置屬性移動到IgniteConfiguration層;
- 當只有一個或者沒有分區時,優化了查詢的執行;
- 通過主鍵訪問緩存時,減少了過多的整形裝箱;
- 表合併時刪除了索引掃描;
- 將IGNITE模式改名為SYS。
MVCC:
- 對於開啟了MVCC的緩存,新增了持續查詢的故障轉移;
- 新增了死鎖檢測器;
- 對於鍵-值API,新增了兼容MVCC的緩存peek操作。
JDBC:
- 新增緩存過期策略;
- 新增JDBC瘦模式驅動的連接超時配置;
- 新增JDBC的數據頁掃描支持;
- 新增并行處理多個非同步請求的支持;
- 新增支持查詢的取消;
- 新增支持查詢超時;
- 驅動啟動時隨機接入一個服務端節點;
- 更新握手協議以使節點返回其UUID。
Web 代理:
- 新增支持集群ID;
- 新增支持2種方式的SSL認證;
- 改進了REST命令執行失敗時的信息輸出;
- 改進了集群拓撲變更時的日誌輸出。
Web 控制台:
- 新增TypeScript支持;
- 新增取消查詢的功能;
- 新增磁碟頁面壓縮的相關配置;
- 新增WC啟動時檢查MongoDB的版本;
- 新增郵件確認功能;
- 新增管理事件(EVT_MANAGEMENT_TASK_STARTED);
- 新增部分缺失的IgniteConfiguration配置項;
- 新增禁用Web控制台的自註冊選項;
- 新增分散式MVCC的選項;
- 輸入框中新增對"date", "time" 和 "date-and-time"類型的支持;
- 輸入框中新增對"type=number"的支持;
- 更新部分細節樣式;
- 更新到RxJS 6。
Ignite .NET:
- 新增瘦客戶端的分區感知;
- 新增瘦客戶端的過期策略;
- 瘦客戶端新增Cluster API;
- 新增對.NET Core 3.x的支持;
- 新增Ignite.NET Dockerfile;
- 新增可運行的.NET Core程序集;
- 新增ICache.GetLongSize;
- 新增IClusterNode.Version;
- 新增ICompute.WithExecutor;
- 新增IIgnite.GetVersion;
- 新增IBinaryObjectBuilder.SetField(name, val, type);
- 新增分區預載入API (PreloadPartition, PreloadPartitionAsync)。
Ignite C++:
- 新增BinaryType方法實現(GetTypeId, GetFieldId);
- C++瘦客戶端新實現了部分原子化Cache API(ReplaceIfEquals, RemoveIfEquals等);
- 改進了C++瘦客戶端的最優映射;
- 刪除了對Boost 1.58.0的強依賴。
REST:
- top命令新增"caches"參數;
- REST API新增拓撲相關命令;
- REST新增內存策略等相關的指標。
Visor:
- 在./control.sh --host HOST --cache idle_verify中,執行VisorIdleVerifyDumpTask時可以指定nodeId;
- Visor中新增緩存統計的動態打開和關閉的功能;
- 在Visor的任務執行中新增了緩存重啟過程的嚮導。
控制腳本工具:
- 新增存儲頁面的CRC校驗和檢查功能;
- 新增從輸出文件中排除緩存的功能;
- 新增輸出更多緩存配置信息的功能;
- 在control.sh --cache idle_verify中新增了同步緩存過濾器的選項;
- 新增處理共享緩存組中緩存銷毀后留下的分區中的垃圾的命令;
- 在control.sh的輸出中新增關於協調器的信息;
- 處理基線配置時新增對SSL的支持(CommandHandler);
- 在console.sh中新增了對調整基線自動調整相關參數的支持;
- 新增對請求SSL Keystore 密碼和 SSL truststore 密碼的支持;
- 在console.sh中顯示基線自動調整的時間;
- 通過console.sh記錄所有執行的動作。
機器學習:
- 新增了固定分量的高斯混合模型(GMM)訓練器;
- 在Spark ML解析器中新增了ML日誌記錄器和相關的環境變數;
- 在模型中用NamedVectors替換了HashMap;
- 新增OneVsRest訓練器用於處理一個數據集中有多個類標籤的場景;
- 交叉驗證過程中新增了對管道的支持;
- 新增了Ignite SQL和Ignite ML之間的集成;
- 在遺傳演算法中新增了超參數調整;
- 在Spark ML的DecisionTreeClassificationModel實例中新增了parquet文件的解析器;
- 在Spark ML的DecisionTreeRegressor實例中新增了parquet文件的解析器;
- 在Spark ML的GBTRegressionModel實例中新增了parquet文件的解析器;
- 在Spark ML的GradientBoostedTreesModel實例中新增了parquet文件的解析器;
- 在Spark ML的KMeansModel實例中新增了parquet文件的解析器;
- 在Spark ML的LinearRegressionModel實例中新增了parquet文件的解析器;
- 在Spark ML的LinearSVCModel實例中新增了parquet文件的解析器;
- 在Spark ML的RandomForestClassificationModel實例中新增了parquet文件的解析器;
- 在Spark ML的RandomForestRegressionModel實例中新增了parquet文件的解析器;
- 新增在Ignite數據上使用H2O MOJO模型進行推斷和預測的功能;
- 在預處理訓練器中新增了新特性標籤提取的API(Vectorizers);
- 新增了各種樸素貝葉斯分類器;
- 新增了向量投影;
- 分類功能的高級支持 (在矢量器中的LabelEncoding, Strings);
- 實現了分散式估計器;
- 支持從XGBoost中導入模型;
- 改進從目錄載入模型,而不是使用模型文件的完整路徑;
- 改進了和ML相關的lambdas的對等類載入;
- 改進了用於IgniteModel和SQL功能的IgniteModelStorage;
- Spark ML的初始集成 (從ML包中解析Spark ML模型);
- 合併了InfModel和Model;
- 將XGBoost和Ignite ML樹合併在一起;
- 新增了用於評價模型質量的指標;
- 新增推薦引擎,以便通過Ignite緩存和SQL操作構建推薦系統;
- 在新的矢量器中替換所有的標籤/特性提取器;
- 訓練推理疊加;
- 統一集成訓練演算法的API。
依賴更新:
- 新增了spring-data-2.2依賴;
- 新增了hibernate-5.3依賴;
- 新增了spark-2.4依賴;
- 新增了spring-5.2依賴;
- 更新Jetbrains Annotations到16.0.3;
- 更新Kafka到2.0.1;
- 更新RocketMQ到4.4.0;
- 更新Commons Beanutils到1.9.4;
- 更新Jackson到2.9.10;
- 更新Jetty到9.4.25;
- 更新Spring到4.3.26;
- 更新spring-5.0到5.0.16;
- 更新spring-data-2.0到2.0.13;
- 將Flink移動到ignite-extension中。
參考消息:https://ignite.apache.org/releases/2.8.0/release_notes.html