国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

軟件系統(tǒng)穩(wěn)定性設(shè)計的秘密

開發(fā) 前端
控制系統(tǒng)理論認(rèn)為:系統(tǒng)受到某種干擾而偏離正常狀態(tài),當(dāng)干擾消除,如果系統(tǒng)的擾動能逐漸收斂并最終恢復(fù)正常狀態(tài),則系統(tǒng)是穩(wěn)定的,反之,系統(tǒng)偏離越來越大,則是不穩(wěn)定的,所以,穩(wěn)定性是系統(tǒng)抗干擾和返回平衡狀態(tài)的能力。

 

 [[333328]]

何謂系統(tǒng)穩(wěn)定性?

控制系統(tǒng)理論認(rèn)為:系統(tǒng)受到某種干擾而偏離正常狀態(tài),當(dāng)干擾消除,如果系統(tǒng)的擾動能逐漸收斂并最終恢復(fù)正常狀態(tài),則系統(tǒng)是穩(wěn)定的,反之,系統(tǒng)偏離越來越大,則是不穩(wěn)定的,所以,穩(wěn)定性是系統(tǒng)抗干擾和返回平衡狀態(tài)的能力。

對于經(jīng)典的傳遞函數(shù)的軟件系統(tǒng),一般我們講的穩(wěn)定指的是BIBO穩(wěn)定,即有界輸入有界輸出穩(wěn)定。一個系統(tǒng)如果對任意有界輸入得到有界輸出,它就是BIBO穩(wěn)定的。一句話,穩(wěn)定的系統(tǒng)對于各種輸入需要有符合預(yù)期的輸出。

隨著軟件復(fù)雜性越來越高,穩(wěn)定性的保障越來越難,隨著服務(wù)規(guī)模越來越大,穩(wěn)定性的重要性越來越高。阿里行癲把穩(wěn)定性比喻成木桶的底板,如果穩(wěn)定性出問題,則滴水不留,所以,工程師在設(shè)計和開發(fā)軟件的時候,要堅持底板思維。

但我們的軟件需求和計劃很少考慮非功能部分,然而軟件的結(jié)構(gòu)和實現(xiàn)卻有非常大的比重服務(wù)于此,這也許是軟件項目計劃經(jīng)常延期的重要原因。

如何保障穩(wěn)定性?

雖然理論上沒有絕對穩(wěn)定的系統(tǒng),但我們依然可以有所作為,使我們設(shè)計和開發(fā)的系統(tǒng)在生產(chǎn)環(huán)境接近穩(wěn)定運行。

從大的方面講,穩(wěn)定性保障,可以分成3個部分:

制度紀(jì)律

編碼規(guī)范、代碼提交門禁

Code Review

靜態(tài)代碼掃描,動態(tài)代碼分析

Unit Test、壓測

灰度發(fā)布、Rollback、應(yīng)急預(yù)案

監(jiān)控

復(fù)盤、故障樹分析

思想之道

保持簡單、降低復(fù)雜度

不(零)信任、面向失敗設(shè)計

實踐之術(shù)

冗余設(shè)計(數(shù)據(jù)、計算、帶寬冗余)

快速恢復(fù)設(shè)計(無狀態(tài)設(shè)計)

容錯、災(zāi)備

熔斷、隔離

限流

有損服務(wù)

錯誤重試策略,避免流量風(fēng)暴

去關(guān)鍵路徑、去中心化、避免單點故障

負(fù)載均衡(load balance)

避免驚群效應(yīng)

看門狗設(shè)計

安全編碼

制度紀(jì)律

通過制度去規(guī)范操作和行為,通過紀(jì)律去約束大家在框架內(nèi)活動,被證明是保障穩(wěn)定減少出錯行之有效的方式。

紀(jì)律是關(guān)鍵,只有持之以恒的遵守制度,才能避免方法和規(guī)定淪為空談。

但制度和紀(jì)律只是劃出質(zhì)量底線,只能解決大多數(shù)穩(wěn)定性問題,難以發(fā)現(xiàn)一些隱匿的問題,需要配合思想之道和實踐之術(shù),才能持續(xù)改進(jìn)軟件質(zhì)量,從而更全面的保障穩(wěn)定性。

思想之道

道是大的層面,它具有全局性的指導(dǎo)意義,我從眾多的指導(dǎo)思想里,挑選最重要的兩點:保持簡單和不信任/面向失敗設(shè)計,展開來講。

