成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

互聯網高并發設計的手段:架構、算法、代碼

開發 架構
feed(關注的feed 、topic 的feed,一些運營的feed),前幾頁的訪問比例,前三頁占了90%+,針對這種業務特性,把 前面幾頁數據作為熱點數據提到L1 cache

性能優化目標

1、縮短響應時間

2、提高并發數(增加吞吐量)

3、讓系統處于合理狀態

圖片圖片

性能優化手段

1、空間換時間

系統時間是瓶頸: 緩存復用計算結果,降低時間開銷,因為cpu時間較內存容量更加昂貴。

2、時間換空間   

  • 數據大小是瓶頸
  • 網絡傳輸是瓶頸,使用系統時間換取傳輸的空間,使用HTTP的gzip壓縮算法    
  • app的請求分類接口,使用版本號判斷哪些數據更新,只下載更新的數據

3、找到系統瓶頸

  • 分析系統的業務流程,找到關鍵路徑并分解優化
  • 調用了多少RPC接口,載入多少數據,是用什么算法,非核心流程是否異步化。

性能優化層次

1、架構設計層次

如何拆分系統 如何使用部分系統整體負載更加均衡   充分發揮硬件設施性能優勢  減少系統內部開銷等

2、算法邏輯層次

關注算法選擇是否高效,算法邏輯優化,空間時間優化任務執行吃力,使用無鎖數據結構。

空間換時間:ThreadLocal

時間換空間:采用壓縮算法壓縮數據,更復雜的邏輯減少數據傳輸。

3、代碼優化層次

關注代碼細節優化,代碼實現是否合理,是否創建了過多的對象,循環遍歷是否高效,cache使用是否合理 

優化層次:從整理到細節,從全局角度到局部視角。

代碼優化層次(1)

  • 循環遍歷是否合理高效,不要在循環里調RPC接口,傳輸分布式緩存 執行SQL等
  • 先調用批量接口組裝好數據,再循環處理
  • 代碼邏輯避免生成過多的對象和無效對象
  • 輸出Log時候的log級別判斷  避免new無效對象
  • ArrayList、HashMap初始容量設置是否合理
  • 對數據對象是否合理重用 比如RPC查到的數據能復用則必須復用,根據數據訪問特性選擇合適數據結構,比如讀多寫少考慮  CopyOrWriteArrayList(寫時copy副本),會否正確初始化數據,有些全局共享的數據,餓漢式模式,在用戶使用之前先初始化好。

代碼優化層次(2)

  • CPU Cache結 構
  • 速度越來越高:內存 - >L3->L2->L1多級緩存
  • 本質上內存是一個大的一維數組,二維數組在內存中按行排列,先存放a[0]行,再存放a[1]行
  • 第一種遍歷方式,是行遍歷,先遍歷完一行再遍歷第二行,符合局部性原理Cache Hit  (緩存命中率高)
  • 第二種遍歷方式,是列遍歷,遍歷完第一列遍歷第二列,由于下一列和 上 一 列的數組元素在內存中并不是連續的,很可能導致Cache  Miss ( 緩 存 未 命 中 ) , CPU 需要去內存載入數據,速度較CPU    L1Cache的速度降低 了很多(主存100ns,L1  cache  0.5ns)

圖片圖片

數據優化層次

select count(*)from table where add  time<"2017- 11-0623:59:59"  and  status=0  add  count in(1,2) ORDER BY id ASC;

代碼邏輯要適應數據變化的場景

圖片圖片

圖片圖片

圖片圖片

算法優化邏輯層次

●用更高效的算法替換現有算法,而不改變其接口

● 增量式算法,復用之前的計算結果,比如一個報表服務,要從全量數據中生成報表數據量很大,但是每次增量的數據較少,則可以考慮只計算增量數據和之前計算結果合并,這樣處理的數據量就小很多

● 并發和鎖的優化,讀多寫少的業務場景下,基于CAS的LockFree比mutex 性能更好

● 當系統時間是瓶頸,采取空間換時間邏輯算法,分配更多空間節省系統時間

● 緩存復用計算結果,降低時間開銷, CPU時間較內存容量更加昂貴

● 當系統空間容量是瓶頸,采取時間換空間算法策略

● 網絡傳輸是瓶頸,使用系統時間換取空間的壓縮, HTTP的gzip 壓縮算法

● APP的請求分類接口,使用版本號判斷哪些數據更新,只下載更新的數據,使用更多的代碼邏輯處理更細粒 度的數據

