PHP直播平臺原始碼伺服器併發模型

五花肉愛原始碼發表於2020-06-09

在編寫伺服器端程式時,大部分的程式都是會同時處理多個請求,這也是因為 PHP直播平臺原始碼 的使用者訪問量在同一時間會增多的原因。在請求處理過程中,往往還會碰到等待、堵塞等情況,如果按照順序一個一個處理請求,那麼空間等待的時間將白白浪費,造成使用者響應延時增加,降低整個系統的吞吐量。

在如何同時處理多個請求的問題上,一種是採用多執行緒,一種是採用非同步。早期 PHP 直播平臺原始碼 中最常用的技術是多執行緒,這種技術程式碼編寫起來比較簡單,每個執行緒中的程式碼都是按先後順序執行,由於同時執行著多個執行緒,所以無法保證多個執行緒之間程式碼的先後順序,這導致了多執行緒下,資料鎖造成了執行緒死鎖。

經過對比後,現在非同步回撥比多執行緒更加適用,除能解決多執行緒的死鎖問題外,非同步還能解決多執行緒下反覆切換導致不必要的開銷問題,每個執行緒都需要一個獨立的棧空間,多執行緒並行執行時,棧資料需要來回複製,造成了額外 CPU 的消耗。由於每個執行緒需要佔用棧空間,所以大量執行緒存在的時候,記憶體消耗也是巨大的。

非同步回撥基於非阻塞的I/O 操作,節省了在呼叫讀寫函式時對“卡”的呼叫,而是會立刻反饋有無資料結果。而 Linux epoll 技術,則利用底層核心的機制,滿足快速查詢資料讀寫的連線 / 檔案。

由於PHP 直播平臺原始碼中每個操作都是非阻塞的,所以我們的程式可以只用一個程式就可以處理大量併發請求,因為只有一個程式,所以所有的資料處理順序都是固定的,不會出現在多執行緒中,非同步非阻塞的技術大大簡化了開發過程。

單一伺服器的服務方式滿足不了PHP 直播平臺原始碼的使用者需求,太過龐大的流量需要多個伺服器同時工作解決,因此在選擇伺服器時,最好可以選擇某個伺服器叢集,作為解決使用者需求的保障。

宣告:以上內容為雲豹科技作者本人原創,未經作者本人同意,禁止轉載,否則將追究相關法律責任


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69907981/viewspace-2697226/,如需轉載,請註明出處,否則將追究法律責任。

相關文章