主頁 >  其他 > 構建高可用云原生應用,如何有效進行流量管理?

構建高可用云原生應用,如何有效進行流量管理?

2023-05-26 10:11:45 其他

摘要:對于那些希望使用華為云的云原生服務的人來說,這篇文章提供了很好的指導,讓他們了解如何通過容錯來保證他們的服務的可用性和穩定性,

本文分享自華為云社區《構建高可用云原生應用,如何有效進行流量管理?》,作者: breakDawn,

隨著云原生的概念越來越火,服務的架構應該如何發展和演進,成為很多程式員關心的話題,大名鼎鼎的《深入理解java虛擬機》一書作者于21年推出了新作《鳳凰架構》,從這本書中可以看到當前時下很多最新的技識訓者理念,

因此本文以及后續都將持續沉淀發布這本書的學習筆記和思考,也歡迎購買該書進行詳細學習,或者關注后續的學習筆記內容發布,了解精華內容和總結思考,

流量治理

1 服務容錯

1.1 容錯策略

文章中介紹了故障轉移、快速失敗、安全失敗、沉默失敗、故障恢復、并行呼叫、廣播呼叫等幾種容錯策略,我用表格的形式直觀呈現一下這幾種策略的區別,方便理解和選型:

1.2 容錯設計模式

1.斷路器模式

即服務中發請求的地方都通過一個斷路器模塊來轉發發送
當10秒內請求數量達到20,且失敗閾值達到50%以上(這些引數都可以調整), 則認為出現問題, 于是主動進行服務熔斷, 斷路器收到的請求自動回傳錯誤,不再去呼叫遠程服務, 這樣可避免請求執行緒各種阻塞,能及時回傳報錯,
中間會保持有間隔的重試直到恢復后,關閉斷路,

2.艙壁隔離模式

如果一個服務中,可能要同時呼叫A\B\C三個服務,但是卻共用一個執行緒池,
如果呼叫C服務超時,而呼叫C的請求源源不斷打來,會造成C服務的請求執行緒全在阻塞,直接把整體執行緒池給占滿了,影響了對A\B服務的呼叫,

一種隔離措施是對每個呼叫服務分別維護一個執行緒池,缺點是額外增加了排隊、調度、背景關系切換的開銷,據說Hystrix執行緒池如果開啟了服務隔離,會增加3~10ms的延遲,

另一種隔離措施是直接自己定義三個服務的計數器,當服務執行緒數量到達閾值,自動對這個服務呼叫做限流,

3.重試模式

故障轉移和故障恢復這2個策略一般都是借助重試模式來處理的,進行重復呼叫,

重試模式應該滿足以下條件才能使用:

  • 僅在主路核心邏輯的關鍵服務上進行同步的重試, 而非關鍵的服務
  • 只對瞬時故障進行重試,對于業務故障不進行重試
  • 只對冪等型的服務進行重試

重試模式應該有明確的終止條件,例如:

  • 超時終止
  • 次數終止

重試一定要謹慎開啟, 有時候在網關、負載均衡器里也會配置一些默認的重試, 一旦鏈路很長且都有重試,那么系統中重試的次數將會大大增加,

2 流量控制

流量控制需要解決以下3個問題

  • 依據什么指標來限流
  • 如何限流
  • 超額流量如何處理

2.1 流量統計指標(依據什么指標來限流)

  • 每秒事務數TPS: 事務是業務邏輯上具有原子操作的業務操作,對于對買書介面而言, 買書就是一個事務, 背后的其他請求是不感知的,
  • 每秒請求數HPS: 就是系統每秒處理的請求數, 如果1事務中只有1個請求, 那么TPS=HPS, 否則HPS>TPS
  • 每秒查詢書QPS: 是一臺服務器能夠回應的查詢次數, 對于單節點系統而言,QPS=HPS,對于一個分布式系統而言HPS>TPS

通過限制最大TPS來限流的話,不能夠準確反映出系統的壓力, 因此主流系統傾向使用HPS作為首選的限流指標,

2.2 限流設計模式(如何限流)

流量計數器模式

統計每秒內的請求數是否大于閾值
缺點:

  1. 每秒是基于1.0s-2.0這樣的區間統計, 但如果是0.5-1.5 和1.5-2.5分別超出閾值,但是1.0-2.0沒有超過閾值,則會出現問題,
  2. 每秒的請求超過閾值,也不代表系統就真的承受不住,導致五殺

