日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

11個高可用設計實戰技巧,輕松應對大廠面試

來源: 責編: 時間:2024-07-03 10:07:03 228觀看
導讀大家好,我是Tom哥。大型互聯網架構設計,講究一個四件套組合拳玩法,高并發、高性能、高可用、高擴展。如果能掌握這四個方面,應付大廠面試以及日常工作中的架構方案設計基本不是什么難題。今天,Tom哥就帶大家學習下高可用都

大家好,我是Tom哥。HF428資訊網——每日最新資訊28at.com

大型互聯網架構設計,講究一個四件套組合拳玩法,高并發、高性能、高可用、高擴展。HF428資訊網——每日最新資訊28at.com

如果能掌握這四個方面,應付大廠面試以及日常工作中的架構方案設計基本不是什么難題。HF428資訊網——每日最新資訊28at.com

今天,Tom哥就帶大家學習下高可用都有哪些設計技巧?HF428資訊網——每日最新資訊28at.com

圖片圖片HF428資訊網——每日最新資訊28at.com

一、系統拆分

有句古話 "牽一發而動全身"。HF428資訊網——每日最新資訊28at.com

面對一個龐然大物,如果沒有一個合理的分工分層。任何一個小小失誤都會被無限放大,釀成巨大災難。HF428資訊網——每日最新資訊28at.com

萬物相通,回到我們的軟件架構。HF428資訊網——每日最新資訊28at.com

早前的系統都是單體系統,比如電商業務,會員、商品、訂單、物流、營銷等模塊都堆積在一個系統。每到節假日搞個大促活動,系統擴容時,一擴全擴,一掛全掛。只要一個接口出了問題,整個系統都不可用。HF428資訊網——每日最新資訊28at.com

“雞蛋不能放在一個籃子里”,這種連帶風險換誰都承受不起。HF428資訊網——每日最新資訊28at.com

因此,系統拆分 成了更多人的選擇。HF428資訊網——每日最新資訊28at.com

慢慢的就有了我們現在看到的微服務架構,將一個復雜的業務域按DDD的思想拆分成若干子系統,每個子系統負責專屬的業務功能,做好垂直化建設,各個子系統之間做好邊界隔離,降低風險蔓延。HF428資訊網——每日最新資訊28at.com

二、解耦

軟件開發有個重要原則“高內聚、低耦合”。HF428資訊網——每日最新資訊28at.com

小到接口抽象、MVC 分層,大到 SOLID 原則、23種設計模式。核心都是降低不同模塊間的耦合度,避免一處錯誤改動影響到整個系統。HF428資訊網——每日最新資訊28at.com

就以開閉原則為例,對擴展是開放的,對修改是關閉的。隨著業務功能迭代,如何做到每次改動不對原來的舊代碼產生影響。HF428資訊網——每日最新資訊28at.com

Spring 框架給我們提供了一個很好的思路,里面有個重要設計 AOP ,全稱(Aspect Oriented Programming),面向切面編程。HF428資訊網——每日最新資訊28at.com

核心就是采用動態代理技術,通過對字節碼進行增強,在方法調用的時候進行攔截,以便于在方法調用前后,增加我們需要的額外處理邏輯。HF428資訊網——每日最新資訊28at.com

當然還有一個重要思路就是事件機制,通過發布訂閱模式,新增的需求,只需要訂閱對應的事件通知,針對性消費即可。不會對原來的代碼侵入性修改,是不是會好很多。HF428資訊網——每日最新資訊28at.com

三、異步

同步指一個進程在執行請求的時候,若該請求需要一段時間才能返回信息,那么這個進程將會一直等待下去,直到收到返回信息才繼續執行下去。HF428資訊網——每日最新資訊28at.com

效率會大大降低,聰明的人想到了 異步 方式。HF428資訊網——每日最新資訊28at.com

如果是非實時響應的動作可以采用異步來完成,線程不需要一直等待,而是繼續執行后面的邏輯。HF428資訊網——每日最新資訊28at.com

如:線程池(ThreadPoolExecutor)、消息隊列 等都是這個原理HF428資訊網——每日最新資訊28at.com

圖片圖片HF428資訊網——每日最新資訊28at.com

比如一個用戶在淘寶下了一筆購物訂單,關心的是訂單是否創建成功,能否進行后續的付款流程HF428資訊網——每日最新資訊28at.com

至于其他業務動作,如短信通知、郵件通知、生成訂單快照、創建超時任務記錄,這些非核心動作用戶并不是特別關心。HF428資訊網——每日最新資訊28at.com

我們可以采用消息隊列的發布/訂閱 機制,數據庫插入訂單記錄后,發布一條消息到 MQ,然后就可以告知用戶下單成功。HF428資訊網——每日最新資訊28at.com

其他事情,由不同的 Task 任務訂閱消息異步處理,彼此間互不干擾。HF428資訊網——每日最新資訊28at.com

四、重試

重試主要是體現在遠程的RPC調用,受 網絡抖動、線程資源阻塞 等因素影響,請求無法及時響應。HF428資訊網——每日最新資訊28at.com

為了提升用戶體驗,調用方可以通過 重試 方式再次發送請求,嘗試獲取結果。比過:瀏覽器的 F5 刷新機制就是類似道理。HF428資訊網——每日最新資訊28at.com

接口重試是一把雙刃劍,雖然客戶端收到了響應超時結果,但是我們無法確定,服務端是否已經執行完成。如果盲目地重試,可能會帶來嚴重后果。比如:銀行轉賬。HF428資訊網——每日最新資訊28at.com

重試通常跟冪等組合使用,如果一個接口支持了 冪等,那你就可以隨便重試HF428資訊網——每日最新資訊28at.com

關于的 冪等 的解決方案HF428資訊網——每日最新資訊28at.com

  • 插入前先執行查詢操作,看是否存在,再決定是否插入
  • 增加唯一索引
  • 建防重表
  • 引入狀態機,比如付款后,訂單狀態調整為已付款,SQL 更新記錄前 增加條件判斷
  • 增加分布式鎖
  • 采用 Token 機制,服務端增加 token 校驗,只有第一次請求是合法的

五、補償

我們知道不是所有的請求都能收到成功響應。除了上面的 重試 機制外,我們還可以采用補償玩法,實現數據最終一致性。HF428資訊網——每日最新資訊28at.com

業務補償根據處理的方向分為兩部分:HF428資訊網——每日最新資訊28at.com

  • 正向。多個操作構成一個分布式事務,如果部分成功、部分失敗,我們會通過最大努力機制將失敗的任務推進到成功狀態
  • 逆向。同上道理,我們也可以采用反向操作,將部分成功任務恢復到初始狀態

注意:補償操作有個重要前提,業務能接受短時間內的數據不一致。HF428資訊網——每日最新資訊28at.com

補償有很多的實現方式:HF428資訊網——每日最新資訊28at.com

1、本地建表方式,存儲相關數據,然后通過定時任務掃描提取,并借助反射機制觸發執行HF428資訊網——每日最新資訊28at.com

2、也可以采用簡單的消息中間件,構建業務消息體,由下游的的消費任務執行。如果失敗,可以借助MQ的重試機制,多次重試HF428資訊網——每日最新資訊28at.com

六、備份

任何服務器都有宕機的可能性,一旦存儲了數據,帶上狀態,如果發生故障,數據丟失,后果是我們無法承受的。HF428資訊網——每日最新資訊28at.com

所以,容災備份也就變成了互聯網的基本能力。HF428資訊網——每日最新資訊28at.com

那如何備份,不同的框架有不用的玩法。我們以 Redis 為例:HF428資訊網——每日最新資訊28at.com

圖片圖片HF428資訊網——每日最新資訊28at.com

Redis 借助 RDB 和 AOF 來實現兩臺服務器間的數據同步HF428資訊網——每日最新資訊28at.com

  • RDB,全量數據同步
  • AOF,增量數據同步,回放日志

一旦主節點掛了怎么辦?HF428資訊網——每日最新資訊28at.com

