高性能、高并發(fā)胸完、高可用基礎

高并發(fā)系統(tǒng)設計三大目標:高性能书释、高并發(fā)、高可用

高性能:

為什么需要高性能赊窥?

性能體現了系統(tǒng)的并行處理能力爆惧,在有限的硬件投入下,提高性能意味著節(jié)省成本锨能。同時扯再,性能也反映了用戶體驗芍耘,響應時間分別是100毫秒和1秒,給用戶的感受是完全不同的熄阻。

高性能評估方式斋竞?

性能指標:

  • 平均響應時間:最常用,但是缺陷很明顯秃殉,對于慢請求不敏感坝初。比如1萬次請求,其中9900次是1ms钾军,100次是100ms鳄袍,則平均響應時間為1.99ms,雖然平均耗時僅增加了0.99ms巧颈,但是1%請求的響應時間已經增加了100倍畦木。

  • TP90、TP99等分位值:將響應時間按照從小到大排序砸泛,TP90表示排在第90分位的響應時間十籍, 分位值越大,對慢請求越敏感唇礁。

  • 吞吐量:和響應時間呈反比勾栗,比如響應時間是1ms,則吞吐量為每秒1000次盏筐。

可用性指標:

  • 可用性 = 正常運行時間 / 系統(tǒng)總運行時間

高性能設計手段

縱向擴展和橫向擴展:提升單機的處理能力围俘,提高并發(fā)處理能力。

天下武功琢融,唯快不破”界牡。性能是系統(tǒng)設計成功與否的關鍵,實現高性能也是對程序員個人能力的挑戰(zhàn)漾抬。不過在了解實現高性能的方法之前宿亡,我們先明確一下性能優(yōu)化的原則。首先纳令,性能優(yōu)化一定不能盲目挽荠,一定是問題導向的。脫離了問題平绩,盲目地提早優(yōu)化會增加系統(tǒng)的復雜度圈匆,浪費開發(fā)人員的時間,也因為某些優(yōu)化可能會對業(yè)務上有些折中的考慮捏雌,所以也會損傷業(yè)務跃赚。

其次,性能優(yōu)化也遵循“八二原則”腹忽,即你可以用 20% 的精力解決 80% 的性能問題来累。所以我們在優(yōu)化過程中一定要抓住主要矛盾砚作,優(yōu)先優(yōu)化主要的性能瓶頸點。再次嘹锁,性能優(yōu)化也要有數據支撐葫录。在優(yōu)化過程中,你要時刻了解你的優(yōu)化讓響應時間減少了多少领猾,提升了多少的吞吐量米同。

最后,性能優(yōu)化的過程是持續(xù)的摔竿。高并發(fā)的系統(tǒng)通常是業(yè)務邏輯相對復雜的系統(tǒng)面粮,那么在這類系統(tǒng)中出現的性能問題通常也會有多方面的原因。因此继低,我們在做性能優(yōu)化的時候要明確目標熬苍,比方說,支撐每秒 1 萬次請求的吞吐量下響應時間在 10ms袁翁,那么我們就需要持續(xù)不斷地尋找性能瓶頸柴底,制定優(yōu)化方案,直到達到目標為止粱胜。

高可用:

為什么需要高可用柄驻?

軟件

  • 軟件總是有Bug的
  • 軟件總會有性能極限的
  • 軟件交互相互影響

硬件

  • 硬件總是有故障的
  • 硬件的生命周期
  • 硬件的網絡劃分問題

高可用評估方式?

傳統(tǒng)

  • 一段時間的停機時間時間占比:停機時間/總時間

科學

  • 一段時間的停機影響請求量占比:停機時間影響請求量/總請求量

高可用設計手段

以微服務為例子:必須做到一下幾點
1焙压、服務冗余(無狀態(tài)化)

  • 當系統(tǒng)發(fā)生故障時,冗余配置的部件介入并承擔故障部件的工作,由此減少系統(tǒng)的故障時間
  • 當前資源足夠提供一個服務的情況下多給點資源以防突發(fā)情況

2鸿脓、冪等設計(負載均衡)

  • 實現數據一致性和事務完整性的重要手段
  • 負載均衡設備,實現流量分發(fā)涯曲。 負載均衡(Load Balance)野哭,意思是將負載(工作任務,訪問請求)進行平衡幻件、分攤到多個操作單元(服務器虐拓,組件)上進行執(zhí)行。

3傲武、超時機制(異步化設計)

  • 基于接口異步響應,常用在第三方對接流程
  • 基于消息生產和消費模式城榛,解耦復雜流程
  • 基于發(fā)布和訂閱的廣播模式揪利,常見系統(tǒng)通知

