偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

我們一起聊聊接口高可用整體框架

開發(fā) 架構(gòu)
接口高可用是系統(tǒng)架構(gòu)設(shè)計中的重要環(huán)節(jié),通過限流、排隊、降級和熔斷四種核心技術(shù),可以有效防止系統(tǒng)在高負載或故障情況下出現(xiàn)雪崩效應(yīng)和鏈式效應(yīng)。

接口高可用整體框架

接口高可用架構(gòu)的本質(zhì)是"丟車保帥"策略,在系統(tǒng)面臨壓力時,業(yè)務(wù)或用戶體驗會部分有損,但能保證核心功能正常運行。接口高可用主要應(yīng)對兩種效應(yīng):雪崩效應(yīng)(請求量超過系統(tǒng)處理能力導(dǎo)致系統(tǒng)性能螺旋快速下降)和鏈式效應(yīng)(某個故障引起后續(xù)一連串的故障)。

接口高可用的四大核心技術(shù)包括:限流、排隊、降級和熔斷。其中限流和排隊主要用于防止雪崩效應(yīng),而降級和熔斷則主要用于防止鏈式效應(yīng)。

一、限流

限流是在用戶請求全流程的各個環(huán)節(jié)進行的流量控制措施,可分為三個層次:1. 請求端限流:在發(fā)起請求時就進行限流,被限流的請求實際上并沒有發(fā)給后端服務(wù)器。常見手段包括限制請求次數(shù)(如按鈕變灰)和嵌入簡單業(yè)務(wù)邏輯(如生成隨機數(shù))。這種方式實現(xiàn)簡單,流量在本地就被控制,但只能防君子不防小人(腳本攻擊)。

2. 接入端限流:在接收到業(yè)務(wù)請求時進行限流,避免業(yè)務(wù)請求進入實際的業(yè)務(wù)處理流程。常見手段包括限制同一用戶請求頻率和隨機拋棄無狀態(tài)請求(如限流瀏覽請求,不限流下單請求)。這種方式實現(xiàn)較復(fù)雜,可以防刷,但限流閾值可能需要人工判斷。

3. 微服務(wù)限流:作為單個服務(wù)的自我保護措施,在處理能力不夠時丟棄新的請求。這種方式實現(xiàn)簡單,但處理能力難以精準配置。

限流算法主要有三種:

1. 時間窗口限流:   - 固定時間窗:統(tǒng)計固定時間周期內(nèi)的請求量,超過閾值則限流。存在臨界點問題。   - 滑動時間窗:統(tǒng)計滑動時間周期內(nèi)的請求量,超過閾值則限流。判斷比較準確,但實現(xiàn)稍微復(fù)雜。

2. 漏桶算法:   請求放入"桶"(如消息隊列),業(yè)務(wù)處理單元從桶里拿請求處理,桶滿則丟棄新的請求。技術(shù)本質(zhì)是總量控制,桶大小是設(shè)計關(guān)鍵。優(yōu)點是可以應(yīng)對瞬時高并發(fā)流量(如0點簽到,整點秒殺),缺點是桶大小動態(tài)調(diào)整比較困難,無法精確控制處理速度。      Java實現(xiàn)漏桶算法的關(guān)鍵是:業(yè)務(wù)線程和IO線程分離,通過隊列傳遞請求;合理配置BlockingQueue的長度。      漏桶算法的變種是寫緩沖(Buffer),如果漏桶容量無限(如用Kafka消息隊列),則可以用來做寫緩沖。技術(shù)本質(zhì)是同步改異步,緩沖所有請求,慢慢處理。適用于高并發(fā)寫入請求,如熱門微博評論。

3. 令牌桶算法:   某個處理單元按照指定速率將令牌放入"桶",業(yè)務(wù)處理單元收到請求后需要獲取令牌,獲取不到就丟棄請求。技術(shù)本質(zhì)是速率控制,令牌產(chǎn)生的速度是設(shè)計關(guān)鍵。優(yōu)點是可以動態(tài)調(diào)整處理速度,缺點是突發(fā)流量時可能丟棄很多請求,實現(xiàn)相對復(fù)雜。適用于控制訪問第三方服務(wù)的速度(防止把下游壓垮)和控制自己的處理速度(防止過載)。

二、排隊

