高并發(fā)高性能服務(wù)器是如何實現(xiàn)的
當(dāng)在讀這篇文章的時候,你有沒有想過,服務(wù)器是怎么把這篇文章發(fā)送給你的呢?
說簡單也簡單,不就是一個用戶請求嗎?服務(wù)器根據(jù)請求從數(shù)據(jù)庫中撈出這篇文章,然后通過網(wǎng)絡(luò)發(fā)回去。
說復(fù)雜也復(fù)雜,服務(wù)器是如何并行處理成千上萬個用戶請求呢?這里面涉及到哪些技術(shù)呢?
這篇文章就來為你解答這個問題。
多進(jìn)程

編程簡單,非常容易理解 由于各個進(jìn)程的地址空間是相互隔離的,因此一個進(jìn)程崩潰后并不會影響其它進(jìn)程 充分利用多核資源
各個進(jìn)程地址空間相互隔離,這一優(yōu)點也會變成缺點,那就是進(jìn)程間要想通信就會變得比較困難,你需要借助進(jìn)程間通信(IPC,interprocess communications)機(jī)制,想一想你現(xiàn)在知道哪些進(jìn)程間通信機(jī)制,然后讓你用代碼實現(xiàn)呢?顯然,進(jìn)程間通信編程相對復(fù)雜,而且性能也是一大問題 我們知道創(chuàng)建進(jìn)程開銷是比線程要大的,頻繁的創(chuàng)建銷毀進(jìn)程無疑會加重系統(tǒng)負(fù)擔(dān)。
多線程


Event Loop:事件驅(qū)動
event 處理event的函數(shù),這一函數(shù)通常被稱為event handler

while(true) {event = getEvent();handler(event);}

事件來源:IO多路復(fù)用

問題:阻塞式IO

非阻塞IO
基于事件編程的難點
更好的方法
總結(jié)
?點擊屏末?|?閱讀原文?|?即刻學(xué)習(xí)評論
圖片
表情