1. 保持簡單

復(fù)雜是穩(wěn)定性的天敵,保持簡單即保持穩(wěn)定。單一職責(zé),功能清晰就是踐行保持簡單。

把簡單的東西搞復(fù)雜很容易,而化繁為簡則堪稱化腐朽為神奇。所以保持簡單并不是低要求,它需要你透過表象洞悉事物本質(zhì),用最直接最土味的方式解決問題,做技術(shù)的同學(xué)有一個奇怪的癖好,喜歡把自己最近琢磨的東西用到項目中,不然總有錦衣夜行的感覺。

我的建議是“學(xué)深用淺”。引入復(fù)雜性,一方面要權(quán)衡收益,另一方面要警惕損傷,要理解項目開發(fā)很多時候是團(tuán)隊合作,任何復(fù)雜性的引入都會對合作者提出更高要求,嚴(yán)以律人是危險的,低門檻才是符合人性的。

2. 不信任設(shè)計、面向失敗設(shè)計

不信任設(shè)計又叫零信任設(shè)計,和面向失敗的設(shè)計有相似之處,其本質(zhì)都是防御性編程思想。

不信任設(shè)計思想假設(shè)系統(tǒng)依賴的上下游都不可靠,假設(shè)周圍都是壞人,假設(shè)攻擊無處不在。

網(wǎng)絡(luò)服務(wù)需要對客戶端請求參數(shù)做嚴(yán)格驗證,不僅檢查合法性,也要驗證NaN。游戲開發(fā)有一句名言:假設(shè)客戶端的數(shù)據(jù)都是假的。

進(jìn)程內(nèi)的函數(shù)調(diào)用大多時候很安全,會有可預(yù)期的結(jié)果,但如果跨進(jìn)程調(diào)用(RPC)的可靠性則會低很多,有可能超時,有可能丟包,有可能失敗,調(diào)用者必須意識并處理好各種異常情況,是重試?如果重試的話重試多少次?重試之間的間隔應(yīng)該怎么確定?請求的上下文怎么保存和恢復(fù)?

我們要正確理解不信任設(shè)計的內(nèi)涵,避免用力過猛,警惕借面向失敗設(shè)計之名行無效編程之實,比如已經(jīng)對客戶端請求數(shù)據(jù)做了嚴(yán)格校驗,在服務(wù)器處理過程中,重復(fù)檢驗,比如已經(jīng)對接口入?yún)⑴锌眨趦?nèi)部調(diào)用過程中重復(fù)判斷。這會降低代碼濃度,混入大量無效代碼,損傷可讀性和執(zhí)行效率,本質(zhì)上是違背“保持簡單”原則的。

實踐之術(shù)

術(shù)是局部層面,它是實踐經(jīng)驗,牽扯方方面面,難以盡數(shù)枚舉。

如果以文章寫作類比軟件開發(fā),謀篇布局相當(dāng)于設(shè)計層面,設(shè)計層面要致廣遠(yuǎn),遣詞造句相當(dāng)于實現(xiàn)層面,實現(xiàn)層面要盡精微。

所謂千里之堤潰于蟻穴,防微杜漸尤其重要。

1. 冗余設(shè)計

冗余設(shè)計指留出安全余量,冗余包括數(shù)據(jù)冗余、計算冗余、帶寬冗余。

數(shù)據(jù)冗余指一份數(shù)據(jù)多個副本,一主多備。

計算冗余,比如服務(wù)實例的QPS極限是10K,但實際上我們會按5K跑,這樣,即使出現(xiàn)流量超速增長,我們依然有反應(yīng)時間。

2. 快速恢復(fù)設(shè)計(無狀態(tài)設(shè)計)

互聯(lián)網(wǎng)服務(wù)很多都是無狀態(tài)設(shè)計,服務(wù)實例只是邏輯的盒子,后面跟著分布式一致性數(shù)據(jù)庫,這樣能極大簡化設(shè)計,即使實例掛了,客戶可以很容易遷移到其他服務(wù)實例執(zhí)行,而有狀態(tài)設(shè)計則要復(fù)雜難搞得多。

3. 容錯、災(zāi)備

容錯指我們的系統(tǒng)要有一定的錯誤容忍能力,這意味錯誤發(fā)生,我們要能查錯、檢錯、避錯、甚至改錯,只要可能,我們就要吞咽錯誤。

災(zāi)備這個大家耳熟能詳,主從設(shè)計,異地備災(zāi),目標(biāo)都是為了應(yīng)對各種極限情況。

4. 熔斷、隔離

熔斷機(jī)制不止軟件設(shè)計獨有,股市也有,我甚至懷疑軟件的熔斷機(jī)制是從股市學(xué)來的。

隔離本質(zhì)上就是說如果故障發(fā)生了,如果故障發(fā)生,而又不能吞咽,那也應(yīng)該隔離避免錯誤傳播擴(kuò)散,千方百計縮小影響范圍,相當(dāng)于感染新冠要被隔離起來。容器化等技術(shù)為隔離提供良好能力支撐。

5. 限流

系統(tǒng)設(shè)計要做好資源耗盡、資源不夠用的情況,如果服務(wù)請求超過服務(wù)能力,那就應(yīng)該限流,這應(yīng)該作為一種配置,或者自動執(zhí)行的策略。

這個跟地鐵限流差不多,處理不了,那就排隊。

6. 有損服務(wù)

有損服務(wù)我印象中最先是騰訊提出來的,指如果出現(xiàn)服務(wù)能力不夠,不能為所有客戶提供服務(wù)的異常情況,那系統(tǒng)應(yīng)該確保已有客戶的服務(wù)請求得到滿足,而不能讓新增客戶拉已有客戶一起死。

有損的意義就是有損失,有損傷的意思,已有客戶不受干擾,新增客戶淪為代價,這不也是沒辦法的辦法嘛。

7. 錯誤重試策略,避免流量風(fēng)暴

如果設(shè)計一個ToC服務(wù),在客戶大規(guī)模斷連的情況下,客戶會重連,重連失敗再連,如果重連嘗試的頻率不控制好,正常客戶端重連有可能演變成對服務(wù)器的大規(guī)模攻擊,打爆一臺服務(wù)器,又去滅另一臺,這太嚇人了。

可以參考kernel TCP的重連策略,有最大嘗試次數(shù),而且重試間隔是逐漸拉大的。

8. 去關(guān)鍵路徑、去中心化、避免單點故障

企業(yè)不要關(guān)鍵先生,關(guān)鍵先生會成為瓶頸,軟件也不能把寶壓到一個地方,去中心化去集中式,沒什么難理解的。

9. 負(fù)載均衡

load balance其實就是分擔(dān)壓力,LB要避免傾斜,有多種LB算法,比如RR,比如一致性hash,各有利弊,有興趣可以研究下。

LB不僅限于服務(wù),進(jìn)程內(nèi)的多線程可能也會需要考慮這個問題。

10. 避免驚群效應(yīng)

一只鳥被驚擾起飛,然后一群鳥全部受驚起飛,畫面感是不是很強(qiáng)?有點破窗效應(yīng)的味道,可以參考nginx對驚群效應(yīng)的處理策略。

11. 看門狗和心跳機(jī)制

可以參考kernel的watch dog,其實就是看護(hù)機(jī)制,檢測錯誤并努力掰過來。

12. 安全編碼

安全編碼是一個職業(yè)程序員的基本要求,安全編碼規(guī)則很多,很細(xì)節(jié)的一些規(guī)矩。這個可能跟語言相關(guān),如果是C++相關(guān)的可以參考:C++的門門道道

C相關(guān)的規(guī)則要少一些,我順手列舉一些。

  • 比如要注意初始化。
  • 比如全局變量不要有構(gòu)造順序的依賴。
  • 比如慎用強(qiáng)轉(zhuǎn),強(qiáng)轉(zhuǎn)等于接管了編譯幫你做的類型檢查。
  • 比如理解線程安全函數(shù),理解可重入的概念,理解信號機(jī)制。
  • 比如要避免死鎖,理解ABBA鎖理解自死鎖。
  • 比如要謹(jǐn)防資源泄漏。
  • 比如處理好內(nèi)存分配失敗的情況,理解野/懸垂指針。
  • 比如要處理好邊界,防止越界,溢出。
  • 比如內(nèi)存拷貝要避免內(nèi)存重疊,理解memmove的用途。
  • 比如理解遞歸的低效和棧的大小限制,避免爆棧。
  • 比如建議使用STD安全版本函數(shù)(_s+n)版本。
  • 比如了解unsigned < 0導(dǎo)致死循環(huán)的情況。
  • 比如了解浮點數(shù)跟0比較的問題。
  • 比如理解整型數(shù)據(jù)溢出和反轉(zhuǎn)。
  • 比如不要返回臨時變量的引用或者指針,理解棧幀動態(tài)伸縮的原理。
  • 比如理解做好把關(guān)檢查的必要性,包括系統(tǒng)把關(guān)和模塊把關(guān)。