滑動時間窗模式

滑動時間窗專門解決了流量計數器模式的缺點,準備一個長度為10的陣列,每秒觸發1次的定時器,

  1. 將陣列最后一位的元素丟棄,并把所有元素都后移一位,然后在陣列的第一位插入一個新的空元素;
  2. 將計數器中所有的統計資訊寫入第一位的空元素;
  3. 對陣列中所有元素做統計,清空計數器資料,可以保證在任意時間片段內,只通過簡單的呼叫計數比較, 控制請求次數不超過閾值

缺點在于只能用于否決式限流, 必須強制失敗或者降級,無法進行阻塞等待的處理,

漏桶模式

漏桶和令牌桶可以適用于阻塞等待的限流,漏桶就是一個以請求物件作為元素的先入先出隊, 佇列程度等于漏桶大小,當佇列已滿拒絕信的請求進入,比較困難的原因在于很難確定通的大小和水的流出速度,調參難度很大,

令牌桶模式

每隔一定時間,往桶里放入令牌,最多可以放X個,每次請求消耗掉一個,

可以不依賴定時器實作令牌的放入,而是根據時間戳,在取令牌的時候當發現時間戳滿足條件則在那個時候放入令牌即可

2.3 分布式限流

前面的4個限流模式都只是單機限流,經常放在網關入口處,不適用于整個服務集群的復雜情況,例如有的服務消耗多有的服務消耗少,都放在入口處限流情況其實很多,

可以基于令牌桶的基礎上,在入口網關處給不同服務加不同的消耗令牌權重,達到分布式集群限流的目的

總結

流量治理技術對云原生場景的重要性

以上主要介紹了服務容錯和容錯設計模式,涉及到不同的容錯策略和容錯設計模式,如故障轉移、快速失敗、安全失敗、沉默失敗、故障恢復、并行呼叫和廣播呼叫,

這2個設計可以保證系統的穩定性和健壯性,這篇文章涉及的話題與云原生服務息息相關,因為云原生應用程式之間會頻繁通過進行請求和互動,需要通過容錯和彈性來保證高可用性,

因此,對于那些希望使用華為云的云原生服務的人來說,這篇文章提供了很好的指導,讓他們了解如何通過容錯來保證他們的服務的可用性和穩定性,

華為云如何在流量治理中體現作用

如果能通過將服務API注冊到華為云提供的APIG網關上,似乎能夠很方便地達成上述2個設計,

比如APIG支持斷路器策略,是API網關在后端服務出現性能問題時保護系統的內置機制,當API的后端服務出現連續N次超時或者時延較高的情況下,會觸發斷路器的降級機制,向API呼叫方回傳固定錯誤或者將請求轉發到指定的降級后端,當后端服務恢復正常后,斷路器關閉,請求恢復正常,APIG-斷路器策略

同時APIG還提供了流量控制策略,支持從用戶、憑據和時間段等不同的維度限制對API的呼叫次數,保護后端服務,支持按分/按秒粒度級別的流量控制,閱讀了上文中提到的幾個流量策略,再去看APIG里配置的流量策略值,則會很容易理解,APIG-流量控制策略

可以看到對于這些常見的經典服務設計策略,無需再重復造輪子,使用已有云服務,可以很快地實作相關功能,提升產品的上線速度和迭代效率,

 

點擊關注,第一時間了解華為云新鮮技術~

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/553438.html

標籤:其他

上一篇:Selenium自動化測驗面試必備:高頻面試題及答案整理

下一篇:返回列表

