CN116755863A - 一种面向多终端无线通信的Socket线程池设计方法 - Google Patents
一种面向多终端无线通信的Socket线程池设计方法 Download PDFInfo
- Publication number
- CN116755863A CN116755863A CN202311013543.2A CN202311013543A CN116755863A CN 116755863 A CN116755863 A CN 116755863A CN 202311013543 A CN202311013543 A CN 202311013543A CN 116755863 A CN116755863 A CN 116755863A
- Authority
- CN
- China
- Prior art keywords
- thread pool
- data
- socket
- thread
- task
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000004891 communication Methods 0.000 title claims abstract description 35
- 238000013461 design Methods 0.000 title claims abstract description 23
- 230000000903 blocking effect Effects 0.000 claims abstract description 52
- 230000007246 mechanism Effects 0.000 claims abstract description 38
- 230000005540 biological transmission Effects 0.000 claims abstract description 35
- 238000012545 processing Methods 0.000 claims abstract description 34
- 230000004044 response Effects 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 26
- 238000007906 compression Methods 0.000 claims description 22
- 238000012544 monitoring process Methods 0.000 claims description 22
- 230000006835 compression Effects 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 14
- 230000036541 health Effects 0.000 claims description 9
- 238000005315 distribution function Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000008602 contraction Effects 0.000 claims description 5
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 238000012795 verification Methods 0.000 claims description 4
- 239000002699 waste material Substances 0.000 claims description 4
- 238000003780 insertion Methods 0.000 claims description 3
- 230000037431 insertion Effects 0.000 claims description 3
- 230000003993 interaction Effects 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种面向多终端无线通信的Socket线程池设计方法,涉及无线通信领域,解决了传统设计方法安全性低、数据处理能力慢和***响应时间长的问题,采用的方法包括:步骤一:通过线程池执行器创建线程池;步骤二:通过动态调度算法动态调整线程池的线程数;步骤三:创建终端连接池;步骤四:通过I/O多路复用方法降低***开销;步骤五:通过非阻塞I/O方法对每个连接进行异步处理;步骤六:通过数据缓存机制将待发送或接收的数据暂存在缓冲区中,并通过数据压缩器对数据进行压缩以方便传输;步骤七:通过负载均衡策略将任务均衡地分配给不同的终端或线程;步骤八:引入安全认证和加密机制;步骤九:通过网页缓存机制优化网络传输效率。
Description
技术领域
本发明涉及无线通信领域,且更具体地涉及一种面向多终端无线通信的 Socket线程池设计方法。
背景技术
随着移动互联网的快速发展和无线设备的普及,越来越多的终端设备需要与服务器进行通信。这些终端可能包括手机、平板电脑、物联网设备等。为了满足大量并发的连接请求和数据传输需求,需要设计一种面向多终端无线通信的 Socket 线程池,Socket线程池是一种线程管理机制,通过预先创建一组线程,并使用队列来管理客户端连接,实现了线程的复用和调度。
在面对多终端的连接请求和数据传输时,传统的Socket 线程池通常采用串行处理方式,每个连接请求和数据传输都依次经过线程池中的一个线程进行处理。具体来说,当有新的连接请求到达服务器时,线程池选择一个空闲的线程来处理该请求,直到该请求处理完成后,线程才能处理下一个请求,这样无法有效地应对大量的并发连接请求和数据传输需求,在高并发场景下,传统Socket 线程池设计方法往往无法满足***的性能和扩展性要求,导致处理能力下降,***响应时间延长。同时,传统Socket 线程池设计方法对于终端连接的管理和安全认证通常较为简单,无法灵活地应对多终端的接入、流量控制和身份验证等需求,缺乏终端连接池和安全认证机制可能导致***容易受到恶意攻击和未经授权的访问。
另外,传统Socket 线程池设计方法通常将所有数据存储在单一的服务器上,这会导致存储压力集中于该服务器,造成性能瓶颈,同时,如果该服务器出现故障,整个***可能会发生严重的故障,无法提供正常的服务,并且传统Socket 线程池设计方法没有针对无线通信环境进行优化,导致通信效率低下。
因此,本发明公开了一种面向多终端无线通信的 Socket 线程池设计方法。
发明内容
针对现有技术的不足,本发明公开了一种面向多终端无线通信的 Socket 线程池设计方法,本发明通过动态调度算法允许***根据当前负载情况智能地分配任务给线程池中的线程,以实现更高效的任务处理和资源利用,通过I/O多路复用方法实现主线程快速处理其他连接请求,而将繁重的业务逻辑和计算任务委托给线程池异步处理,从而提高***的响应速度和吞吐量。通过负载均衡策略将数据存储在多个服务器上,有效解决单一服务器存储压力过大和故障风险的问题,同时提高***的可扩展性和容错性。通过安全认证和加密机制有效防止恶意攻击和未经授权的访问,只有合法的终端设备才能与服务器建立连接,保护***的安全。通过网页缓存机制优化网络传输效率减少数据传输的延迟和带宽占用。
为了实现上述技术效果,本发明采用以下技术方案:
一种面向多终端无线通信的 Socket 线程池设计方法,其中所述方法包括:
作为本发明进一步的技术方案,包括以下步骤:
步骤一,通过线程池执行器TPE创建线程池,所述线程池执行器通过数组阻塞队列ABQ存储待处理的任务;
步骤二,根据***负载情况,通过动态调度算法动态调整线程池的核心线程数和最大线程数,以适应不同的通信负载情况;
步骤三,创建终端连接池,通过Socket连接建立连接池,管理与各个终端之间的连接;
步骤四,通过I/O多路复用方法同时监测和处理读写事件以降低***开销;
步骤五,通过非阻塞I/O方法对每个连接进行异步处理以避免线程阻塞,提高***并发性能和响应速度;
步骤六,通过数据缓存机制将待发送或接收的数据暂存在缓冲区中以降低数据延迟带宽,并通过数据压缩器对数据进行压缩以方便传输;
步骤七,通过负载均衡策略将任务均衡地分配给不同的终端或线程,避免单点故障和资源浪费;
步骤八,引入安全认证和加密机制,所述安全认证和加密机制通过安全套接层协议SSL进行通信连接的安全认证和数据的加密传输,确保通信数据的机密性和完整性;
步骤九,通过网页缓存机制优化网络传输效率和数据传输的延迟以及带宽占用。
作为本发明进一步的技术方案,所述线程池执行器TPE通过内部构造函数设置核心线程数与最大线程数,并在执行任务中添加拒绝策略,所述拒绝策略通过线程池饱和策略DOP丢弃任务队列中被添加但尚未被执行的任务,并尝试再次提交被拒绝的任务。
作为本发明进一步的技术方案,所述数组阻塞队列ABQ通过数组存储元素,并通过可重入锁和条件变量实现任务的有界存储和线程的同步操作;所述数组阻塞队列ABQ通过阻塞***和移除方法提供协调线程之间的等待和通知机制以避免***资源消耗。
作为本发明进一步的技术方案,所述动态调度算法通过应用程序接口API监测***的资源利用情况,并获取***实时负载情况,根据实时负载情况任务优先级动态调整公式决定是否接受新的连接请求,所述任务优先级动态调整公式为:
(1)
在公式(1)中,表示任务的基础优先级,根据任务类型和重要程度进行设定;表
示任务完成所需的时间;表示预期完成任务所需的时间;通过公式(1)动态调整任务处理
顺序以减少***处理时间;当***运行过程中,***负载因为数据大小不同随时变化,通过
动态线程池大小分布函数改变线程池的大小以提供更多的处理能力并节省资源,其中,动
态线程池大小分布函数表达式为:
(2)
在公式(2)中,R表示线程池基础大小;表示当前活跃任务数;表示根据***性
能和资源利用情况确定的系数,用于平衡线程池大小和任务数量之间的关系。
作为本发明进一步的技术方案,所述非阻塞I/O方法包括以下步骤:
步骤1,通过socket库创建非阻塞套接字对象;
步骤2,将套接字与本地或远程地址进行绑定,以便建立网络连接;
步骤3,通过延时函数将套接字设置为非阻塞模式;
步骤4,通过非阻塞的遍历函数监听客户端的连接请求;
步骤5,通过轮询机制检查套接字的就绪状态;
步骤6,当套接字处于就绪状态时,在套接字可读情况下,通过非阻塞的记录函数读取数据;在套接字可写情况下,通过非阻塞的发送函数发送数据;
步骤7,重复执行步骤5至步骤6,持续轮询套接字的就绪状态,以实现持续的非阻塞 I/O 操作。
作为本发明进一步的技术方案,所述负载均衡策略包括动态健康检查和监控单元、权重调整单元、加权轮询单元和动态扩缩容单元,所述健康检查和监控单元通过心跳机制定期对线程或服务器进行健康检查,确认其可用性和正常工作状态;所述权重调整单元通过性能采集器获取负载信息,并使用反馈控制器动态调整权重值;所述加权轮询单元通过加权轮询算法将任务动态分配到不同的线程或服务器上,使得负载在整体上保持均衡;所述动态扩缩容单元通过云计算服务动态调整线程或服务器数量以实现负载均衡化。
作为本发明进一步的技术方案,所述加权轮询算法通过遍历函数为每个线程或服务器附加一个权重值,并计算线程或服务器的权重之和,在线程或服务器的权重之间,通过队列中的每个元素表示一个线程或服务器任务,并通过重复添加的元素对应任务权重值;在进行任务计算时,通过轮询函数按照队列中元素的顺序依次选择线程或服务器来接收任务;所述轮询函数表达式为:
(3)
在公式(3)中,P表示服务器或线程池当前的 CPU 使用率,Z表示服务器或线程池当前的内存使用率,X表示服务器或线程池的网络带宽大小,e表示服务器或线程池处理每个请求所花费的时间,a、c、h和s表示权重系数,用于调节不同指标的重要性。
作为本发明进一步的技术方案,所述数据压缩器包括压缩配置模块、压缩算法模块、编码模块和解码模块;所述压缩配置模块通过统计分析器分析处理待压缩原始数据的重复和冗余,并确定最佳的压缩算法和参数进行配置;所述压缩算法模块通过哈夫曼编码将原始数据进行转换压缩,在数据压缩后,通过所述编码模块将压缩后的数据进行编码,在接收端通过解码模块接收压缩后的数据,并将压缩数据解码为原始数据。
作为本发明进一步的技术方案,所述数据缓存机制通过客户端缓存、代理服务器缓存和网页响应头控制优化网络传输效率并降低数据传输延迟和带宽占用;所述客户端缓存通过网页记录工具在本地存储已访问过的网页资源;所述代理服务器缓存通过云端服务器存储访问的网页内容;所述网页响应头控制通过跳接头字段工具设置缓存过期时间和验证标识,以跳过请求步骤以避免与服务器的交互延迟,提高网页获取速度。
本发明区别现有技术积极有益效果在于:
本发明通过动态调度算法允许***根据当前负载情况智能地分配任务给线程池中的线程,以实现更高效的任务处理和资源利用,通过I/O多路复用方法实现主线程快速处理其他连接请求,而将繁重的业务逻辑和计算任务委托给线程池异步处理,从而提高***的响应速度和吞吐量。通过负载均衡策略将数据存储在多个服务器上,有效解决单一服务器存储压力过大和故障风险的问题,同时提高***的可扩展性和容错性。通过安全认证和加密机制有效防止恶意攻击和未经授权的访问,只有合法的终端设备才能与服务器建立连接,保护***的安全。通过网页缓存机制优化网络传输效率减少数据传输的延迟和带宽占用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图,其中:
图1为本发明的流程步骤示意图;
图2为本发明非阻塞I/O方法的流程架构图;
图3为本发明的数据缓存机制架构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1-图3所示,一种面向多终端无线通信的 Socket 线程池设计方法,包括以下步骤:
步骤一,通过线程池执行器TPE创建线程池,所述线程池执行器通过数组阻塞队列ABQ存储待处理的任务;
步骤二,根据***负载情况,通过动态调度算法动态调整线程池的核心线程数和最大线程数,以适应不同的通信负载情况;
步骤三,创建终端连接池,通过Socket连接建立连接池,管理与各个终端之间的连接;
步骤四,通过I/O多路复用方法同时监测和处理读写事件以降低***开销;
步骤五,通过非阻塞I/O方法对每个连接进行异步处理以避免线程阻塞,提高***并发性能和响应速度;
步骤六,通过数据缓存机制将待发送或接收的数据暂存在缓冲区中,减少频繁的网络传输操作,并通过数据压缩器对数据进行压缩,减少传输的数据量和传输延迟,提高数据传输的效率;
步骤七,通过负载均衡策略将任务均衡地分配给不同的终端或线程,避免单点故障和资源浪费;
步骤八,引入安全认证和加密机制,所述安全认证和加密机制通过安全套接层协议SSL进行通信连接的安全认证和数据的加密传输,确保通信数据的机密性和完整性;
步骤九,通过网页缓存机制优化网络传输效率和数据传输的延迟以及带宽占用。
在上述实施例中,所述线程池执行器TPE通过内部构造函数设置核心线程数与最大线程数,并在执行任务中添加拒绝策略,所述拒绝策略通过线程池饱和策略DOP丢弃任务队列中被添加但尚未被执行的任务,并尝试再次提交被拒绝的任务。
在具体实施中,线程池执行器TPE利用线程管理技术,通过创建和管理一组线程来执行任务,它维护一个线程池,包含了一定数量的线程,并可以根据配置动态调整线程池的大小,TPE通过使用线程池管理技术,实现了线程的复用和重复利用,避免了频繁创建和销毁线程的开销。同时,TPE使用任务队列来存储待执行的任务。当有新的任务提交时,TPE将任务添加到任务队列中,等待线程池的空闲线程来执行。任务队列采用先进先出(FIFO)的方式,保证任务的执行顺序。另外,TPE通过任务调度技术将任务从任务队列中取出,并分配给线程池中的空闲线程进行执行。线程池根据预设的调度策略(如优先级、先进先出等),选择最合适的线程来执行任务。任务执行完成后,线程会返回线程池以供下次任务调度使用。在具体实施中,TPE提供了线程池拒绝策略,用于处理任务队列已满且无法接收更多任务的情况,线程池拒绝策略包括直接抛出异常、丢弃最旧的任务、丢弃当前的任务或者在调用者线程中执行等等。
在上述实施例中,所述数组阻塞队列ABQ通过数组存储元素,并通过可重入锁和条件变量实现任务的有界存储和线程的同步操作;所述数组阻塞队列ABQ通过阻塞***和移除方法提供协调线程之间的等待和通知机制以避免***资源消耗。
在具体实施例中,数组阻塞队列ABQ通过使用特定的数据结构和同步机制实现了线程间的阻塞和通信。ABQ内部使用数组作为底层数据结构,用于存储队列中的元素。数组的大小决定了队列的容量,也就是能够存放的元素数量。队列的元素按照FIFO(先进先出)的顺序进行存取。另外,ABQ使用内置的锁和条件变量来实现线程之间的同步和阻塞。当一个线程试图向已满的队列中***元素时,该线程将被阻塞,直到有其他线程从队列中移除元素。同样,当一个线程试图从空的队列中获取元素时,该线程也会被阻塞,直到有其他线程向队列中***新元素。在具体实施中,当队列已满时,***操作将被阻塞,直到有空间可用。同样,在队列为空时,获取操作将被阻塞,直到有元素可用。同时,ABQ的容量在创建时被指定,并且不能修改。这意味着队列中可以存放的元素数量有限,当队列已满时,进一步***操作将被阻塞。另外,ABQ内部使用锁和条件变量来保证多线程环境下的线程安全。这意味着多个线程可以同时并发地进行***和获取操作,而不会导致数据混乱或线程冲突。
通过使用数组阻塞队列ABQ,我们可以有效地实现线程池中任务的提交和执行之间的阻塞和同步,从而实现了多终端无线通信中的任务分发和处理。线程池中的线程可以通过阻塞式地从ABQ获取任务,在没有任务时自动等待,从而避免了忙等待和资源浪费。同时,由于ABQ是有界的,可以控制任务的数量,防止任务过载导致***负载过重。
在上述实施例中,所述动态调度算法通过应用程序接口API监测***的资源利用情况,并获取***实时负载情况,根据实时负载情况任务优先级动态调整公式决定是否接受新的连接请求,所述任务优先级动态调整公式为:
(1)
在公式(1)中,表示任务的基础优先级,根据任务类型和重要程度进行设定;表
示任务完成所需的时间;表示预期完成任务所需的时间;通过公式(1)动态调整任务处理
顺序以减少***处理时间;当***运行过程中,***负载因为数据大小不同随时变化,通过
动态线程池大小分布函数改变线程池的大小以提供更多的处理能力并节省资源,其中,动
态线程池大小分布函数表达式为:
(2)
在公式(2)中,R表示线程池基础大小;表示当前活跃任务数;表示根据***性
能和资源利用情况确定的系数,用于平衡线程池大小和任务数量之间的关系。
在具体实施例中,动态调度算法可以通过实时监测***的负载情况,包括当前连接数、任务队列长度、线程池中线程的繁忙程度等。负载监测技术可以通过定期采样和监测***状态的方式获取这些信息。同时,通过分析负载状况,动态调度算法可以根据一定的策略将新的任务分配给空闲的线程,以提高线程池的整体性能和资源利用率。常用的负载均衡策略包括轮询、随机、最小负载等。另外,动态调度算法可以根据负载情况智能地调整线程池的大小。当负载较低时,可以适当减少线程数来降低资源占用;而当负载升高时,可以增加线程数来提升并发处理能力,以应对高负载情况。在具体实施中,动态调度算法可以根据实时负载情况,自动调整线程池大小。通过设置阈值或根据历史负载数据进行预测,可以根据实际需要弹性地增加或减少线程数。
表1多终端无线通信负载监测表
在数据表格1中,列包括终端编号、连接时间、数据流量、CPU使用率和内存使用率等信息。这些信息可用于动态调度算法中的负载监测和负载均衡处理。通过实时监测和分析这些数据,动态调度算法可以根据负载情况智能地调整线程池中的线程分配和数量,以实现更好的负载均衡及***性能优化。
在上述实施例中,如附图2所示,所述非阻塞I/O方法包括以下步骤:
步骤1,通过socket库创建非阻塞套接字对象;
步骤2,将套接字与本地或远程地址进行绑定,以便建立网络连接;
步骤3,通过延时函数将套接字设置为非阻塞模式;
步骤4,通过非阻塞的遍历函数监听客户端的连接请求;
步骤5,通过轮询机制检查套接字的就绪状态;
步骤6,当套接字处于就绪状态时,在套接字可读情况下,通过非阻塞的记录函数读取数据;在套接字可写情况下,通过非阻塞的发送函数发送数据;
步骤7,重复执行步骤5至步骤6,持续轮询套接字的就绪状态,以实现持续的非阻塞 I/O 操作。
在具体实施例中,非阻塞I/O方法通过选择器同时监视多个通道的状态,并且只有当至少一个通道准备好进行读取或写入操作时,才会通知应用程序。这样就避免了传统阻塞式I/O中需要为每个连接分配一个线程的问题,从而提高了***的可扩展性。通过使用选择器,服务器可以通过一个线程同时监听和处理多个客户端连接。这种多路复用的技术允许服务器在等待一个或多个客户端数据到达时继续处理其他任务,而不是阻塞在某个特定的I/O操作上。在非阻塞I/O中,套接字被设置为非阻塞模式。这意味着当调用I/O操作时,如果没有数据可读或写,它将立即返回,而不会阻塞当前线程。通过不断地轮询已注册到选择器的通道,可以有效地处理可用数据或空闲通道。另外,非阻塞I/O通常采用回调函数的方式来处理I/O事件。当一个I/O操作完成时,选择器会通知应用程序,并调用预先注册的回调函数来处理相应的数据。这种异步的方式避免了线程阻塞,提高了***的并发性和响应性。
通过使用非阻塞I/O方法,服务器可以同时处理多个客户端连接,而无需为每个连接分配一个线程。这种高效率的设计使得***能够更好地应对大量的终端无线通信请求,提高了***的性能和可扩展性。
在上述实施例中,所述负载均衡策略包括动态健康检查和监控单元、权重调整单元、加权轮询单元和动态扩缩容单元,所述健康检查和监控单元通过心跳机制定期对线程或服务器进行健康检查,确认其可用性和正常工作状态;所述权重调整单元通过性能采集器获取负载信息,并使用反馈控制器动态调整权重值;所述加权轮询单元通过加权轮询算法将任务动态分配到不同的线程或服务器上,使得负载在整体上保持均衡;所述动态扩缩容单元通过云计算服务动态调整线程或服务器数量以实现负载均衡化。
在具体实施例中,负载均衡策略通过分析和监控***中各个线程池的状态,包括任务队列的长度、线程的使用情况等来获得关于当前负载状况的信息。这可以通过收集性能指标、监控指标等来实现,例如使用性能监控工具或自定义的监控程序。同时,根据分析和监控得到的负载状况信息,负载均衡策略可以动态地对任务进行分配和调整。它可以根据实时的负载情况来决定将任务分配给哪个线程池处理,以实现负载均衡。另外,负载均衡策略可以使用不同的算法来实现任务的分配和处理的均衡。常见的负载均衡算法包括轮询算法、权重算法、最小连接数算法等。选择适合的算法可以根据具体业务需求和***特点。在具体实施中,负载均衡策略可以根据实际的负载情况动态地调整线程池的大小。当负载过重时,可以增加线程池的大小以承担更多的任务;当负载较轻时,可以减小线程池的大小以节省***资源。
在上述实施例中,所述加权轮询算法通过遍历函数为每个线程或服务器附加一个权重值,并计算线程或服务器的权重之和,在线程或服务器的权重之间,通过队列中的每个元素表示一个线程或服务器任务,并通过重复添加的元素对应任务权重值;在进行任务计算时,通过轮询函数按照队列中元素的顺序依次选择线程或服务器来接收任务;所述轮询函数表达式为:
(3)
在公式(3)中,P表示服务器或线程池当前的 CPU 使用率,Z表示服务器或线程池当前的内存使用率,X表示服务器或线程池的网络带宽大小,e表示服务器或线程池处理每个请求所花费的时间,a、c、h和s表示权重系数,用于调节不同指标的重要性。
在具体实施例中,加权轮询算法为每个线程池设置一个权重值,用于表示线程池的处理能力。权重可以根据具体需求进行配置,通常较大的权重意味着线程池具有更高的处理能力。
对于到达的任务,加权轮询算法依次将任务分配给每个线程池,按照线程池的权重比例进行分配。例如,如果有两个线程池,权重分别为2和3,那么前两个任务将被分配给权重为2的线程池,第三个任务将被分配给权重为3的线程池,以此类推。同时,加权轮询算法需要维护每个线程池已经处理的任务数量,以实现按权重分配。每当一个任务被分配给某个线程池时,该线程池的任务数量会增加,并与其权重相比较。当所有线程池的任务数量均达到或超过其权重时,任务分配器会重新开始从第一个线程池开始轮询。另外,加权轮询算法可以根据实际情况动态调整线程池的权重。例如,当某个线程池的处理能力提升或降低时,可以相应地调整其权重,以反映其新的处理能力,为了显示不同终端连接和它们对应的权重值,用于加权轮询算法进行公平调度和负载均衡,通过复杂终端连接及权重值表说明不同终端连接及其对应的权重值:
表2复杂终端连接及权重值表
在每个轮询周期中,调度器根据权重值选择连接进行处理。根据表2,加权轮询算法可以按照设定的权重值,公平地分配处理任务,并实现终端连接的负载均衡。
在上述实施例中,所述数据压缩器包括压缩配置模块、压缩算法模块、编码模块和解码模块;所述压缩配置模块通过统计分析器分析处理待压缩原始数据的重复和冗余,并确定最佳的压缩算法和参数进行配置;所述压缩算法模块通过哈夫曼编码将原始数据进行转换压缩,在数据压缩后,通过所述编码模块将压缩后的数据进行编码,在接收端通过解码模块接收压缩后的数据,并将压缩数据解码为原始数据。
在具体实施例中,数据压缩器中的压缩配置模块利用统计分析器对待压缩的原始数据进行分析,以确定重复和冗余的部分,并据此确定最佳的压缩算法和参数进行配置。通过分析数据的特征和模式,可以选择适当的压缩算法以及相应的参数设置,以最大程度地减小数据的存储空间。而压缩算法模块采用哈夫曼编码等压缩算法,将原始数据进行转换和压缩。哈夫曼编码是一种无损压缩算法,根据原始数据出现的频率构建一个最优的编码表,将出现频率较高的数据用较短的编码表示,从而实现对数据的有效压缩。编码模块将压缩后的数据通过编码模块进行编码,即将压缩后的数据转换为可传输或存储的特定格式。编码可以将压缩后的数据转换为二进制流或其他形式的数据,以便在传输或存储过程中进行处理和解码。而在接收端使用解码模块对压缩后的数据进行解码,将压缩数据还原为原始数据。解码模块根据压缩过程中使用的算法和参数,逆向操作对数据进行解压缩,恢复原始数据的格式和内容。
在上述实施例中,所述数据缓存机制通过客户端缓存、代理服务器缓存和网页响应头控制优化网络传输效率并降低数据传输延迟和带宽占用;所述客户端缓存通过网页记录工具在本地存储已访问过的网页资源;所述代理服务器缓存通过云端服务器存储访问的网页内容;所述网页响应头控制通过跳接头字段工具设置缓存过期时间和验证标识,以跳过请求步骤以避免与服务器的交互延迟,提高网页获取速度。
在具体实施例中,如附图3所示,通过数据缓存机制读取网页数据时,首先读取本地缓存,如果未能命中则继续读取代理服务器缓存,如果仍未命中则向源服务器进行请求,如果命中读取到的话则直接返回浏览器,提高网页读取速率,其中,客户端缓存是指在用户终端(如浏览器)上缓存数据的一种机制。当客户端请求数据时,先检查本地缓存是否存在相应的数据副本,并且验证该副本是否仍然有效(例如,通过检查缓存标识或过期时间)。如果有效,客户端可以直接从缓存中获取数据,而无需向服务器发起新的请求,从而减少网络传输和延迟。而代理服务器缓存是指位于客户端和服务器之间的中间服务器缓存。当代理服务器收到客户端请求时,它可以检查自己的缓存是否有与请求相关的数据。如果存在有效的缓存副本,代理服务器可以直接返回缓存数据给客户端,减少了对服务器的请求,节省了网络传输带宽和降低了延迟。网页响应头控制则是利用网页响应头中的缓存控制字段(如Cache-Control和Expires)可以让服务器在响应中指定数据的缓存策略。例如,服务器可以设置缓存时间、缓存策略(如是否允许缓存副本被共享或仅用于私有缓存)以及缓存副本的验证方式等。客户端和中间代理服务器根据这些缓存控制字段来决定是否缓存数据以及数据的有效期,从而优化网络传输效率并减少对服务器的请求。
通过客户端缓存、代理服务器缓存和网页响应头的控制,数据缓存机制实现了在不需要重新获取数据时直接利用缓存数据,从而减少了网络传输延迟和带宽占用。这种缓存技术可以显著提高数据访问速度,减轻服务器负载,并提供更好的用户体验和网络效率。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些具体实施方式仅是举例说明,本领域的技术人员在不脱离本发明的原理和实质的情况下,可以对上述方法和***的细节进行各种省略、替换和改变。例如,合并上述方法步骤,从而按照实质相同的方法执行实质相同的功能以实现实质相同的结果则属于本发明的范围。因此,本发明的范围仅由所附权利要求书限定。
Claims (9)
1.一种面向多终端无线通信的Socket线程池设计方法,其特征在于:包括以下步骤:
步骤一,通过线程池执行器TPE创建线程池,所述线程池执行器通过数组阻塞队列ABQ存储待处理的任务;
步骤二,根据***负载情况,通过动态调度算法动态调整线程池的核心线程数和最大线程数,以适应不同的通信负载情况;
步骤三,创建终端连接池,通过Socket连接建立连接池,管理与各个终端之间的连接;
步骤四,通过I/O多路复用方法同时监测和处理读写事件以降低***开销;
步骤五,通过非阻塞I/O方法对每个连接进行异步处理以避免线程阻塞,提高***并发性能和响应速度;
步骤六,通过数据缓存机制将待发送或接收的数据暂存在缓冲区中以降低数据延迟带宽,并通过数据压缩器对数据进行压缩以方便传输;
步骤七,通过负载均衡策略将任务均衡地分配给不同的终端或线程,避免单点故障和资源浪费;
步骤八,引入安全认证和加密机制,所述安全认证和加密机制通过安全套接层协议SSL进行通信连接的安全认证和数据的加密传输,确保通信数据的机密性和完整性;
步骤九,通过网页缓存机制优化网络传输效率和数据传输的延迟以及带宽占用。
2.根据权利要求1所述的一种面向多终端无线通信的 Socket 线程池设计方法,其特征在于:所述线程池执行器TPE通过内部构造函数设置核心线程数与最大线程数,并在执行任务中添加拒绝策略,所述拒绝策略通过线程池饱和策略DOP丢弃任务队列中被添加但尚未被执行的任务,并尝试再次提交被拒绝的任务。
3.根据权利要求1所述的一种面向多终端无线通信的 Socket 线程池设计方法,其特征在于:所述数组阻塞队列ABQ通过数组存储元素,并通过可重入锁和条件变量实现任务的有界存储和线程的同步操作;所述数组阻塞队列ABQ通过阻塞***和移除方法提供协调线程之间的等待和通知机制以避免***资源消耗。
4.根据权利要求1所述的一种面向多终端无线通信的 Socket 线程池设计方法,其特征在于:所述动态调度算法通过应用程序接口API监测***的资源利用情况,并获取***实时负载情况,根据实时负载情况任务优先级动态调整公式决定是否接受新的连接请求,所述任务优先级动态调整公式为:
(1)
在公式(1)中,表示任务的基础优先级,根据任务类型和重要程度进行设定;/>表示任务完成所需的时间;/>表示预期完成任务所需的时间;通过公式(1)动态调整任务处理顺序以减少***处理时间;当***运行过程中,***负载因为数据大小不同随时变化,通过动态线程池大小分布函数改变线程池的大小以提供更多的处理能力并节省资源,其中,动态线程池大小分布函数表达式为:
(2)
在公式(2)中,R表示线程池基础大小;表示当前活跃任务数;/>表示根据***性能和资源利用情况确定的系数,用于平衡线程池大小和任务数量之间的关系。
5.根据权利要求1所述的一种面向多终端无线通信的 Socket 线程池设计方法,其特征在于:所述非阻塞I/O方法包括以下步骤:
步骤1,通过socket库创建非阻塞套接字对象;
步骤2,将套接字与本地或远程地址进行绑定,以便建立网络连接;
步骤3,通过延时函数将套接字设置为非阻塞模式;
步骤4,通过非阻塞的遍历函数监听客户端的连接请求;
步骤5,通过轮询机制检查套接字的就绪状态;
步骤6,当套接字处于就绪状态时,在套接字可读情况下,通过非阻塞的记录函数读取数据;在套接字可写情况下,通过非阻塞的发送函数发送数据;
步骤7,重复执行步骤5至步骤6,持续轮询套接字的就绪状态,以实现持续的非阻塞 I/O 操作。
6.根据权利要求1所述的一种面向多终端无线通信的 Socket 线程池设计方法,其特征在于:所述负载均衡策略包括动态健康检查和监控单元、权重调整单元、加权轮询单元和动态扩缩容单元,所述健康检查和监控单元通过心跳机制定期对线程或服务器进行健康检查,确认其可用性和正常工作状态;所述权重调整单元通过性能采集器获取负载信息,并使用反馈控制器动态调整权重值;所述加权轮询单元通过加权轮询算法将任务动态分配到不同的线程或服务器上,使得负载在整体上保持均衡;所述动态扩缩容单元通过云计算服务动态调整线程或服务器数量以实现负载均衡化。
7.根据权利要求6所述的一种面向多终端无线通信的 Socket 线程池设计方法,其特征在于:所述加权轮询算法通过遍历函数为每个线程或服务器附加一个权重值,并计算线程或服务器的权重之和,在线程或服务器的权重之间,通过队列中的每个元素表示一个线程或服务器任务,并通过重复添加的元素对应任务权重值;在进行任务计算时,通过轮询函数按照队列中元素的顺序依次选择线程或服务器来接收任务;所述轮询函数表达式为:
(3)
在公式(3)中,P表示服务器或线程池当前的 CPU 使用率,Z表示服务器或线程池当前的内存使用率,X表示服务器或线程池的网络带宽大小,e表示服务器或线程池处理每个请求所花费的时间,a、c、h和s表示权重系数,用于调节不同指标的重要性。
8.根据权利要求1所述的一种面向多终端无线通信的 Socket 线程池设计方法,其特征在于:所述数据压缩器包括压缩配置模块、压缩算法模块、编码模块和解码模块;所述压缩配置模块通过统计分析器分析处理待压缩原始数据的重复和冗余,并确定最佳的压缩算法和参数进行配置;所述压缩算法模块通过哈夫曼编码将原始数据进行转换压缩,在数据压缩后,通过所述编码模块将压缩后的数据进行编码,在接收端通过解码模块接收压缩后的数据,并将压缩数据解码为原始数据。
9.根据权利要求1所述的一种面向多终端无线通信的 Socket 线程池设计方法,其特征在于:所述数据缓存机制通过客户端缓存、代理服务器缓存和网页响应头控制优化网络传输效率并降低数据传输延迟和带宽占用;所述客户端缓存通过网页记录工具在本地存储已访问过的网页资源;所述代理服务器缓存通过云端服务器存储访问的网页内容;所述网页响应头控制通过跳接头字段工具设置缓存过期时间和验证标识,以跳过请求步骤以避免与服务器的交互延迟,提高网页获取速度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311013543.2A CN116755863B (zh) | 2023-08-14 | 2023-08-14 | 一种面向多终端无线通信的Socket线程池设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311013543.2A CN116755863B (zh) | 2023-08-14 | 2023-08-14 | 一种面向多终端无线通信的Socket线程池设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116755863A true CN116755863A (zh) | 2023-09-15 |
CN116755863B CN116755863B (zh) | 2023-10-24 |
Family
ID=87949929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311013543.2A Active CN116755863B (zh) | 2023-08-14 | 2023-08-14 | 一种面向多终端无线通信的Socket线程池设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116755863B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050149529A1 (en) * | 2004-01-02 | 2005-07-07 | Andi Gutmans | Efficient handling of download requests |
US20060026169A1 (en) * | 2002-11-06 | 2006-02-02 | Pasqua Roberto D | Communication method with reduced response time in a distributed data processing system |
CN102546437A (zh) * | 2012-02-20 | 2012-07-04 | 南京邮电大学 | 一种面向物联网平台的套接字实现方法 |
CN104410607A (zh) * | 2014-11-06 | 2015-03-11 | 上海汽车集团股份有限公司 | 基于线程池的发动机测控方法 |
CN106997307A (zh) * | 2017-02-13 | 2017-08-01 | 上海大学 | 一种面向多终端无线通信的Socket线程池设计方法 |
US20190075170A1 (en) * | 2017-09-06 | 2019-03-07 | Oracle International Corporation | System and method for high availability and load balancing in a database environment |
-
2023
- 2023-08-14 CN CN202311013543.2A patent/CN116755863B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060026169A1 (en) * | 2002-11-06 | 2006-02-02 | Pasqua Roberto D | Communication method with reduced response time in a distributed data processing system |
US20050149529A1 (en) * | 2004-01-02 | 2005-07-07 | Andi Gutmans | Efficient handling of download requests |
CN102546437A (zh) * | 2012-02-20 | 2012-07-04 | 南京邮电大学 | 一种面向物联网平台的套接字实现方法 |
CN104410607A (zh) * | 2014-11-06 | 2015-03-11 | 上海汽车集团股份有限公司 | 基于线程池的发动机测控方法 |
CN106997307A (zh) * | 2017-02-13 | 2017-08-01 | 上海大学 | 一种面向多终端无线通信的Socket线程池设计方法 |
US20190075170A1 (en) * | 2017-09-06 | 2019-03-07 | Oracle International Corporation | System and method for high availability and load balancing in a database environment |
Non-Patent Citations (1)
Title |
---|
杨夫坤 等: "基于Socket分布式计算的泥石流危险性分区***", 计算机工程与设计, pages 4909 - 4912 * |
Also Published As
Publication number | Publication date |
---|---|
CN116755863B (zh) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2014061481A1 (ja) | 適応的圧縮アルゴリズムを用いたデータ転送装置及びデータ転送システム | |
KR100992282B1 (ko) | 통신 접속 수립 방법과 시스템, 데이터 전송 방법과 시스템, 및 컴퓨터 판독 가능한 저장 매체 | |
US20030236837A1 (en) | Content delivery system providing accelerate content delivery | |
CN110602156A (zh) | 一种负载均衡调度方法及装置 | |
CN110248210B (zh) | 视频传输优化方法 | |
US20080077702A1 (en) | Dynamic server stream allocation | |
CN111181873B (zh) | 数据发送方法、装置、存储介质和电子设备 | |
CN108989845A (zh) | 一种基于spice协议的视频传输方法 | |
CN111966446A (zh) | 一种容器环境下rdma虚拟化方法 | |
CN113141321A (zh) | 一种基于边缘计算的数据传输方法及电子设备 | |
CN112422448A (zh) | Fpga加速卡网络数据传输方法及相关组件 | |
CN112799811B (zh) | 一种边缘网关的高并发线程池任务调度方法 | |
CN116755863B (zh) | 一种面向多终端无线通信的Socket线程池设计方法 | |
CN109462879B (zh) | 一种接纳控制方法及*** | |
JP2009032083A (ja) | 負荷制御装置及び方法及びプログラム | |
CN112148474A (zh) | 面向负载均衡的龙芯大数据一体机自适应任务分割方法及*** | |
CN111131243A (zh) | Dpi***策略处理方法及装置 | |
WO2002101570A1 (en) | Network system with web accelerator and operating method for the same | |
CN115917519B (zh) | 存储有信息处理程序的记录介质、信息处理装置和信息处理方法 | |
Cecchet | Parallel pull-based LRU: a request distribution algorithm for clustered Web caches using a DSM for memory mapped networks | |
CN118317002A (zh) | 一种基于数据快递的高效动态压缩即时传输方法 | |
CN117097747A (zh) | 一种rdma网络资源复用的方法与装置 | |
JP2003091468A (ja) | 通信制御システム | |
CN118018573A (zh) | 一种物联网实时通信的实现方法、装置、设备及介质 | |
CN117527905A (zh) | 一种网络文件***的请求处理方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |