基于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
转载注明来源:https://www.xzbu.com/1/view-15439512.htm