隨著AI、大數據、云計算等技術的(de)興(xing)起,為了提供更良好的(de)企業個性(xing)化服務和個人(ren)定制化需求,數據存儲顯(xian)得(de)尤(you)為重要,openapi的(de)穩(wen)定性(xing)使用是更重要的(de)一環(huan)。
云上數(shu)據庫(ku)為了保證數(shu)據庫(ku)openapi的(de)(de)高可(ke)用能力與自適應能力,往(wang)往(wang)是會存在openapi的(de)(de)隱(yin)患問(wen)題,保證數(shu)(shu)據(ju)庫(ku)openapi系(xi)統的(de)(de)穩定性(xing)高可(ke)用性(xing)成了重(zhong)中之重(zhong)。當前(qian)的(de)(de)網關系(xi)統無(wu)法(fa)個(ge)性(xing)化(hua)的(de)(de)針(zhen)對特定的(de)(de)openapi進行熔斷(duan)(duan)監(jian)控,監(jian)控的(de)(de)數(shu)(shu)據(ju)指標多是處理器、內存、硬盤等數(shu)(shu)據(ju),缺少(shao)一套(tao)完整(zheng)的(de)(de)openapi熔斷(duan)(duan)監(jian)控方法(fa)。所以(yi)當大規模調用openapi出現系(xi)統來(lai)不及(ji)響(xiang)應,響(xiang)應時(shi)(shi)間(jian)很慢(man)或者出現服務(wu)器宕機等問(wen)題時(shi)(shi),沒有辦法(fa)做到用戶側及(ji)時(shi)(shi)感知,同時(shi)(shi)數(shu)(shu)據(ju)庫(ku)系(xi)統崩潰(kui),極大影響(xiang)到用戶操作。
基于(yu)以上(shang)問題,如何提供一種簡單部(bu)署、快速感(gan)知的openapi監控熔(rong)斷方案就成了亟需解決的問題。
三、發明創造的(de)目的(de)
本發明(ming)是針(zhen)對現有(you)技術(shu)方案的不足,基于sentinel和(he)應用網關進行結合(he),通過sentinel進行對openapi某一時間采樣進行熔斷檢(jian)測,prometheus監控(kong)采集openapi調用數據(ju)Prometheus會根(gen)據(ju)進行監控(kong)數據(ju)計算,gafana然后可(ke)視化監(jian)控。
為(wei)實現(xian)基于應用網關和sentinel的熔(rong)斷以及gafana可(ke)視(shi)化監控能力(li),需(xu)要實現openapi的(de)自適應熔斷(duan)監控,需(xu)要解決(jue)的(de)技術難點主要為以下(xia)兩(liang)點:
第一是自主研(yan)發的(de)應用網(wang)關,實現對于(yu)Prometheus的對openapi調用監控數據采集(ji)和(he)sentinel的自(zi)定義的時間采樣熔斷規(gui)則。通過編寫熔斷規(gui)則綁定對應openapi,規(gui)則通過某(mou)一(yi)時間(jian)窗口采樣,對openapi超時響應(ying)比例和錯誤比例來控制(zhi)。
第(di)二是實(shi)現應用網關自動化(hua)加載(zai)openapi能力和基于gafana的可(ke)視化監控(kong)。
五、發明(ming)創造的技(ji)術方案
1. 本發明提供一(yi)種基于Prometheus,應用(yong)網(wang)關,sentinel的openapi的自適應的熔斷(duan)監(jian)控方案,并(bing)使(shi)用(yong)gafana作為可視化(hua)監控,其整(zheng)體(ti)技術(shu)框架如附圖(tu)1:

附圖1.openapi熔(rong)斷(duan)監控(kong)整體流程圖
通過應(ying)用網關web頁面斷(duan)(duan)路器(qi)的熔斷(duan)(duan)規則如下(xia),示例如下(xia):
errorCondition: "$StatusCode == 500" # 錯誤條件
errorThresholdByPercent: 20 # 用于控制錯(cuo)誤閾值的百分比
timeoutThresholdByPercent: 20 # 用于控制后端超時請(qing)求的百(bai)分比
windowInSeconds: 30 # 窗(chuang)口時(shi)間
openTimeoutSeconds: 15 # 斷路器開的時間
downgradeBackend: # 降級后的后端配置(zhi)
type: mock
statusCode: 403
3.通過ping-exporter組件的monitor模塊進行(xing)配置yaml文(wen)件來創(chuang)建(jian)監測任務(wu),負責監控機器實例。

附圖2.Prometheus拉取監控(kong)指標數(shu)據
2. 如附圖2所示,部(bu)署完ping-exporter之后,當用(yong)戶調用(yong)openapi時候,openapi監控指(zhi)標數據(ju)(ju)(ju)會被拉取(qu)到(dao)Prometheus,Prometheus會根據(ju)(ju)(ju)數據(ju)(ju)(ju)計(ji)算(suan),然后gafana進行可視化監控處理。可以展示對(dui)應openapi的熔斷器的開關狀態(tai)和(he)(he)對(dui)應openapi返回的狀態(tai)碼和(he)(he)響應時間。

附圖3.熔斷器(qi)的狀態轉移
六、架構(gou)所具有的優(you)點和效(xiao)果。
利(li)用(yong)本發明提供的(de)一種基于時間采樣應(ying)用網關openapi熔(rong)斷監控的方法,具(ju)有以下優點:
本申(shen)請主要用于云計算數據庫openapi使用領域,由(you)于(yu)傳統的網(wang)關監測(ce)并不能針對某個特定openapi進行熔斷降級處理(li),不能滿足用戶自定義openapi后端處理(li);基于(yu)Prometheus和ping-exporter的監控以及gafana可視化監控,使用的組件(jian)成(cheng)熟,部署(shu)方式(shi)簡(jian)單,還可以及時讓用戶(hu)發現某個或者(zhe)多(duo)個openapi熔斷狀態并及時做有效處理(li),有效的(de)降低了經濟損失和(he)減少了人力資(zi)源成本(ben)。
七、實施例(li)
1. 通(tong)過應(ying)用網(wang)關(guan)web頁面可以自(zi)定義斷路(lu)器規則。綁定經常報錯(cuo)或者超時的openapi。
2. 將(jiang)ping-exporter二(er)進制(zhi)文件移至對(dui)應的源主機,并修改其為系統服務,設置開機自啟動。
3. 根(gen)據監(jian)控任務參數對ping-exporter配置(zhi)文件動態修改(gai)。配置(zhi)進行更新。
4. Prometheus拉取實時的openapi調用(yong)數據。并在gafana進行可(ke)視(shi)化展示。