日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

架构设计之服务限流

發布時間:2025/3/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 架构设计之服务限流 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

新浪微博的一名工程師正在家里辦婚禮,突然接到公司緊急電話處理線上流量激增的問題,因為某當紅明星公布了戀情,導致流量增加好多倍,然后系統出現不穩定,用戶訪問不暢。工程師沒辦法只能婚禮現場穿著西裝打開筆記本調試代碼。此時更意識到系統擴容和限流機制是多么重要啊。

類似現實生活中的景區限流,系統也要有對應的限流措施。

對系統服務進行限流,一般有如下幾個模式:

  • 熔斷
    這個模式是需要系統在設計之初,就要把熔斷措施考慮進去。當系統出現問題時,如果短時間內無法修復,系統要自動做出判斷,開啟熔斷開關,拒絕流量訪問,避免大流量對后端的過載請求。系統也應該能夠動態監測后端程序的修復情況,當程序已恢復穩定時,可以關閉熔斷開關,恢復正常服務。

  • 服務降級
    將系統的所有功能服務進行一個分級,當系統出現問題,需要緊急限流時,可將不是那么重要的功能進行降級處理,停止服務,這樣可以釋放出更多的資源供給核心功能的去用。
    例如在電商平臺中,如果突發流量激增,可臨時將商品評論、積分等非核心功能進行降級,停止這些服務,釋放出機器和CPU等資源來保障用戶正常下單,而這些降級的功能服務可以等整個系統恢復正常后,再來啟動,進行補單/補償處理。
    除了功能降級以外,還可以采用不直接操作數據庫,而全部讀緩存、寫緩存的方式作為臨時降級方案。

  • 延遲處理
    這個模式需要在系統的前端設置一個流量緩沖池,將所有的請求全部緩沖進這個池子,不立即處理。然后后端真正的業務處理程序從這個池子中取出請求依次處理,常見的可以用隊列模式來實現。這就相當于用異步的方式去減少了后端的處理壓力,但是當流量較大時,后端的處理能力有限,緩沖池里的請求可能處理不及時,會有一定程度延遲。

  • 特權處理
    這個模式需要將用戶進行分類,通過預設的分類,讓系統優先處理需要高保障的用戶群體,其它用戶群的請求就會延遲處理或者直接不處理。

  • 那在實際項目中,對訪問流量的限制,可采用如下幾種技術方法:

    • 熔斷技術
      熔斷的技術可以重點參考Netflix的開源組件hystrix的做法,主要有三個模塊:熔斷請求判斷算法、熔斷恢復機制、熔斷報警。

    • 計數器方法
      系統維護一個計數器,來一個請求就加1,請求處理完成就減1,當計數器大于指定的閾值,就拒絕新的請求。
      基于這個簡單的方法,可以再延伸出一些高級功能,比如閾值可以不是固定值,是動態調整的。另外,還可以有多組計數器分別管理不同的服務,以保證互不影響等。

    • 隊列方法
      就是基于FIFO隊列,所有請求都進入隊列,后端程序從隊列中取出待處理的請求依次處理。
      基于隊列的方法,也可以延伸出更多的玩法來,比如可以設置多個隊列以配置不同的優先級。

    • 令牌桶方法
      首先還是要基于一個隊列,請求放到隊列里面。但除了隊列以外,還要設置一個令牌桶,另外有一個腳本以持續恒定的速度往令牌桶里面放令牌,后端處理程序每處理一個請求就必須從桶里拿出一個令牌,如果令牌拿完了,那就不能處理請求了。我們可以控制腳本放令牌的速度來達到控制后端處理的速度,以實現動態流控。

    我們在做服務限流的時候,還是有一些原則和事項需要注意的:

    • 實時監控:系統必須要做好全鏈路的實時監控,才能保證限流的及時檢測和處理。

    • 手動開關:除系統自動限流以外,還需要有能手動控制的開關,以保證隨時都可以人工介入。

    • 限流的性能:限流的功能理論上是會在一定程度影響到業務正常性能的,因此需要做到限流的性能優化和控制。

    系統故障常常都是不可預測且難以避免的,因此作為系統設計師的我們,必須要提前預設各種措施,以應對隨時可能的系統風險。

    總結

    以上是生活随笔為你收集整理的架构设计之服务限流的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。