這里引入哨兵機制。哨兵機制可以實現主從庫的自動切換,有效解決了故障轉移。整個過程分為三個階段:監控、選主、通知。HF428資訊網——每日最新資訊28at.com

除了 Redis 中間件外,其他常見的 MySQL、Kafka 消息中間件、HBase 、ES 等 ,凡是涉及到數據存儲的介質,都有備份機制,一旦主節點掛了,會啟用備份節點,保證數據不會丟失。HF428資訊網——每日最新資訊28at.com

七、多活策略

雖然有了上面的備份策略,那是不是就萬事大吉呢?HF428資訊網——每日最新資訊28at.com

在一些極端情況,如:機房斷電、機房火災、地震、山洪等不可抗力因素,所有的服務器都可能出現故障,無法對外提供服務,導致整體業務癱瘓。HF428資訊網——每日最新資訊28at.com

為了降低風險,保證服務的24小時可用性,我們會采用 多活策略。HF428資訊網——每日最新資訊28at.com

常見的多活方案有,同城雙活、兩地三中心、三地五中心、異地雙活、異地多活HF428資訊網——每日最新資訊28at.com

不同的方案技術要求、建設成本、運維成本也都不一樣。HF428資訊網——每日最新資訊28at.com

多活的技術方案復雜,需要考慮的問題點也非常多,這里只是拋磚引玉就不過多展開HF428資訊網——每日最新資訊28at.com

八、隔離

隔離屬于物理層面的分割,將若干的系統低耦合設計,獨立部署,從物理上隔開。HF428資訊網——每日最新資訊28at.com

每個子系統有自己獨立的代碼庫,獨立開發,獨立發布。一旦出現故障,也不會相互干擾。當然如果不同子系統間有相互依賴,這種情況比較特殊,需要有默認值或者異常特殊處理,這屬于業務層面解決方案。HF428資訊網——每日最新資訊28at.com

隔離屬于分布式技術的衍生產物,我們最常見的微服務解決方案。HF428資訊網——每日最新資訊28at.com

將一個大型的復雜系統拆分成若干個微服務系統,這些微服務子系統通常由不同的團隊開發、維護,獨立部署,服務之間通過 RPC 遠程調用。HF428資訊網——每日最新資訊28at.com

隔離使得系統間邊界更加清晰,故障可以更加隔離開來,問題的發現與解決也更加快速,系統的可用性也更高。HF428資訊網——每日最新資訊28at.com

九、限流

高并發系統,如果遇到流量洪峰,超過了當前系統的承載能力。我們要怎么辦?HF428資訊網——每日最新資訊28at.com

一種方案,照單全收,CPU、內存、Load負載飚的很高,最后處理不過來,所有請求都超時無法正常響應。HF428資訊網——每日最新資訊28at.com

另一種解決方案,“舍得,有舍有得”,多余的流量我們直接丟棄。HF428資訊網——每日最新資訊28at.com

限流定義:HF428資訊網——每日最新資訊28at.com

限制到達系統的并發請求數量,保證系統能夠正常響應部分用戶請求,而對于超過限制的流量,則通過拒絕服務的方式保證整體系統的可用性。HF428資訊網——每日最新資訊28at.com

根據作用范圍:限流分為單機版限流、分布式限流HF428資訊網——每日最新資訊28at.com

1、單機版限流HF428資訊網——每日最新資訊28at.com

主要借助于本機內存來實現計數器,比如通過AtomicLong#incrementAndGet(),但是要注意之前不用的key定期做清理,釋放內存。HF428資訊網——每日最新資訊28at.com

純內存實現,無需和其他節點統計匯總,性能最高。但是優點也是缺點,無法做到全局統一化的限流。HF428資訊網——每日最新資訊28at.com

2、分布式限流HF428資訊網——每日最新資訊28at.com

單機版限流僅能保護自身節點,但無法保護應用依賴的各種服務,并且在進行節點擴容、縮容時也無法準確控制整個服務的請求限制。而分布式限流,以集群為維度,可以方便的控制這個集群的請求限制,從而保護下游依賴的各種服務資源。HF428資訊網——每日最新資訊28at.com

