掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
在前面的幾篇文章當(dāng)中我們聊到了 隔離設(shè)計(jì)、令牌桶算法、漏桶算法、自適應(yīng)限流和熔斷,可用性的建設(shè)遠(yuǎn)不止這些,這一部分的內(nèi)容在進(jìn)階訓(xùn)練營中也講了 7 個(gè)小時(shí),其他部分如果感興趣的話推薦購買源課程觀看。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比灣里網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式灣里網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋灣里地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。
由于前面的文章大部分都在講限流相關(guān)的內(nèi)容,所以我們先看一下不同的限流方式的對比
接下來我們就一起來串聯(lián)我們之前講到的和課程上講到的一些內(nèi)容總結(jié)一下可用性應(yīng)該怎么做。
微服務(wù)可用性設(shè)計(jì)總結(jié)
如上圖所示,我們從一個(gè)簡單的用戶訪問出發(fā),用戶訪問到我們的服務(wù)一般是先通過我們的移動(dòng)客戶端或者是瀏覽器,然后請求再依次通過 CDN、防火墻、API網(wǎng)關(guān)、BFF以及各個(gè)后端服務(wù),整條鏈路還是比較長的。
我們上圖其實(shí)已經(jīng)一部分體現(xiàn)了隔離設(shè)計(jì),所以后面我就不再提了。
客戶端是觸及用戶的第一線,所以這一層做的可用性優(yōu)化尤為的重要
降級: 降級的本質(zhì)是提供給用戶有損服務(wù),所以在觸及用戶的第一線如何安撫好或者說如何騙過用戶的眼睛尤為重要
流控: 在服務(wù)出現(xiàn)問題的時(shí)候,用戶總是會(huì)不斷的主動(dòng)嘗試重試,如果不加以限制會(huì)讓我們本就不堪重負(fù)的后端服務(wù)雪上加霜
BFF 是我們后端服務(wù)的橋頭堡,當(dāng)請求來到 BFF 層的時(shí)候,BFF 既是服務(wù)端,又是客戶端,因?yàn)樗话阈枰埱蠛芏嗥渌暮蠖朔?wù)來完成數(shù)據(jù)的編排,提供客戶端想要的數(shù)據(jù)
超時(shí)控制: 超時(shí)控制需要注意的兩點(diǎn)是默認(rèn)值和超時(shí)傳遞
負(fù)載均衡: 一般我們比較常用的負(fù)載均衡策略就是輪訓(xùn),或者說加個(gè)權(quán)重,這個(gè)比較大的問題就是,我們的服務(wù)性能并不是每個(gè)實(shí)例都一樣,收到宿主機(jī)的型號,當(dāng)前機(jī)器上服務(wù)的數(shù)量等等因素的影響,并且由于我們的服務(wù)是在隨時(shí)漂移和變化的,所以我們沒有辦法為每個(gè)實(shí)例配上合適的權(quán)重。
熔斷: 一般來說如果只是部分實(shí)例出現(xiàn)了問題,我們通過負(fù)載均衡階段+重試一般就可以解決,但如果服務(wù)整體出現(xiàn)了問題,作為客戶端就需要使用熔斷的措施了。
降級: 當(dāng)我們請求一些不那么重要的服務(wù)出現(xiàn)錯(cuò)誤時(shí),我們可以通過降級的方式來返回請求,降級一般在 BFF 層做,可以有效的防止污染其他服務(wù)的緩存。常見的討論有返回 mock 數(shù)據(jù),緩存數(shù)據(jù),空數(shù)據(jù)等
BFF 其實(shí)也是服務(wù)端,但是為了流暢的講解,主要將其作為了客戶端的角色。服務(wù)端主要的是限流的措施,當(dāng)流量從 BFF 來到我們的服務(wù)之后,我們會(huì)使用令牌桶算法嘗試獲取 token,如果 token 不夠就丟棄,如果 token 足夠就完成請求邏輯。
我們的 token 是從哪里來的呢?
攔截器會(huì)定時(shí)的向 Token Server 上報(bào)心跳數(shù)據(jù),包含了一些統(tǒng)計(jì)信息,同時(shí)從 Token Server 獲取一定數(shù)量的 Token,當(dāng) Token Server 接收到請求之后會(huì)通過最大最小公平分享的算法,根據(jù)每個(gè)服務(wù)實(shí)例上報(bào)的統(tǒng)計(jì)信息進(jìn)行 Token 的分配。
這個(gè)其實(shí)就是之前沒有講到的分布式限流的思路,在單個(gè)服務(wù)實(shí)例上又使用了單機(jī)限流的算法
到這里我們的可用性相關(guān)的知識(shí)點(diǎn)就算是告一段落了,前面的文章主要講解了限流的相關(guān)知識(shí)點(diǎn),雖然其他的沒有細(xì)說,但是這一篇總結(jié)也算是都涉及到了,包括隔離設(shè)計(jì)、限流(單機(jī)限流、自適應(yīng)限流、分布式限流)、超時(shí)控制、降級、熔斷、負(fù)載均衡、重試。OK,話不多說,我們下篇文章見。
本文轉(zhuǎn)載自微信公眾號「mohuishou」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系mohuishou公眾號。

我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流