相信大家對高并發這個詞并不陌生,現在有很多家科技公司在進行人才招聘時都會問到關于高并發的問題。其實高并發通常指通過設計保證系統能夠同時并行處理很多請求,是網絡直播開發過程中關于系統架構必須考慮的因素之一。是以,在網絡直播開發過程中,關于高并發的問題也是開發者們必須重視的一點。
1.怎樣提升系統的并發能力
要想提高直播系統的并發能力,主要可以分為兩種:垂直擴充與水準擴充。
(1)垂直擴充
即提升單機處理能力,垂直擴充的方式又分為兩種。
增強單機硬體性能,比如增加CPU核數,擴充硬碟容量和系統記憶體。
提升單機架構性能,比如使用Cache來減少IO次數,使用異步來增加單服務吞吐量。
不足的是,單機性能總是有極限的,是以大部分高并發的解決方案還是會選用水準擴充,也就是我們下面要提到的。
(2)水準擴充
即隻要增加伺服器數量,就能線性擴充系統性能。水準擴充對于系統架構設計是有一定的要求的,關于如何在架構各層進行可水準擴充的設計,在此就不多做贅述了。
2.常見的分層架構
(1)用戶端層(2)反向代理層(3)站點應用層(4)服務層(5)資料-緩存層(6)資料-資料庫層
3.水準擴充在各分層中的實踐
(1)反向代理層
反向代理層的水準擴充,是通過“DNS輪詢”實作的,每次DNS解析請求來通路dns-server,會輪詢傳回這些ip。當nginx遭遇瓶頸時,隻要增加伺服器數量,新增nginx服務的部署,增加一個外網ip,就能擴充反向代理層的性能,做到理論上的無限高并發。
(2)站點層
是通過“nginx”實作的,通過修改nginx.conf,可以設定多個web後端。當web後端遭遇瓶頸時,隻要增加伺服器數量,新增web服務的部署,在nginx配置中配置上新的web後端,就能擴充站點層的性能,做到理論上的無限高并發。
(3)服務層
服務層的水準擴充,是通過“服務連接配接池”實作的。當服務遭遇瓶頸時,隻要增加伺服器數量,新增服務部署,在RPC-client處建立新的下遊服務連接配接,就能擴充服務層性能,做到理論上的無限高并發。
(4)資料層
在資料量很大的情況下,資料層(緩存,資料庫)涉及資料的水準擴充,将原本存儲在一台伺服器上的資料(緩存,資料庫)水準拆分到不同伺服器上去,以達到擴充系統性能的目的。
高并發是網絡直播開發過程中經常遇到的問題,但并不能對其掉以輕心。對于直播行業來說,解決高并發也是核實開發實力的标準之一,再加上對實時效果要求甚嚴的直播應用場景,高并發可以說是“刻不容緩”的。
本文聲明原創,轉載請注明出處。