微服務部署預測模型已獲得國家知識產權局的專利; 專利號: 201910652769.4; 在 35 卷 4301 期 2019 年 10 月 22 日專利公報上予以公布。

我們應該永遠的只將人工智慧運用在解決 「最關鍵路徑」 上的問題;也就是,只專註解決那些 「發生概率很低」, 但是一旦發生,其所造成的後果往往是很難去彌補的;例如: 會造成整個產品沒法運作、整間企業沒法運營⋯等等。

前言:

微服務開發所面臨的最大的挑戰, 是要能保證微服務在雲端分散式環境下的運維的質量。

微服務布署預測模型主要是當新部署的微服務在預發布 (藍線)的環境下時, 便能預測新部署的微服務未來在正式運維 (綠線) 的環境下, 是否會使得產品發生運維上的異常 ? 以提升新部署的微服務在雲端分散式環境下的運維的質量。

微服務布署預測模型是以多節點分散式的環境下的 231 個運維度量, 1 分鐘的時間間隔, 運用深度學習, 進行時間序列的運算。

本文:

現有保證新部署的微服務在雲端分散式環境下的運維的質量的方案是: 

  • 針對新部署的微服務在預發布 (藍線) 的環境下, 所收集到的關鍵度量的臨界值; 如: 內存的使用率或是響應延遲的時間…等等, 判斷新部署的微服務在運維 (綠線) 的環境下是否會使得產品發生異常 ? 
  • 針對在預發布 (藍線) 的環境下新部署的微服務進行心跳測試; 在某時間段內對新部署的微服務發出一定數量的請求, 觀察新部署的微服務在某時間段內回覆請求的數量。

現有的方案:

現有保證新部署的微服務在雲端分散式環境下的運維的質量的方案, 有著以下的缺點:

  • 在雲端分散式環境下, 不論是根據關鍵度量的臨界值或是心跳測試, 往往都很難區分出新部署的微服務是已使產品發生異常或是產品仍是處於正常運行的狀態 ? 例如:新部署的微服務雖發生響應上的延遲, 但其實產品還是處於正常運行狀態的。

微服務部署預測模型:

微服務部署預測模型是運用深度學習中的 LSTM Networks ( Long Short-Term Memory Networks), 訓練 LSTM 能分類出產品的異常或正常的狀態, 並能預測 60 分鐘後新部署的微服務是否會使得產品發生異常 ? 

圖一: 微服務持續發布、持續部署

當微服務部署到預發布 (藍線) 的環境時, 微服務布署預測模型便會預測新部署的微服務在未來的 60 分鐘是否會使得產品發生異常 ?

所以, 微服務的開發團隊便可根據微服務在預發布 (藍線) 的環境下, 經歷了 N 個的不會使產品發生異常的 60 分鐘, 而可更有自信的將微服務部署到正式運維 (綠線) 的環境下。

圖二: 微服務會部署在多個節點

微服務會部署在多個節點上, 所以, 微服務布署預測模型是根據微服務在預發布 (藍線) 的環境, 多節點下的運維數據, 進行預測; 每筆運維的數據相隔一分鐘的時間。

特徵集: 花 90% 的時間找出那些在數據采標上成本最低的 Features

微服務布署預測模型根據在預發布 (藍線) 的環境, 多節點下, 微服務與資料庫的連接、CPU/內存耗用的情況、事務的狀態、線程、交換, 作為預測的特徵集。

特徵集特徵
微服務與資料庫的連接微服務使用的資料庫的連接數目
微服務建立一資料庫的連接所需花費的時間; milliseconds
微服務從 JDBC 連接池中使用的 JDBC 的連接數目
資料庫是啟用或是禁用
微服務對資料庫的連接請求的次數
微服務對資料庫的連接請求失敗的次數
微服務需先等待以獲得一資料庫的連接, 並且最終能成功連接資料庫的次數
微服務需先等待以獲得一資料庫的連接, 最終連接資料庫失敗的次數
微服務調用資料庫緩存的次數
事務微服務提交更改的次數
微服務回滾更改的次數
內存微服務使用的 JVM 堆內存
微服務使用的 JVM 棧內存
微服務最多可使用的 JVM 堆內存
微服務最多可使用的 JVM 棧內存
微服務最多可使用的內存
尚未使用的內存
CPU微服務 CPU 使用率
微服務線程的CPU 使用率
線程微服務堵塞線程數目
微服務守護線程數目
微服務全部線程數目
交換微服務的虛擬內存的使用率
微服務的內存交換到虛擬內存的空間大小; kilobytes
微服務所載入類的數目
微服務所卸載類的數目

LSTM 數據外形 (Shape):

圖三: LSTM 數據外形 (Shape); N x D x T

LSTM 數據外形是 3D 的陣列; N x D x T

  • N = 樣本的數目
  • D = 特徵的數目
  • T = 在時間序列中, Time steps 的數目

將 Training datasets; anomaly_training_set; 的外形轉化為:

  • N = len(anomaly_training_set) – 60
  • D = 231
  • T = 60; 預測新部署的微服務在未來的 60 分鐘是否會使得產品發生異常 ?
K = 60
   for i in range(K, len(anomaly_training_set)):
       X_anomaly_train.append(anomaly_training_set_scaled[i-K:i, 1:])
       y_anomaly_train.append(anomaly_training_set_scaled[i, 0])

微服務布署預測模型 LSTM Network:

微服務布署預測模型 LSTM Network:

  • Time steps 為 60
  • LSTM layer 數目為 4
  • 每個 LSTM layer 包含 60 個 cells; 因為 Time steps 為 60
  • 每個 cells 包含 1500 個 units
  • Dropout 為 0.4
圖四: 微服務布署預測模型 LSTM Network
圖五: 微服務布署預測模型 LSTM Layer; 1st LSTM Layer

微服務布署預測模型的輸入數據是時間序列 (Time Series):

P: time steps= 60

N: 度量的數目= 231

圖六:微服務布署預測模型 LSTM Layer; 1st LSTM Layer; 與時間序列 (Time Series) 的輸入數據

微服務布署預測模型的訓練與評估結果:

微服務布署預測模型是:

  • 採用 Adam 演演算法, 進行 optimization
  • 以 mean squared error (MSE) 度量微服務布署預測模型的預測能力
  • 以每 1 分鐘在預發布 (藍線) 的環境, 多節點下的運維數據; 共 12,900 分鐘; 進行 100 個 epochs 的訓練; 訓練時產生的 MSE = 0.189
  • 以另外的 9,912 分鐘多節點下的運維數據, 評估微服務布署預測模型的預測能力; 評估時產生的 MSE = 0.196
圖七:微服務布署預測模型的訓練與評估結果

結論:

我們應該永遠的只將人工智慧運用在解決 「最關鍵路徑」 上的問題;也就是,只專註解決那些 「發生概率很低」, 但是一旦發生,其所造成的後果往往是很難去彌補的;例如:會造成整個產品沒法運作、整間企業沒法運營⋯等等。

微服務布署預測模型可預測由多個分散式微服務實例, 所構成的 231 個度量的值,60 分鐘後新部署的微服務會不會使得產品發生異常 ? 

微服務布署預測模型可完全的避免只是根據關鍵度量的臨界值或是心跳測試, 所造成的產品是在正常、或是在異常間的誤判。

微服務布署預測模型解決了微服務在持續部署、持續發布上 “信心度評估” 的難題; 使得微服務的開發能更有效率、更有質量、更有信心的完成持續部署、持續發布。

微服務布署預測模型預期將會成為微服務開發上的關鍵技術之一。

發表評論

電子郵件地址不會被公開。 必填項已用*標註

此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據