您在部署完微服務后,可以根據微服務的運行情況進行微服務的治理。
前提條件
- 您可以先在“微服務目錄 > 微服務列表”中創建微服務,啟動微服務后,根據yaml文件的配置,會在對應的服務下注冊服務實例。
- 如果沒有事先創建微服務或者微服務已刪除,在注冊服務實例時會自動創建微服務。
- 微服務在創建以后,需要注冊服務實例后才能進行對應操作。
- 您需要參考Java Chassis、Go Chassis開發指南,在應用里面啟用負載均衡、熔斷、容錯、降級、錯誤注入、黑白名單等功能。如果沒有啟用,仍然可以使用服務治理功能,但是應用不會產生治理效果。
治理策略概述
1、選擇“服務治理”,進入微服務治理頁面。
2、單擊需要治理的微服務,進入微服務監控頁面和治理配置頁面。
在微服務治理配置頁面支持負載均衡、限流、容錯、降級、熔斷和錯誤注入等策略的配置。
| 名稱 | 說明 |
|---|---|
| 負載均衡 | 當出現訪問量和流量較大,一臺服務器無法負載的情況下,我們可以通過設置負載均衡的方式將流量分發到多個服務器均衡處理,從而優化響應時長,防止服務器過載。可以通過新增規則配置負載均衡策略,設置參數支持輪詢、隨機、響應時間權值、會話粘滯等多種負載均衡策略。 |
| 限流 | 限流主要解決微服務之間的流量分配問題,保證微服務在自己的資源池運行,互不影響。當限流對象對當前服務實例的每秒請求數量超過設定的值,當前服務實例不再接受該對象的請求。常用的檢測方法是請求超時、流量過大等。設置參數包括限流對象、QPS閾值等。 |
| 降級 | 降級是容錯的一種特殊形式,當出現服務吞吐量巨大,資源不夠用等情況,我們可使用降級機制關掉部分不重要、性能較差的服務,避免占用資源,以保證主體業務功能可正常使用。 |
| 容錯 | 容錯是服務調用者訪問服務實例,服務實例出現異常時的一種處理策略,出現異常后按照定義的策略進行重試或訪問新的服務實例。服務調用出錯異常時的處理模式。一旦發生異常,服務會根據容錯機制來進行嘗試重新訪問或直接返回失敗。 |
| 熔斷 | 當我們發現由于某些原因導致服務出現了過載現象,為避免造成整個系統故障,可采用熔斷來進行保護。熔斷在服務請求處理出現異常時產生作用。進入熔斷狀態后,hystrix會認為被請求的服務已經無法處理請求,在第一時間截斷請求直接返回錯誤給調用者。 hystrix每隔一段時間會嘗試訪問后端服務,如果服務恢復正常,會退出熔斷狀態,恢復正常的請求訪問。 |
| 錯誤注入 | 錯誤注入策略用于測試微服務的容錯能力,可以讓用戶知道,當出現延時或錯誤時,系統是否能夠正常運行。錯誤注入通過延時、錯誤等方式,供用戶測試微服務的容錯能力。 |
| 黑白名單 | 黑白名單的主要功能是為微服務設置黑白名單。黑白名單是為了改變網絡流量所經過的途徑而修改路由信息的技術。 |
設置負載均衡
1、單擊需要治理的微服務,進入微服務治理配置頁面。
2、在微服務治理配置頁面,單擊“負載均衡”,展開負載均衡詳情頁。
3、單擊“新增”,進入負載均衡策略配置。先選擇需要治理的微服務,再選擇合理的負載均衡策略,請參見下表。
| 策略名 | 策略說明 |
|---|---|
| 輪詢 | 支持按照服務實例的位置信息順序路由。 |
| 隨機 | 提供服務實例隨機路由。 |
| 響應時間權值 | 提供最小活躍數(時延)的權重路由,支持業務處理慢的服務實例接收較少的請求,防止系統停止響應。這種負載均衡策略適合請求量少且穩定的應用。 |
| 會話粘滯 | 會話粘滯是負載均衡器上的一種機制,在設定的會話保持時間內,會保證同一用戶相關聯的訪問請求會被分配到同一實例上。 失敗次數閾值:訪問失敗次數,0-10。當微服務訪問下屬實例的失敗次數和會話保持時間超過設定的值時,微服務不再訪問該實例。 |
4、單擊“確定”保存配置。
設置限流
1、單擊需要治理的微服務,進入微服務治理配置頁面。
2、在服務治理配置頁面,單擊“限流”,展開限流詳情頁。
3、單擊“新增”,進入限流策略配置頁面,限流配置項下表所示。
| 配置項 | 說明 | 范圍 |
|---|---|---|
| 限流對象 | (微服務)訪問者。 | 該應用依賴的微服務,下拉菜單可直接選擇。 |
| QPS | 每秒的請求數。當限流對象對當前服務實例的每秒請求數量超過設定的值,當前服務實例不再接受該對象的請求。 | 0-99999的整數。 |
4、單擊“確定”保存設置。
設置降級
1、單擊需要治理的微服務,進入微服務治理配置頁面。
2、在服務治理配置頁面,單擊“降級”,展開降級詳情頁。
3、單擊“新增”,進入降級策略配置頁面。
4、在降級策略配置頁面選擇合理的策略,降級策略配置項如下表所示。
| 配置項 | 配置項說明 |
|---|---|
| 降級對象 | 選擇需要降級的服務,可以具體到方法。 |
| 降級策略 | 開啟:開啟降級;關閉:關閉降級 |
說明運行時異常列表展示吞吐量、平均時延和請求失敗率超過閾值的微服務。
5、單擊“確定”保存設置。
設置容錯
1、單擊需要治理的微服務,進入微服務治理配置頁面。
2、服務治理配置頁面,單擊“容錯”,展開容錯詳情頁。
3、單擊“新增”,進入容錯策略配置頁面。
4、在容錯策略配置頁面選擇合理的策略,容錯策略配置項如下表所示。
配置項 配置項說明 容錯對象 該應用依賴的應用或方法,下拉菜單可直接選擇。 是否開啟容錯 開啟:向容錯對象發起請求時發生錯誤的處理策略,開啟后,會根據選擇的處理策略處理請求。
關閉:關閉容錯策略,即使請求失敗也會等到超時后,再返回失敗結果。容錯策略
說明
當“是否開啟容錯”配置項設置為“開啟”時配置。Failover:在不同服務器上重新嘗試建立連接。 Failfast:不再重新嘗試建立連接,即請求失敗時會立即返回失敗結果。 Failback:在同一個服務器上重新嘗試建立連接。 同一個服務器上嘗試重新建立連接的次數,取值范圍0-9的整數。 custom:
同一個服務器上嘗試重新建立連接的次數,取值范圍0-9的整數。
在不同服務器上嘗試建立連接的次數,取值范圍0-9的整數。
5、單擊“確定”保存設置。
設置熔斷
1、單擊需要治理的微服務,進入微服務治理配置頁面。
2、在服務治理配置頁面,單擊“熔斷”,展開熔斷詳情頁。
3、單擊“新增”,進入熔斷策略配置頁面。
4、在熔斷策略配置頁面選擇合理的策略,熔斷策略配置項如下表所示。
配置項 配置項說明 取值范圍 熔斷對象 針對需要治理的微服務實例,可以具體到方法。 該應用調用的服務或方法,下拉菜單可直接選擇。 觸發條件 手動熔斷:即刻觸發熔斷,且不再調用。 - 取消熔斷:將已經熔斷的微服務實例取消熔斷,繼續調用。 - 自動熔斷 熔斷時間窗:熔斷的持續時間,以毫秒為單位。通俗點來說就是讓這個實例休息一段時間后,再重新調用。 0-99999的整數 失敗率:請求的失敗率,以%為單位。 0-100的整數 窗口請求數:窗口收到的請求數。“失敗率”和“窗口請求數”的條件需同時滿足才會觸發熔斷。 1-10000的整數
5、單擊“確定”保存設置。
設置錯誤注入
1、單擊需要治理的微服務,進入微服務治理配置頁面。
2、在服務治理配置頁面,單擊“錯誤注入”,展開錯誤注入詳情頁。
3、單擊“新增”,進入錯誤注入策略配置頁面。
4、在錯誤注入策略配置頁面選擇合理的策略,錯誤注入策略配置項如下表所示。
| 配置項 | 配置項說明 |
|---|---|
| 注入對象 | 需要測試容錯能力的微服務,可以具體到微服務的方法。 |
| 類型 | 測試微服務的容錯能力類型: 延遲 錯誤 |
| 協議 | 訪問微服務出現延時或錯誤的協議:lRestlHighway |
| 延遲時間 | 訪問微服務出現延時的延時時長,“類型”選擇為“延遲”時才需要配置。單位:毫秒取值范圍:0-3600 |
| http錯誤碼 | 訪問微服務出現錯誤的HTTP錯誤碼,“類型”選擇為“錯誤”時才需要配置。該錯誤碼為HTTP標準的錯誤碼。取值范圍:100-999 |
| 觸發概率 | 訪問微服務出現延時或錯誤的概率。取值范圍:0-100 |
5、單擊“確定”保存設置。
設置黑白名單
基于公鑰認證機制,微服務引擎提供了黑白名單功能。通過黑白名單,可以控制微服 務允許其他哪些服務訪問。
只有啟用了公鑰認證,設置的黑白名單才能生效。
注意如果要使用黑白名單,則微服務與服務中心需要滿足以下流程:
微服務啟動的時候,生成秘鑰對,并將公鑰注冊到服務中心。
消費者訪問提供者之前,使用自己的私鑰對消息進行簽名。
提供者從服務中心獲取消費者公鑰,對簽名的消息進行校驗。
1、單擊需要治理的微服務,進入微服務治理配置頁面。
2、在服務治理配置頁面,單擊“黑白名單”,展開黑白名單詳情頁。
3、單擊“新增”,為應用添加黑白名單,黑白名單配置項如下表所示。
| 配置項 | 配置項說明 |
|---|---|
| 類型 | 黑名單:表示根據匹配規則匹配到的微服務都不允許訪問當前服務。 |
| 白名單:表示根據匹配規則匹配到的微服務允許訪問當前服務。 | |
| 匹配規則 | 使用正則表達式表示。舉例如下:匹配規則:data*表示名稱以data開頭的服務不允許其他服務訪問;或者在白名單下匹配到的名稱以data開頭的服務允許訪問當前服務。 |
4、單擊“確定”保存設置。
公鑰認證
公鑰認證是微服務引擎提供的一種簡單高效的微服務之間認證機制,它的安全性建立 在微服務與服務中心之間的交互是可信的基礎之上,即微服務和服務中心之間必須先 啟用認證機制。它的基本流程如下:
- 微服務啟動的時候,生成秘鑰對,并將公鑰注冊到服務中心。
- 消費者訪問提供者之前,使用自己的私鑰對消息進行簽名。
- 提供者從服務中心獲取消費者公鑰,對簽名的消息進行校驗。
啟用公鑰認證步驟如下:
- 公鑰認證需要在消費者、提供者都啟用。
servicecomb:
handler:
chain:
Consumer:
default: auth-consumer
Provider:
default: auth-provider
- 在pom.xml中增加依賴:
<groupId>org.apache.servicecomb</groupId>
<artifactId>handler-publickey-auth</artifactId>