小結(jié)

最后來讀段經(jīng)典:《系統(tǒng)化思維導(dǎo)論》一書中引用馮諾依曼的話寫道:如果你觀察一些自動裝置,不論它們是人類設(shè)計的還是自然界本來就存在的,你通常會發(fā)現(xiàn),它們的結(jié)構(gòu)很大程度上受控于它們可能失效的方式,以及針對失效所采取的防御性措施(多少有些效果),說它們能預(yù)防失效有點夸張,它們不是能預(yù)防失效的,只是被設(shè)計成試圖達(dá)到這種狀態(tài),這樣至少大部分失效都不會是毀滅性的。所以,根本談不上消除失效,或完全消除失效帶來的影響。我們能嘗試的只是設(shè)計一種自動裝置,在大部分失效發(fā)生時仍能繼續(xù)工作,這種裝置減輕了失效的后果,而不是治愈失效,大部分人造的和自然界存在的自動裝置,其內(nèi)部原理都是如此。

本文轉(zhuǎn)載自微信公眾號「 碼磚雜役」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系 碼磚雜役公眾號。

 

責(zé)任編輯:武曉燕 來源: 碼磚雜役
相關(guān)推薦

2020-07-28 08:07:14

ElasticSear

2022-09-15 08:33:27

安全生產(chǎn)系統(tǒng)Review

2023-04-26 18:36:13

2020-07-29 10:20:24

技術(shù)研發(fā)指標(biāo)

2022-05-09 09:00:43

軟件項目軟件系統(tǒng)軟件尅發(fā)

2011-12-21 09:46:46

程序員

2016-10-18 13:31:23

CronPaxos服務(wù)

2016-12-21 09:33:40

2025-10-10 08:20:59

2022-05-05 19:20:24

數(shù)據(jù)系統(tǒng)穩(wěn)定性峰會數(shù)據(jù)系統(tǒng)

2020-02-27 08:00:41

混沌工程系統(tǒng)失控條件

2025-02-06 11:44:56

2009-07-27 10:08:14

2023-06-30 08:43:36

2010-02-09 09:34:00

Windows 7補(bǔ)丁系統(tǒng)穩(wěn)定

2019-06-17 15:48:51

服務(wù)器測試方法軟件

2009-12-23 18:18:04

2022-05-12 18:09:18

Kubernetes公有云

2022-10-20 12:04:08

2011-08-01 11:03:15

點贊
收藏

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