4、數據復制/緩存/Sharding(服務限流降級熔斷)

  • 服務限流
    概述:當系統(tǒng)的處理能力不能應對外部請求的突增流量時狠持,為了不讓系統(tǒng)奔潰疟位,必須采取限流的措施。

  • 實現技術:Hystrix喘垂,Sentinel

  • 服務降級
    概述:當服務器壓力劇增的情況下甜刻,根據實際業(yè)務情況及流量绍撞,對一些服務和頁面有策略的不處理或換種簡單的方式處理,從而釋放服務器資源以保證核心交易正常運作或高效運作得院。

  • 實現技術:Hystrix傻铣,Dubbo(dubbo-admin,mork祥绞,@Reference)

  • 服務熔斷
    概述:服務熔斷的作用類似于我們家用的保險絲非洲,當某服務出現不可用或響應超時的情況時,為了防止整個系統(tǒng)出現雪崩蜕径,暫時停止對該服務的調用两踏。

  • 實現技術:Hystrix

5、架構拆分兜喻、服務治理

  • 業(yè)務場景梦染、系統(tǒng)水平拆分
  • 應用場景、功能垂直拆分

高并發(fā):

為什么需要高并發(fā)朴皆?

隨著流量變大帕识,會遇到各種各樣的技術問題,比如接口響應超時车荔、CPU load升高渡冻、GC頻繁、死鎖忧便、大數據量存儲等等族吻,這些問題能推動我們在技術深度上不斷精進。

高并發(fā)評估方式珠增?

1超歌、系統(tǒng)性能指標:

  • 提高吞吐量
  • 縮短響應延遲

2、性能優(yōu)化指標:

  • 縮短響應時間
  • 提高并發(fā)數&提高吞吐量
  • 讓系統(tǒng)長期處于一個合理的時間節(jié)點

高并發(fā)設計手段

1蒂教、優(yōu)化手段:

  • 當系統(tǒng)響應時間是瓶頸的時候巍举,考慮空間換時間
  • 當系統(tǒng)數據大小是瓶頸的時候,考慮時間換空間
  • 最重要的是凝垛,找到系統(tǒng)的瓶頸

2懊悯、優(yōu)化層次:
- 架構設計層次

  • 分布式系統(tǒng)微服務化
  • 分庫分表、讀寫分離梦皮、數據分片
  • 無狀態(tài)化設計炭分、水平擴展
  • 調用鏈路梳理、熱點數據盡量靠近用戶
  • 分布式cache剑肯、多級多類型緩存
  • 對系統(tǒng)容量進行評估捧毛、規(guī)劃
  • 提前拒絕、保證柔性可用

- 算法邏輯層次

  • 使用更高效的算法替換現有算法
  • 使用增量式算法
  • 進行并發(fā)和鎖的優(yōu)化
  • 當系統(tǒng)時間是瓶頸,采用空間換時間算法策略
  • 當系統(tǒng)空間容量是瓶頸呀忧,采用時間換空間算法策略
  • 并行執(zhí)行师痕、降低響應時間
  • 異步執(zhí)行、業(yè)務流程解耦而账、提供穩(wěn)定性和降低響應時間

- 代碼優(yōu)化層次
此處省略···

最后胰坟,安利一款阿里云產品
AHAS:應用高可用服務

可輕松抵御流量洪峰沖擊,打造超高并發(fā)下穩(wěn)定運行的系統(tǒng)環(huán)境福扬。實現流量分發(fā)腕铸,系統(tǒng)擴縮容,數據庫穩(wěn)定性與線性擴容能力铛碑;通過解耦應用與緩存數據降低核心應用負載狠裹;解決系統(tǒng)實時監(jiān)控與流控問題。

image.png

結尾:
希望這篇文章能帶給你關于高并發(fā)更全面的認識汽烦,如果你也有可借鑒的經驗和深入的思考涛菠,歡迎評論區(qū)留言討論。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末撇吞,一起剝皮案震驚了整個濱河市俗冻,隨后出現的幾起案子,更是在濱河造成了極大的恐慌牍颈,老刑警劉巖迄薄,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異煮岁,居然都是意外死亡讥蔽,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門画机,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冶伞,“玉大人,你說我怎么就攤上這事步氏∠烨荩” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵荚醒,是天一觀的道長芋类。 經常有香客問我,道長界阁,這世上最難降的妖魔是什么梗肝? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮铺董,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己精续,他們只是感情好坝锰,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著重付,像睡著了一般顷级。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上确垫,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天弓颈,我揣著相機與錄音,去河邊找鬼删掀。 笑死翔冀,一個胖子當著我的面吹牛,可吹牛的內容都是我干的披泪。 我是一名探鬼主播纤子,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼款票!你這毒婦竟也來了控硼?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤艾少,失蹤者是張志新(化名)和其女友劉穎卡乾,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體缚够,經...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡幔妨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了潮瓶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陶冷。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖毯辅,靈堂內的尸體忽然破棺而出埂伦,到底是詐尸還是另有隱情,我是刑警寧澤思恐,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布沾谜,位于F島的核電站,受9級特大地震影響胀莹,放射性物質發(fā)生泄漏基跑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一描焰、第九天 我趴在偏房一處隱蔽的房頂上張望媳否。 院中可真熱鬧栅螟,春花似錦、人聲如沸篱竭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掺逼。三九已至吃媒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吕喘,已是汗流浹背赘那。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留氯质,地道東北人募舟。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像病梢,于是被迫代替她去往敵國和親胃珍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內容