成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

削峰填谷,你只知道消息隊列?

開發 前端
在后端的思維里面,削峰動作更多是服務端同學的工作和思考。但是在整體系統的設計中,客戶端的削峰也是必不可少的。通過客戶端的削峰,可以削減服務端的壓力,從而保障系統的可用性。

[[415619]]

本文轉載自微信公眾號「Java補習課」,作者九靈。轉載本文請聯系Java補習課公眾號。

概述

日常分享Java核心技術,分布式架構原理,中間件應用與原理等高質量原創文章。致力幫助更多小朋友加入大廠!

今天想和大家聊聊削峰填谷,最近 B 站發生的機房斷電事件,和A站的服務雪崩,讓我們對高可用關注了起來,之前梳理了高可用三劍客 限流,熔斷和降級,今天想繼續聊聊削峰填谷,也為后面的高性能篇 做一下鋪墊, 想回顧一下之前相關內容的童鞋,可以查看一下,下面文章,歡迎點贊,收藏,關注三連,感謝!

高可用系列文章:

  • 《面試補習》- 你來說說什么是限流?
  • 限流神器Sentinel,不了解一下嗎?
  • 阿里P7大佬帶你解密Sentinel
  • 《面試補習》-熔斷降級我學會了!

削峰和填谷

技術源于生活

  1. 削峰填谷(Peak cut)是調整用電負荷的一種措施。 
  2. 根據不同用戶的用電規律,合理地、有計劃地安排和組織各類用戶的用電時間。 
  3. 以降低負荷高峰,填補負荷低谷。減小電網負荷峰谷差,使發電、用電趨于平衡。 

在我們理解的削峰填谷的流量趨勢圖,如下圖所示,在流量高峰階段削去高峰流量,在流量下降時,填補這部分流量,使流量趨向平衡。

簡單概述一下,削峰 和 填谷

  • 削峰:為保證服務可用,剔除部分流量。 --業務有損
  • 填谷:在服務能力盈余的情況下,提供補償操作。--業務補償

削峰

通過削去流量尖刺,讓請求流量趨向平穩,以保障服務的穩定性。

  • 客戶端削峰
  • 服務端削峰

上面有提到,削峰是業務有損的行為,削掉的這部分流量,可能在電商系統中,致使我們丟失這個用戶。

1、客戶端削峰

在后端的思維里面,削峰動作更多是服務端同學的工作和思考。但是在整體系統的設計中,客戶端的削峰也是必不可少的。通過客戶端的削峰,可以削減服務端的壓力,從而保障系統的可用性。

1.1、資源動靜分離

這個方案比較簡單,或者說目前基本都采用的方式。通過將靜態資源與服務端隔離,在活動開始前,將資源預熱到CDN,減輕服務端的壓力。客戶端與服務端的交互,只有動態數據的交互。

1.2、請求削峰

1)、設置兩次請求最小有效時間間隔

設置兩次請求之間的時間間隔為 t, 在每次請求間隔內的請求,都會被忽略掉,不向服務的發起請求,假設 t 秒內,每個用戶只會觸發一次有效請求,對應的 qps 為 1/t,如果用戶量為 Q, 那么最大的 qps 為 Q / t。

2)、公平性策略

每個用戶一次活動周期內有效請求概率是P,比如概率0.2,也就是5次中1次請求機會,或者10次中2次請求機會。根據隨機算法+插值算法生成請求序列:

根據上述方式就可以得到公平性策略,粒度可以自由把控

2、服務端削峰

2.1、限流削峰

在之前的限流相關文章中有介紹到,服務端限流主要有

  • 網關限流
  • 容器限流
  • 服務器限流

在服務器限流中, 主要介紹了,使用Sentinel 來做流量控制,通過下面的流量圖可以看到,流量控制在了 2 qps ,峰值流量通過快速失敗的方式返回。那么,對于這部分被拒絕的流量,我們從業務角度來看的話,是有損的。

2.2、MQ削峰

在消息隊列的架構中,有 pull 和 push 兩種消息同步的方式,我們可以通過下游系統 訂單系統 主動拉取pull 的方式,來保障下游服務的流量穩定。

那么,我們是否可以脫了了限流,只通過 MQ 的方式,來達到削峰呢?答案是:不能!

假設秒殺系統的 流量是 :10000 qps,訂單系統的消費能力只有 100qps。活動時間如果持續比較長,會產生消息堆積過多。一方面會對消息中間件造成壓力,另一方面,消息的有效性也沒辦法保障。