標籤雲
其他(159726) Python(38169) JavaScript(25452) Java(18129) C(15231) 區塊鏈(8268) C#(7972) AI(7469) 爪哇(7425) MySQL(7211) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5341) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4576) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2434) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1976) 功能(1967) Web開發(1951) HtmlCss(1944) C++(1922) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1861) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 構建高可用云原生應用,如何有效進行流量管理?

    摘要:對于那些希望使用華為云的云原生服務的人來說,這篇文章提供了很好的指導,讓他們了解如何通過容錯來保證他們的服務的可用性和穩定性。 本文分享自華為云社區《構建高可用云原生應用,如何有效進行流量管理?》,作者: breakDawn。 隨著云原生的概念越來越火,服務的架構應該如何發展和演進,成為很多程 ......

    uj5u.com 2023-05-26 10:11:45 more
  • Selenium自動化測驗面試必備:高頻面試題及答案整理

    自動化測驗已經成為現代軟體測驗中不可或缺的一部分。在自動化測驗中,Selenium是最受歡迎的工具之一,因為它可以模擬用戶與Web應用程式的互動。因此,對于許多測驗工程師來說,熟練掌握Selenium框架是非常重要的。如果你正在尋找一份自動化測驗作業,那么你可能會被問到一些關于Selenium的面試... ......

    uj5u.com 2023-05-26 10:06:15 more
  • 教你1分鐘搞定2小時字幕

    摘要:本文將介紹如何使用錄音檔案識別極速版給無字幕視頻自動生成字幕。 本文分享自華為云社區《利用錄音檔案極速版為視頻生成字幕》,作者:戈兀。 引言 越來越多的人們使用抖音、B站等視頻app,記錄、分享日常生活,隨之互聯網上產生了大量的長、短視頻。字幕是影響視頻觀看體驗的重要因素。以日常分享為主的視頻 ......

    uj5u.com 2023-05-26 10:05:53 more
  • Pytest - setup 和 teardown

    ## Pytest - setup 和 teardown + 執行用例肯定有些需要前置條件或后置操作,例如前置的用戶登陸,后置的清理資料等操作; + unittest提供了兩種前置(setup、setupClass)和兩種后置(teardown、teardownClass); + 相比之下,pyte ......

    uj5u.com 2023-05-26 09:52:58 more
  • Dummynet簡單部署

    本文分享自天翼云開發者社區《Dummynet簡單部署》,作者:凸凹

    部署流程

    ^準備內核版本

    ^參看系統內核版本

    uname -r

    我們需要將ipfw編譯成內核模塊,請確保ipfw用到的內核原始碼版本同你linux系統運行內核版本一致。 ......

    uj5u.com 2023-05-26 09:29:32 more
  • 【PC遷移與管理】上海道寧為每個用戶和每個 PC 傳輸和遷移場景提

    PCmover 是一款可以自動將所有選定檔案、檔案夾、設定、用戶組態檔甚至應用程式,從舊PC傳輸、恢復和升級到新PC或作業系統的軟體 ......

    uj5u.com 2023-05-26 09:15:47 more
  • Pop!_OS 22.04(Ubuntu 22.04)安裝Nvidia GPU 驅動、CUDA、cuDNN 以

    在Pop!_OS 22.04(Ubuntu 22.04)上安裝GPU驅動nvidia-driver-530、CUDA 12.1、cuDNN 8.9.1.23、nvidia-docker2 ......

    uj5u.com 2023-05-26 09:15:10 more
  • 直接用中文寫提示詞的Stable Diffusion擴展:sd-prompt-translator

    最近在研究AIGC,先是玩了一下Midjourney,后來Midjourney免費額度用完了,也不再開放免費額度給新用戶使用了,于是轉而研究Stable Diffusion。 Stable Diffusion(以下簡稱SD)的最大優點就是開源免費,而且對硬體的要求不高,Mac M1芯片就能跑,當然如 ......

    uj5u.com 2023-05-26 09:00:03 more
  • 教你1分鐘搞定2小時字幕

    摘要:本文將介紹如何使用錄音檔案識別極速版給無字幕視頻自動生成字幕。 本文分享自華為云社區《利用錄音檔案極速版為視頻生成字幕》,作者:戈兀。 引言 越來越多的人們使用抖音、B站等視頻app,記錄、分享日常生活,隨之互聯網上產生了大量的長、短視頻。字幕是影響視頻觀看體驗的重要因素。以日常分享為主的視頻 ......

    uj5u.com 2023-05-26 08:53:40 more
  • 《中國電信天翼云PON SD-WAN技術白皮書》來了,這份技術指南不要錯

    5月17日,在中國電信第三屆科技節·上海站暨517世界電信榷訓動上,天翼云聯合中國電信上海公司正式發布《中國電信天翼云PON SD-WAN技術白皮書》,為中國電信深入實施“云轉數改”戰略,助力百萬政企客戶進行數字化轉型提供了技術理論支撐,更為業內突破云網關鍵核心技術,構建云網融合邊界接入生態體系提供... ......

    uj5u.com 2023-05-26 08:52:37 more