限流支持多個維度:HF428資訊網——每日最新資訊28at.com

  • 整個系統一定時間內(比如每分鐘)處理多少請求
  • 單個接口一定時間內處理多少流量
  • 單個IP、城市、渠道、設備id、用戶id等在一定時間內發送的請求數
  • 如果是開放平臺,則為每個appkey設置獨立的訪問速率規則

常見的限流算法:HF428資訊網——每日最新資訊28at.com

  • 計數器限流
  • 滑動窗口限流
  • 漏桶限流
  • 令牌桶限流

十、熔斷

熔斷,其實是對調用鏈路中某個資源出現不穩定狀態時(如:調用超時或異常比例升高),對這個資源的調用進行限制,讓請求快速失敗,避免影響到其它的資源而導致級聯錯誤。HF428資訊網——每日最新資訊28at.com

熔斷的主要方式是使用斷路器阻斷對故障服務器的調用HF428資訊網——每日最新資訊28at.com

斷路器有三種狀態,關閉、打開、半打開。HF428資訊網——每日最新資訊28at.com

狀態機:HF428資訊網——每日最新資訊28at.com

圖片圖片HF428資訊網——每日最新資訊28at.com

1、關閉(Closed)狀態:在這個狀態下,請求都會被轉發給后端服務。同時會記錄請求失敗的次數,當請求失敗次數在一段時間超過一定次數就會進入打開狀態。HF428資訊網——每日最新資訊28at.com

2、打開(Open)狀態:在這個狀態下,熔斷器會直接拒絕請求,返回錯誤,而不去調用后端服務。同時,會有一個定時器,時間到的時候會變成半打開狀態。目的是假設服務會在一段時間內恢復正常。HF428資訊網——每日最新資訊28at.com

3、半打開(Half Open)狀態:在這個狀態下,熔斷器會嘗試把部分請求轉發給后端服務,目的是為了探測后端服務是否恢復。如果請求失敗會進入打開狀態,成功情況下會進入關閉狀態,同時重置計數。HF428資訊網——每日最新資訊28at.com

目前,市面流行的解決方案是阿里的開源框架 Sentinel,提供了Dashboard控制臺用于定義資源以及規則配置HF428資訊網——每日最新資訊28at.com

十一、降級

降級是系統保護的一種重要手段。HF428資訊網——每日最新資訊28at.com

正如 “好鋼用在刀刃上”,為了使有限資源發揮最大價值,我們會臨時關閉一些非核心功能,減輕系統壓力,并將有限資源留給核心業務。HF428資訊網——每日最新資訊28at.com

比如電商大促,業務在峰值時刻,系統抵擋不住全部的流量時,系統的負載、CPU 的使用率都超過了預警水位,可以對一些非核心的功能進行降級,降低系統壓力,比如把商品評價、成交記錄等功能臨時關掉。棄車保帥,保證 創建訂單、訂單支付 等核心功能的正常使用。HF428資訊網——每日最新資訊28at.com

當然,不同業務、不同公司,處理方式也各不相同,需要結合實際場景,和業務方同學一塊討論,最后達成一個統一認可的降級方案。HF428資訊網——每日最新資訊28at.com

總結下來:降級是通過暫時關閉某些非核心服務或者組件從而保護核心系統的可用性。HF428資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-98409-0.html11個高可用設計實戰技巧,輕松應對大廠面試

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 閑魚總裁季山回應社區店:未來三年會在線下店方面堅定投入,考慮開放加盟

下一篇: 如何正確使用上線部署,泳道、預發布到底如何理解?

