基于TCP服務器的并發方案
來源:用戶上傳
作者:張帥峰 周昕 劉繼興 曾令輝 段珍靈 沈順權
摘 要:在互聯網中,傳統網絡結構模式有B/S和C/S。它們共同的需求是有專門進行數據處理、數據轉發的服務器。不斷上升的用戶量帶來的是劇增的數據量、并發量和吞吐量,并對服務器的高并發提出挑戰。從網絡的傳輸層來看,TCP服務器是使用最為廣泛的服務器。服務器對數據流進行收發操作就是網絡I/O操作。多種網絡I/O模型為TCP并發服務器提供不同的實現方案。文章總結阻塞I/O模型下的一請求一線程和I/O多路復用下的epoll 2種TCP服務器并發方案,并通^壓力測試分析兩種方案的并發性能。
關鍵詞:高并發;TCP服務器;I/O網絡模型;壓力測試;衡量指標
中圖分類號:TP393 文獻標志碼:A 文章編號:2095-2945(2022)24-0018-04
Abstract: When it comes to the Internet, the traditional network structure modes are B/S and C/S. Their common requirement is to have a server dedicated to data processing and data forwarding. The increasing number of users brings about a sharp increase in data volume, concurrency and throughput, and poses a challenge to the high concurrency of the server. From the perspective of network transport layer, TCP server is the most widely used server. The server's sending and receiving operation of data flow is the network I/O operation. Various network I/O models provide different implementation schemes for TCP concurrent server. This paper summarizes two concurrency schemes of TCP server: one request one thread under blocking I/O model and EPOLL under I/O multiplexing, and analyzes the concurrency performance of the two schemes through stress test.
Keywords: high concurrency; TCP server; I/O network model; stress test; measures
隨著數字生活的深入發展,計算機系統越發面臨高并發的考驗。由圖1可知,從各年每秒訂單交易量的峰值數和增長趨勢中,我們可以觀察到這一點。所以,高并發(High Concurrency)是互聯網分布式系統架構中必須考慮的因素之一。它通常是指通過設計保證系統能夠同時并行處理許多請求。高并發的基本表現為單位時間內系統能夠同時處理的請求數,核心是對CPU資源的有效壓榨。當大量的用戶向服務器連接,發送請求時,服務器的高并發直觀影響用戶的體驗。
從衡量標準來看,不同的場景對應不同的需求,我們對于高并發可以有不同的衡量方式。
從網絡的傳輸層來看,TCP傳輸層通信協議會有3處握手來進行連接,與UDP相比具有更高的可靠性和穩定性。TCP服務器是最基本也是最常用的服務器,是其他并發服務器于傳輸層上的基石。
圖1各年每秒訂單量峰值圖
從數據的收發來看,Socket是計算機之間進行通信的一種約定或一種方式。通過socket這種約定,1臺計算機可以接收其他計算機的數據,也可以向其他計算機發送數據。使用socket對數據流進行收發操作就是網絡I/O操作。在網絡環境下,I/O操作會經歷2個階段:等待數據準備就緒,將數據從內核拷貝到進程或者線程中。因為在以上2個階段上各有不同的情況,所以出現了多種網絡I/O模型。多種網絡I/O模型為TCP并發服務器提供了不同的實現方案。常見的2種方案是阻塞I/O模型下的多線程和I/O多路復用下的epoll。
1 服務器并發衡量指標
1.1 每秒請求(QPS)
每秒查詢數QPS(Query Per Second):是衡量吞吐量(Throughput)的一個常用指標。在服務器并發上,通常是指服務器每秒能夠處理的查詢次數,是對1個特定的查詢服務器在規定時間內所處理流量多少的衡量標準。在因特網上,作為域名系統服務器的機器的性能經常用每秒查詢率來衡量。每秒的響應請求數,也就是最大吞吐能力。
1.2 每秒事務(TPS)
每秒事務數TPS(Transactions Per Second):是軟件測試結果的測量單位。一個事務是指1個客戶端向服務器發送請求,然后服務器做出響應的過程。具體來說,每個事務包括向服務器發請求,服務器自己的內部處理與服務器返回結果給客戶端3個過程。
TPS與QPS是不同的概念,TPS是每秒事務數,每一個事務的過程中,可能產生多次對服務器的請求,每次請求都算QPS的查詢數。所以,一個TPS可能包含多個QPS。
客戶端在發送請求時開始計時,收到服務器響應后結束計時,以此來計算使用的時間和完成的事務個數。
nlc202209091402
轉載注明來源:http://www.hailuomaifang.com/1/view-15439512.htm