因此在這個鏈路圖中,實際場景會是這樣子:

流量先經過 Sentinel等限流中間件的調平后,由秒殺系統提交 MQ 任務。

填谷

從上面的削峰策略可以看到,大部分的削峰 都是業務有損的,從客戶端發起請求限流 ,到服務端的中間件限流。對于這部分的請求,都是直接丟棄的。而在 MQ削峰 的場景下,我們可以通過將請求緩存 的方式,減緩流量壓力,有下游服務來控制請求壓力,從而達到削峰的效果。

脫離了削峰,就不存在填谷了

在 MQ削峰 的場景中,我們主要保障的是 訂單系統 的流量穩定性, 如果 秒殺系統的消息流量為 100tps,訂單系統的處理能力為 200tps,那么,對于下游系統來說,就不存在峰值流量了!

如有其他場景,可以交流糾正

填谷補償

在峰值流量階段,出現部分流量無法得到馬上的處理,通過峰值流量過去后,在消費能力盈余的情況下,對之前的請求做補償操作,使整體流量趨向于平穩。

比如在上述鏈路圖中,秒殺活動持續了 1分鐘,

  • 產生請求為:60 * 100 = 6000 個請求。
  • 消費時間為:6000 / 50 = 120 秒。

在用戶可接受的范圍內(1分鐘的等待),獲取自己的秒殺下單結果。同時對訂單系統的負載做好保護。

消息隊列的風險

相對于其他的削峰方案,看起來MQ削峰方案是最優的,那為什么我們在 流控方案上,還是更加注重限流方案上。而不是統一使用 MQ削峰呢?

每個方案都存在利弊,引入 MQ,能為我們解決 削峰,異步和解耦等問題。但是,在引入MQ中間件的同時,也會為我們帶來以下的問題:

  • 中間件可用性:MQ隊列不可用,會導致整個鏈路不可用,嚴重會造成雪崩
  • 消息可靠性:消息發送,消費需要得到保障
  • 消息堆積:消息生產過快,導致MQ中間件壓力過大
  • 消息重復:消費冪等能力支撐
  • 消息順序:部分場景要求消費按照順序執行

 

 

責任編輯:武曉燕 來源: Java補習課
相關推薦

2017-04-12 23:50:41

MQ流量緩沖

2017-08-16 16:30:01

CMQ消息實踐

2025-01-20 07:00:00

2025-03-27 03:40:00

分布式系統Kafka

2022-02-07 12:10:01

消息

2024-06-14 15:46:46

2024-09-18 07:00:00

消息隊列中間件消息隊列

2022-03-07 08:13:06

MQ消息可靠性異步通訊

2021-05-07 15:28:03

Kafka客戶端Sarama

2023-04-26 09:16:17

2024-02-20 08:16:10

阻塞隊列源碼

2020-06-12 09:40:32

消息隊列Java線程

2020-07-30 09:00:00

華為

2021-01-20 20:37:09

AI

2020-03-12 09:34:05

Redis數據技術

2024-03-22 12:10:39

Redis消息隊列數據庫

2022-03-15 09:58:12

單例模式系統

2022-08-09 08:31:29

RocketMQ消息中間件

2022-11-29 07:48:16

2024-10-18 14:29:28

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品福利在线 | 每日更新av | av播播 | 免费在线观看av的网站 | 国产在线拍偷自揄拍视频 | 日韩欧美精品在线 | 中文字幕日韩欧美一区二区三区 | 久久久久久久一级 | 欧美一级免费看 | 亚洲福利在线观看 | 精品亚洲一区二区三区 | 91精品国产乱码久久久久久久久 | 91丨国产| 国产精品久久国产精品久久 | 91成人午夜性a一级毛片 | 亚洲欧美中文日韩在线v日本 | 一区二区三区在线免费观看 | 成人网av| 91豆花视频 | 亚洲综合天堂网 | 欧美国产视频 | 精品国产视频在线观看 | 精品欧美激情精品一区 | 亚洲久久久 | 亚洲成人精品在线 | 久久精品一区 | 国内精品伊人久久久久网站 | 欧美精品在线免费 | 免费播放一级片 | 精品视频在线播放 | 亚洲黄色高清视频 | 性色的免费视频 | 亚洲九色 | 国产亚洲成av人片在线观看桃 | 欧美电影在线观看网站 | 久久亚洲欧美日韩精品专区 | 99re视频在线 | 91久久精品国产91久久性色tv | 日韩在线小视频 | 亚洲网站在线播放 | 亚洲精品自在在线观看 |