在軟體開發行業中,一提到高效能,就會立即給人一種高大上的感覺。那麼在同樣的硬體平台上,為什麼有的伺服器可以稱為高效能,而有的就不行呢?
在本節課中,我們就拿乙個網路伺服器作為例子,看看它是如何從最簡單的模型一步步演化而來,並且討論每一步演化過程的改進之處,主要內容包含:
要討論高效能伺服器,首先要對它做乙個定義。
伺服器的最終目標,無非就是服務使用者,而高效能伺服器的設計目標,就是要同時服務盡可能多的使用者,同時還要讓單個使用者感受到的服務延遲盡量少。
那麼,對一台伺服器來說,cpu 的計算能力、儲存系統讀寫速度和網路頻寬都是有固定上限的,如何才能實現盡量高的效能呢?
其實,不只對網路伺服器,對其他任何程式來說,要實現高效能,無非就是兩個方面:
下面的內容,我們就從網路伺服器用到的最基本的系統介面出發,看看在各個不同的演化步驟下,是如何踐行上面兩點,從而實現效能的提高的。
linux 為網路伺服器程式提供的最基本的程式設計介面包括:
int socket(int domain, int type, int protocol); //建立網路套接字
int bind(int sockfd, co
網路伺服器設計
資訊家電網路伺服器設計 2016 年 6 月 目 錄 第三章 嵌入式平台開發環境 3.2 軟體開發環境 3.2.1 交叉編譯開發環境的建立 第二步 安裝交叉工具鏈 2.解壓arm linux gcc 3.4.1.tar.bz2 tar jxvf arm linux gcc 3.4.1.tar.bz2...
關於網路伺服器
假如我有數千萬甚至是上億的使用者資料,我想把使用者自增id和使用者名稱username放到快取裡。我的需求是,當要查詢使用者的資訊時,我想先從快取裡根據使用者名稱username獲取到使用者的id,然後再通過id在資料庫裡查詢使用者的資訊。我想當乙個使用者表達到上億的數量級別時,用自增id來查詢肯定...
網路伺服器宕機
1.伺服器程序終止 當伺服器程序終止時,伺服器傳送fin給客戶端,客戶端回以ack,客戶端進入close wait狀態,但還沒有結束連線。此時客戶端阻塞於fgets,客戶端繼續傳送buffer,伺服器傳送rst,客戶端readline返回0。而如果客戶端不理睬readline返回的rst,繼續wri...