狠狠躁夜夜躁人人爽天天天天97| 日本久久综合| 久久一日本道色综合| 91中文字幕一区| 波多野结衣中文字幕久久| 国产欧美精品一区二区三区四区| 日韩精品国内| 91精品久久久久久久蜜月| 久久视频在线视频| 看黄网站在线观看| 亚洲欧美激情视频在线观看一区二区三区| 亚洲日本一区二区三区在线不卡 | 国产欧美精品一区| 亚洲视频在线二区| 一区二区不卡| 欧美在线激情网| 福利一区二区免费视频| 日韩视频免费观看高清完整版 | 男人添女人下面免费视频| 久久99这里只有精品| 99视频在线播放| 日韩一区三区| 欧美最猛性xxxxx(亚洲精品)| 99精品女人在线观看免费视频| 精品人伦一区二区色婷婷| 国产精品影院在线| 日韩欧美aaa| 偷拍自拍在线| 婷婷成人激情在线网| av高清资源| 国产精品久久久久久久岛一牛影视| 福利视频一二区| 国产一区二区h| 国产精品h视频| 久久99精品久久只有精品| 亚洲国产欧美不卡在线观看| 久久精品中文| 少妇特黄a一区二区三区| 麻豆精品网站| 日韩性感在线| 蜜臀99久久精品久久久久久软件| 日韩欧美手机在线| 99精品视频网| 免费久久久一本精品久久区| 日韩午夜电影| 一区二区三区国产福利| 国产中文字幕精品| 国产精品久久久久久久久电影网| 国产v综合v亚洲欧| 免费超爽大片黄| 久久久精品人体av艺术| 一道本视频在线观看| 中文字幕在线一区二区三区| 黄网站色大毛片| 午夜激情久久久| av在线免费播放网站| 欧美日韩国产另类不卡| av免费网站在线观看| 亚洲男人7777| 91在线一区| 91香蕉亚洲精品| 可以看av的网站久久看| 成年在线观看视频| 国产精品美女久久久久久久 | 亚洲最新av网址| 欧美激情啪啪| 国模精品系列视频| 成人av二区| 久热国产精品视频一区二区三区| 韩国成人在线视频| 午夜免费精品视频| 欧美性猛交xxxx免费看| 国产高清视频色在线www| 欧美成人免费播放| 天天影视天天精品| 一级全黄肉体裸体全过程| 欧美国产97人人爽人人喊| 久久久资源网| 亚洲人成网站色ww在线| 中文字幕精品影院| 五月天久久狠狠| 国产精品美女久久久久av爽李琼| 国产中文在线视频| 中文字幕日本欧美| 小小影院久久| 4444亚洲人成无码网在线观看| 亚洲天堂网中文字| 色yeye免费人成网站在线观看| 欧美福利视频网站| 亚洲伦伦在线| www.99av.com| 欧美一区二区视频在线观看| 国产成人久久精品一区二区三区| 亚洲一区二区三区乱码aⅴ蜜桃女| 视频一区在线播放| 日本成人免费网站| 亚洲高清福利视频| 理论片一区二区在线| 久久青青草综合| 国产精品伦理在线| 久草在线资源站手机版| 国产成人亚洲综合91| 激情成人午夜视频| 亚洲精品套图| 欧美激情在线一区| 日韩电影在线一区二区三区| 91短视频在线| 尤物九九久久国产精品的分类| 亚洲成av人电影| 50路60路老熟妇啪啪| 欧美一区二区久久久| 免费欧美一区| 国产资源在线视频| 欧美影院精品一区| 看全色黄大色大片免费久久久| 亚洲日本一区二区三区在线不卡| 亚洲精品水蜜桃| www999久久| 国产成人精品免费看在线播放 | 国产日韩精品一区二区三区| 精品美女在线观看视频在线观看| 久久久亚洲国产天美传媒修理工| 免费视频一区二区| 男男激情在线| 日本精品久久久| av在线不卡免费看| 国产蜜臀在线| 97伦理在线四区| 亚洲精品免费视频| 精品视频91| 亚洲精品少妇一区二区| 欧美一区二区三区小说| 亚洲高清资源在线观看| 欧美h版电影| 欧美亚洲国产日韩2020| fc2成人免费人成在线观看播放| a在线免费观看| 国产精品香蕉视屏| 天天色图综合网| 精品国产aⅴ| 成年人在线免费观看视频网站| 久热精品视频在线观看| 国产成人av电影在线| 99色在线观看| 老司机av福利| 亚洲精品国产综合久久| 久久久国产亚洲精品| 2024最新电影免费在线观看| 极品日韩久久| 日韩欧美专区在线| 亚洲综合激情| www在线观看播放免费视频日本| 国产一区自拍视频| 欧美三级日韩三级| 亚洲激情女人| h片在线观看网站| 日产精品一线二线三线芒果| 日韩免费电影一区| 人人狠狠综合久久亚洲| 午夜伦理福利在线| 国产高清不卡无码视频| 色妞欧美日韩在线| 国产色91在线| 欧美色资源站| 成年人视频在线网站| 国产精品免费电影| 色综合色综合色综合| 雨宫琴音一区二区在线| а√天堂在线官网| 四虎免费在线观看视频| 日韩中文字幕精品| 国产精品不卡视频| 在线免费观看日本欧美爱情大片| 暖暖日本在线观看| 成人免费看片视频在线观看| 亚洲日本成人女熟在线观看| 26uuu久久天堂性欧美| 日韩精品导航| 免费毛片在线| 一区二区视频国产| 九九热在线精品视频| 亚洲精品福利视频网站| 伊人久久大香线蕉综合四虎小说| 91官网在线| av网站大全免费| 高清在线视频日韩欧美| 亚洲成av人片| 天堂va蜜桃一区二区三区 | 日韩少妇视频| 白白操在线视频| 2021久久精品国产99国产精品| 五月婷婷色综合| 视频在线在亚洲| 韩国一区二区三区视频| av成人动漫| 亚洲国产欧美日韩| 久久久久久久久久久免费精品| 日本道色综合久久| 成人手机电影网| 亚洲色图88|