排隊的基本原理是收到請求后并不同步處理,而是將請求放入隊列,系統(tǒng)根據(jù)能力異步處理。技術(shù)本質(zhì)是請求緩存+同步改異步+請求端輪詢。適用于秒殺、搶購等場景。

排隊的架構(gòu)設(shè)計關(guān)鍵在于:如何設(shè)計異步處理流程和如何保證用戶體驗(前端、客戶端交互)。

排隊的具體實現(xiàn)方案通常包括以下步驟:1. 用戶發(fā)起請求到排隊服務(wù)器2. 排隊服務(wù)器將請求放入隊列(如Kafka),并返回排隊號給用戶3. 用戶使用排隊號輪詢查詢處理狀態(tài)4. 業(yè)務(wù)服務(wù)器從隊列獲取請求并處理,處理完成后生成token并存儲(如Redis)5. 用戶查詢到token后,帶著token訪問實際的業(yè)務(wù)接口6. 業(yè)務(wù)接口驗證token有效性,并返回業(yè)務(wù)處理結(jié)果

以1號店雙十一秒殺排隊為例,其架構(gòu)包括:排隊模塊(負責接收用戶搶購請求,將請求以先入先出方式保存)、調(diào)度模塊(負責排隊模塊到服務(wù)模塊的動態(tài)調(diào)度)和服務(wù)模塊(負責調(diào)用真正業(yè)務(wù)處理服務(wù),并返回處理結(jié)果)。

三、降級

降級的基本原理是直接停用某個接口或URL,收到請求后直接返回錯誤(如HTTP 503)。主要應(yīng)用于故障應(yīng)急,通常將非核心業(yè)務(wù)降級,保住核心業(yè)務(wù),例如降級日志服務(wù)、升級服務(wù)等。

降級架構(gòu)實現(xiàn)的設(shè)計要點:1. 使用獨立系統(tǒng)操作降級,可以是獨立的降級系統(tǒng),也可以是嵌入到其它系統(tǒng)的降級功能2. 人工判斷,人工執(zhí)行,不要過度依賴自動化系統(tǒng)

四、熔斷

熔斷的基本原理是下游接口故障時,一定時期內(nèi)不再調(diào)用該接口。主要應(yīng)用于服務(wù)自我保護,防止故障鏈式效應(yīng)。

熔斷架構(gòu)實現(xiàn)的細節(jié):1. 可以通過配置中心或配置文件來配置熔斷策略2. 熔斷處理一般由框架或SDK提供,例如Dubbo+Hystrix3. 熔斷策略一般按照失敗次數(shù)、失敗比例、響應(yīng)時長等來確定

總結(jié)

接口高可用是系統(tǒng)架構(gòu)設(shè)計中的重要環(huán)節(jié),通過限流、排隊、降級和熔斷四種核心技術(shù),可以有效防止系統(tǒng)在高負載或故障情況下出現(xiàn)雪崩效應(yīng)和鏈式效應(yīng)。這些技術(shù)各有特點和適用場景,架構(gòu)師需要根據(jù)具體業(yè)務(wù)需求選擇合適的技術(shù)組合,實現(xiàn)系統(tǒng)的高可用性。

責任編輯:武曉燕 來源: 二進制跳動
相關(guān)推薦

2024-04-15 12:48:00

2022-06-26 09:40:55

Django框架服務(wù)

2024-04-09 07:53:04

高可用架構(gòu)擴展性

2024-01-10 07:23:52

高可用策略實踐

2025-02-28 08:46:24

框架微服務(wù)架構(gòu)

2024-11-27 08:47:12

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循環(huán)GolangGo

2023-11-29 09:04:00

前端接口

2023-08-04 08:20:56

DockerfileDocker工具

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-06-30 08:18:51

敏捷開發(fā)模式

2023-09-10 21:42:31

2021-10-14 11:08:17

大數(shù)據(jù)框架內(nèi)存

2024-08-02 09:49:35

Spring流程Tomcat

2024-02-26 00:00:00

Go性能工具

2022-11-12 12:33:38

CSS預(yù)處理器Sass

2023-12-28 09:55:08

隊列數(shù)據(jù)結(jié)構(gòu)存儲

2023-07-27 07:46:51

SAFe團隊測試
點贊
收藏

51CTO技術(shù)棧公眾號