原標題:有了這三個錦囊,再也不用擔(dān)心微服務(wù)治理了
微服務(wù)作為云原生時代的重要IT理念,正在眾多企業(yè)中實踐應(yīng)用。隨之而來的問題是,采用什么樣的微服務(wù)治理策略,能夠確保微服務(wù)架構(gòu)的可用性、敏捷性?為此,百度智能云從運維者的角度,編寫了3個錦囊妙計,確保每一個微服務(wù)都能在正確的“位置”高效運行。
這三個錦囊分別是:路由、限流和熔斷。不過,在討論微服務(wù)治理之前,我們可以先明確一下微服務(wù)的定義。
用積木來理解微服務(wù)治理
業(yè)界對微服務(wù)有很多種定義,其核心思想都大同小異。這里引述一下最早提出微服務(wù)定義的James Lewis 和 Martin Fowler關(guān)于微服務(wù)架構(gòu)的闡述。
定義:“將單個應(yīng)用程序拆分成多個獨立運行的小型服務(wù);服務(wù)間基于輕量級機制通信,比如基于Http協(xié)議的Restful API;每個服務(wù)承擔(dān)獨立的業(yè)務(wù)功能,并且能夠獨立部署;服務(wù)通過去中心化的方式進行管理;服務(wù)可以各自使用不同的編程語言,并使用不同的數(shù)據(jù)存儲技術(shù)。”
其實我們可以再“翻譯”一下,將開發(fā)一個微服務(wù)架構(gòu)的應(yīng)用程序比喻成搭建一個樂高機器人,那么微服務(wù)架構(gòu)如下。
- 將一個完整的機器人,拆分成很多個可以獨立使用的樂高積木塊
- 積木塊之間不需要通過膠水黏合,而是使用可以隨時插拔的標準接口
- 每個積木塊都承擔(dān)獨立的功能,比如說用來組成頭部、起到連接作用等
- 任意兩塊積木都可以直接拼接,不需要一個“集成板”之類的中間組件
- 每塊積木只需要提供標準的接口即可,材料、顏色和大小等都可以各不相同
這樣一來,微服務(wù)架構(gòu)的優(yōu)勢也就一目了然:任何一個服務(wù)都是可以替換的,單個服務(wù)的損壞不會導(dǎo)致整個系統(tǒng)的崩潰,同時整個系統(tǒng)的可擴展性也得到了大大提升,可以在不破壞系統(tǒng)運行的前提下隨時進行服務(wù)的增減和升級。
當(dāng)我們系統(tǒng)中的服務(wù)數(shù)量越來越多,服務(wù)之間的組合關(guān)系越來越復(fù)雜時,如何高效地管理這些服務(wù),以確保每個服務(wù)都在正確的“位置”運行,并且隨時替換或者升級某些“損壞”的服務(wù)呢?
這就是百度智能云CNAP(云原生微服務(wù)應(yīng)用平臺)為微服務(wù)架構(gòu)的運維者提供了3個錦囊妙計的初衷。
錦囊一:用路由控制流量
CNAP中的【路由】規(guī)則用于管理服務(wù)間的通信鏈路。微服務(wù)的管理其實比搭建樂高積木更復(fù)雜,因為一塊樂高積木最多與和它相鄰的幾塊積木拼接,但是一個系統(tǒng)中的服務(wù)卻可以與系統(tǒng)中任意一個其它服務(wù)產(chǎn)生通信。
通過合理配置路由,可以解決微服務(wù)架構(gòu)中的兩個問題:
1、讓服務(wù)A訪問正確的服務(wù)B,就好比積木A用來組成頭部,那它就應(yīng)該與組成身體的積木B拼接,而不應(yīng)該錯誤拼接到組成手臂的積木C上。
2、服務(wù)間通過正確的實例互相訪問。一個服務(wù)往往會同時運行在多個實例上(實例即物理資源的單位),就像一塊樂高積木上通常會有很多個接口。那么路由規(guī)則可以指定當(dāng)服務(wù)A訪問服務(wù)B時,流量應(yīng)該具體從服務(wù)A的哪些實例出發(fā),流入到服務(wù)B的哪些實例中去
如上圖所示,路由規(guī)則主要由【流量來源】和【流量目的】兩部分組成。和拼裝樂高積木一樣,我們通常會拿起一個積木A(流量目的),然后去系統(tǒng)中找另外一個需要拼接到A上面的積木B(流量來源)。
流量來源即訪問發(fā)起的服務(wù),我們通常稱之為Consumer(服務(wù)消費者)。需要先通過服務(wù)名找到所需的Consumer,然后通過一組篩選規(guī)則來定位Consumer上產(chǎn)生流量的一組具體實例。
流量目的即接受訪問的服務(wù),我們通常稱之為Provider(服務(wù)提供者)。Provider在一條路由規(guī)則中是不變的(就是我們先拿到手上的那塊積木),只需要通過篩選規(guī)則來定位接受流量的一組實例。由于流量最終要被分配到某個具體實例中,所以路由規(guī)則中還需要指定流量分配的策略和權(quán)重(比如可根據(jù)實例負載情況分配流量權(quán)重)。
有了路由規(guī)則,服務(wù)間就可以通過正確的方式互相訪問,“頭部”可以拼接到“身體”,“身體”可以連接到“四肢”,從而在龐大復(fù)雜的微服務(wù)架構(gòu)中建立起井然有序的拓撲關(guān)系。
錦囊二:合理制定限流規(guī)則
樂高積木的拼接僅僅是物理上的連接,但是微服務(wù)之間一旦建立起路由,就意味著會有數(shù)據(jù)在服務(wù)之間流通。由于不同服務(wù)可以提供的資源和對數(shù)據(jù)流量的承載能力不盡相同,為了防止單個Consumer占用Provider過多的資源,或者突發(fā)的大流量沖擊導(dǎo)致Provider故障。CNAP的【限流】規(guī)則用來限定從Consumer到Provider訪問流量,起到保護Provider服務(wù)的作用。
限流規(guī)則分為【流量來源】和【限流對象】兩部分。流量來源規(guī)定了從哪些服務(wù)或者哪些實例產(chǎn)生的流量需要被限制,可以通過多個篩選條件來確認一組實例。限流對象則用來配置所選Provider中接收流量的具體實例和方法(方法在服務(wù)中用來對請求進行處理,一個方法往往用來實現(xiàn)一個具體的業(yè)務(wù)邏輯),并且限定該方法可以接收來自流量來源的請求QPS上限。
限流規(guī)則就像是城市路網(wǎng)中的交通管制,通過對不同路段不同車道限制單位時間通行車輛數(shù),保障整個交通路網(wǎng)的健康運轉(zhuǎn)。合理地配置限流規(guī)則,可以讓服務(wù)資源能夠更加合理地分配給不同的請求者,也預(yù)防了流量波動可能引發(fā)的服務(wù)故障甚至宕機。
錦囊三:熔斷降級防止“雪崩”
在服務(wù)治理中,雖然我們可以通過限流規(guī)則盡量避免服務(wù)承受過高的流量,但是在實際生產(chǎn)中服務(wù)故障依然難以完全避免。當(dāng)整個系統(tǒng)中當(dāng)某些服務(wù)產(chǎn)生故障時,如果不及時采取措施,這種故障就有可能因為服務(wù)之間的互相訪問而被傳播開來,最終導(dǎo)致故障規(guī)模的擴大,甚至導(dǎo)致整個系統(tǒng)奔潰,這種現(xiàn)象我們稱之為“雪崩”。
熔斷降級其實不只是服務(wù)治理中,在金融行業(yè)也有很廣泛的應(yīng)用。比如當(dāng)股指的波動幅度超過規(guī)定的熔斷點時,交易所為了控制風(fēng)險采取的暫停交易措施。CNAP提供了服務(wù)熔斷降級的能力,用來避免微服務(wù)架構(gòu)中因為少量服務(wù)故障而引發(fā)的服務(wù)“雪崩”。
與路由和限流不同,熔斷規(guī)則是在預(yù)先選定了Consumer后,配置該Consumer在不同Provider發(fā)生故障時的熔斷策略。因此熔斷對象(即Consumer)是固定的,需要通過一組篩選條件指定該Consumer中發(fā)起請求的實例,然后選擇需要熔斷的Provider服務(wù)以及該服務(wù)提供的具體方法。
CNAP支持自動熔斷和手動熔斷,在設(shè)置自動熔斷的情況下,可以根據(jù)指定的熔斷條件觸發(fā)時(如在某個時間窗口內(nèi)異常返回超過某個比例),自動熔斷一段時間內(nèi)從Consumer到Provider之間的所有流量,從而實現(xiàn)對Consumer的保護。
熔斷機制是微服務(wù)架構(gòu)中的“交通管制”,一旦高速公路上發(fā)生交通事故時立即對某個路段或車道進行封禁,從而避免事故進一步擴大。合理利用熔斷規(guī)則可以大大提升整個微服務(wù)架構(gòu)的健壯性,降低系統(tǒng)性風(fēng)險和可能發(fā)生的事故規(guī)模。
結(jié)束語:更多功能正在上線
路由、限流、熔斷,這三個百度智能云所提供的微服務(wù)治理錦囊你是否已經(jīng)查收了呢?其實這還只是CNAP的微服務(wù)治理能力中的冰山一角,我們還有微服務(wù)的監(jiān)控與報警、服務(wù)拓撲與鏈路查詢、異常請求分析等大量功能可以幫助你搭建更加強大的微服務(wù)架構(gòu)。
- 蜜度索驥:以跨模態(tài)檢索技術(shù)助力“企宣”向上生長
- 美媒聚焦比亞迪“副業(yè)”:電子代工助力蘋果,下個大計劃瞄準AI機器人
- 微信零錢通新政策:銀行卡轉(zhuǎn)入資金提現(xiàn)免手續(xù)費引熱議
- 消息稱塔塔集團將收購和碩印度iPhone代工廠60%股份 并接管日常運營
- 蘋果揭秘自研芯片成功之道:領(lǐng)先技術(shù)與深度整合是關(guān)鍵
- 英偉達新一代Blackwell GPU面臨過熱挑戰(zhàn),交付延期引發(fā)市場關(guān)注
- 馬斯克能否成為 AI 部部長?硅谷與白宮的聯(lián)系日益緊密
- 余承東:Mate70將在26號發(fā)布,意外泄露引發(fā)關(guān)注
- 無人機“黑科技”亮相航展:全球首臺低空重力測量系統(tǒng)引關(guān)注
- 賽力斯發(fā)布聲明:未與任何伙伴聯(lián)合開展人形機器人合作
- 賽力斯觸及漲停,汽車整車股盤初強勢拉升
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責(zé)任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。