● 并行執行,比如一段邏輯調用了多個RPC接口,而這些接口之間并沒有數據依賴,則可以考慮并行調用,降低響 應時間

● 異步執行,分析業務流程中的主次流程,把次要流程拆分出來異步執行,更進一步可以拆分到單獨的模塊去執行, 比如使用消息隊列,徹底和核心流程解耦,提高核心流程的穩定性以及降低響應時間

架構層次優化

● 系統微服務化

● 無狀態化設計,動態水平彈性擴展

● 調用鏈路梳理,熱點數據盡量靠近用戶

● 分布式Cache 、 多級多類型緩存

● 提前拒絕,保證柔性可用

● 容量規劃

● 分庫分表,讀寫分離,數據分片

案例:

圖片圖片

Feed流系統分級緩存

讀多寫少、冷熱數據明顯,熱點數據緩存到調用鏈路更靠近用戶的地方

● L1緩存容量小負責抗最熱點的數據, L2緩存考慮目標是容量,緩存更大范圍的數據(一般用戶的timeline), 高熱點,數據單獨緩存,比如設置白名單,大V 的用戶數據放在L1緩存

● feed(關注的feed 、topic 的feed,一些運營的feed),前幾頁的訪問比例,前三頁占了90%+,針對這種業務特性,把 前面幾頁數據作為熱點數據提到L1 cache

Feed系統消息發布Feed系統消息發布


寫擴散 (PUSH)

● 推送策略:拆分數據并行推,活躍用戶先推,非活躍用戶慢慢推

● 有 1w個用戶關注,發了一個feed,拆分成100份,每份100個并行推

● 1w個用戶里活躍的可能有2000個,活躍用戶先推,非活躍用戶慢慢推,保證活躍用戶體驗,非活躍用戶推 了很大概率也不看

讀擴散(PULL)

圖片圖片

Feed系統存儲選型

圖片 圖片

責任編輯:武曉燕 來源: 二進制跳動
相關推薦

2019-04-10 14:10:02

高并發分布式系統架構

2017-01-11 21:40:03

互聯網架構高并發

2017-10-27 14:52:31

互聯網高可用架構高可用

2017-09-25 12:11:14

高可用微服務架構

2009-05-05 10:24:48

應用架構設計原則

2011-09-09 10:39:57

專利移動互聯網

2017-10-15 14:36:10

互聯網分層架構服務化

2020-08-11 09:43:28

分層架構互聯網架構

2019-03-18 07:08:53

高可用互聯網架構分布式

2016-12-06 11:56:13

互聯網架構高可用

2012-09-18 13:58:58

互聯網創業架構

2015-06-24 15:35:54

2015-05-28 16:11:07

互聯網+

2019-05-13 10:30:34

互聯網架構容量

2016-09-22 15:55:39

互聯網架構容量設計

2012-08-29 10:26:19

螞蟻互聯網算法

2018-08-15 09:02:59

產業互聯網工業互聯網物聯網

2023-12-05 10:33:15

工業互聯網互聯網平臺

2019-09-02 16:12:16

工業互聯網智能制造體系架構

2014-01-15 14:35:35

云計算
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男女网站在线观看 | 精品国产一区二区三区观看不卡 | 日本三级电影在线看 | 色资源在线视频 | 男女视频在线观看网站 | 欧美久久久久 | 波多野结衣二区 | 久久精品亚洲 | 欧美在线成人影院 | 久久精品国产亚洲 | 男女国产网站 | 中文字幕亚洲在线 | 中文字幕一区二区三区四区五区 | 亚洲国产网 | 天堂网avav | 日韩欧美专区 | 精品视频一区二区三区 | 亚洲三级在线观看 | 成人啊啊啊 | 久久精品视频一区二区 | 成人免费看片又大又黄 | 久久精品久久久久久 | 尹人av| www.亚洲免费 | 亚洲综合在线播放 | 亚洲精品日韩在线观看 | 国产高清自拍视频在线观看 | 日韩免费成人av | 黄色片在线免费看 | 色噜噜亚洲男人的天堂 | 国产91在线 | 欧美 | 久草视频在线播放 | 午夜免费福利电影 | 亚洲精品一区二区三区蜜桃久 | 不卡在线视频 | 精品国产一区二区三区观看不卡 | 成人av一区 | 久草.com | 成人免费在线电影 | 欧美日韩高清一区 | 国产一级视屏 |