標簽:
  • 熱門焦點
  • 6月iOS設備好評榜:第一蟬聯榜首近一年

    作為安兔兔各種榜單里變化最小的那個,2023年6月的iOS好評榜和上個月相比沒有任何排名上的變化,僅僅是部分設備好評率的下降,長年累月的用戶評價和逐漸退出市場的老款機器讓這
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協調和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現手段有以下幾種方式:Object 類下
  • 一篇聊聊Go錯誤封裝機制

    %w 是用于錯誤包裝(Error Wrapping)的格式化動詞。它是用于 fmt.Errorf 和 fmt.Sprintf 函數中的一個特殊格式化動詞,用于將一個錯誤(或其他可打印的值)包裝在一個新的錯誤中。使
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的“征求意見版”:1、取消P序列
  • 8月見!小米MIX Fold 3獲得3C認證:支持67W快充

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
  • 華為Mate60標準版細節曝光:經典星環相機模組回歸

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 3699元!iQOO Neo8 Pro頂配版今日首銷:1TB UFS 4.0同價位唯一

    5月23日,iQOO推出了全新的iQOO Neo8系列,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標準版搭載高通驍龍8+,而Pro版更是首發搭載了聯發科天璣9200+旗艦
  • 親歷馬斯克血洗Twitter,硅谷的苦日子在后頭

    文/劉哲銘  編輯/李薇  馬斯克再次揮下裁員大刀。  美國時間11月14日,Twitter約4400名外包員工遭解雇,此次被解雇的員工的主要工作為內容審核等。此前,T
  • Meta盲目擴張致超萬人被裁,重金押注元宇宙而前景未明

    圖片來源:圖蟲創意日前,Meta創始人兼CEO 馬克·扎克伯發布公開信,宣布Meta計劃裁員超11000人,占其員工總數13%。他公開承認了自己的預判失誤:“不僅
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美人与禽性xxxxx杂性| 亚洲中午字幕| 娇妻被交换粗又大又硬视频欧美| 国内精品免费午夜毛片| 在线观看中文字幕亚洲| 亚洲精品视频免费| 亚洲深夜av| 欧美在线高清| 欧美第一黄色网| 国产精品久久久久免费a∨大胸| 国产女主播一区二区三区| 在线成人中文字幕| 一区二区欧美在线观看| 亚洲欧美日韩成人| 久色成人在线| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲精品久久久久久一区二区| 99亚洲视频| 久久精品国产清自在天天线 | 欧美高清免费| 国产精品美女999| 玉米视频成人免费看| 一本色道久久加勒比精品 | 欧美日韩一区二区三| 国产一区二区三区四区在线观看| 亚洲精品国产精品乱码不99| 午夜精品理论片| 女人香蕉久久**毛片精品| 国产精品久久九九| 有码中文亚洲精品| 亚洲一区激情| 欧美成人a视频| 国产日韩欧美日韩| 99pao成人国产永久免费视频| 久久国产成人| 国产精品jizz在线观看美国| 亚洲国产成人一区| 欧美一区二区三区四区视频| 欧美日韩p片| 伊人久久久大香线蕉综合直播 | 亚洲电影在线播放| 新67194成人永久网站| 欧美精品国产一区| 激情久久中文字幕| 午夜免费电影一区在线观看 | 亚洲二区精品| 欧美在线免费视频| 欧美视频在线观看一区二区| 亚洲电影自拍| 欧美伊人影院| 国产精品伦子伦免费视频| 亚洲日本中文| 久久最新视频| 国产亚洲成精品久久| 亚洲综合社区| 欧美日韩国产三区| 亚洲国产天堂久久综合网| 久久久国产一区二区三区| 国产欧美一区二区视频| 亚洲网站视频| 欧美日韩黄视频| 亚洲精品黄网在线观看| 久久综合影音| 精品动漫av| 久久99伊人| 国产区在线观看成人精品| 亚洲永久在线观看| 国产精品mm| 日韩亚洲精品视频| 欧美激情综合五月色丁香小说| 在线成人性视频| 久久婷婷蜜乳一本欲蜜臀| 韩国女主播一区二区三区| 久久福利毛片| 国产揄拍国内精品对白 | 国产精品久久福利| 亚洲少妇在线| 国产精品成人一区二区三区夜夜夜| 亚洲精品一区中文| 欧美精品性视频| 日韩一级不卡| 欧美日韩理论| 一区二区三区www| 欧美色视频一区| 亚洲一区二区三区视频播放| 国产精品福利网站| 亚洲欧美不卡| 国产日韩欧美综合在线| 欧美一区二区在线免费播放| 国产亚洲一级高清| 久久久午夜视频| 亚洲国产成人精品女人久久久| 免费观看成人www动漫视频| 亚洲国产欧美一区二区三区久久 | 欧美乱妇高清无乱码| 99视频精品在线| 国产精品对白刺激久久久| 亚洲免费网站| 国产亚洲人成网站在线观看| 久久一日本道色综合久久| 亚洲国产精品一区二区尤物区| 欧美国产精品一区| 一本大道av伊人久久综合| 国产精品高潮呻吟久久av黑人| 亚洲免费在线视频一区 二区| 国产伦精品一区二区三区在线观看 | 亚洲欧美日韩一区二区三区在线| 国产精品日本| 欧美一区二区视频免费观看| 黄色成人在线网址| 欧美电影电视剧在线观看| 一区二区欧美视频| 国产日韩欧美一二三区| 久久视频在线看| 亚洲精品国产精品国自产观看浪潮 | 可以免费看不卡的av网站| 亚洲国产成人av| 欧美日韩一区高清| 欧美一区二区三区在线看| 在线看成人片| 欧美三日本三级三级在线播放| 午夜久久福利| 亚洲黄色一区| 国产精品区一区| 久久午夜色播影院免费高清| 日韩视频二区| 国产热re99久久6国产精品| 麻豆国产精品va在线观看不卡 | 欧美成人一区二区| 亚洲一级影院| 影音先锋在线一区| 欧美三级网址| 久久青草欧美一区二区三区| 99视频精品全国免费| 国产日本欧美视频| 欧美jjzz| 午夜在线播放视频欧美| 亚洲国产精品成人久久综合一区| 欧美丝袜一区二区| 久久米奇亚洲| 亚洲午夜日本在线观看| 永久免费视频成人| 国产精品v欧美精品∨日韩| 美日韩丰满少妇在线观看| 亚洲一区二区在线播放| 亚洲国产精品专区久久| 国产精品视频一区二区三区| 欧美电影在线观看完整版| 欧美一区二区高清在线观看| 亚洲剧情一区二区| 国内精品一区二区三区| 国产精品地址| 欧美激情免费在线| 久久久久九九视频| 亚洲一区二区在线观看视频| 亚洲国产三级在线| 国产在线成人| 国产精品久久一区二区三区| 欧美va亚洲va香蕉在线| 久久国产精品久久精品国产| 亚洲视频一区二区| 亚洲片国产一区一级在线观看| 国产亚洲欧美激情| 国产精品盗摄一区二区三区| 欧美成人免费va影院高清| 久久精品一二三区| 亚洲欧美久久久久一区二区三区| 亚洲乱码国产乱码精品精98午夜| 精品99一区二区三区| 国产欧美日韩专区发布| 欧美手机在线| 欧美久久影院| 欧美1区视频| 久久久在线视频| 欧美专区第一页| 亚洲女人天堂成人av在线| 在线一区二区日韩| 日韩视频一区二区| 亚洲欧洲精品一区二区三区波多野1战4 | 午夜精品福利视频| 亚洲视频图片小说| 99在线精品免费视频九九视| 亚洲经典在线看| 亚洲激情成人| 亚洲国产欧美一区| 一区国产精品| 国语自产偷拍精品视频偷| 国产伦精品一区二区三区免费迷| 国产精品久久久久久久午夜| 欧美午夜电影在线| 欧美视频在线观看一区二区| 欧美日韩一区二区三区在线看| 欧美激情视频免费观看| 欧美大片在线观看| 欧美高清在线| 欧美韩日亚洲| 欧美精品一区二| 欧美人在线视频| 欧美日韩国产一中文字不卡| 欧美日韩国产美女| 欧美日韩一级大片网址| 欧美日韩在线播放三区| 欧美揉bbbbb揉bbbbb| 国产精品www|