CN104239149B - 一种服务端多线程并行数据处理方法及负载均衡方法 - Google Patents

一种服务端多线程并行数据处理方法及负载均衡方法 Download PDF

Info

Publication number
CN104239149B
CN104239149B CN201410444654.3A CN201410444654A CN104239149B CN 104239149 B CN104239149 B CN 104239149B CN 201410444654 A CN201410444654 A CN 201410444654A CN 104239149 B CN104239149 B CN 104239149B
Authority
CN
China
Prior art keywords
data
data processing
thread
processed
packet
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.)
Expired - Fee Related
Application number
CN201410444654.3A
Other languages
English (en)
Other versions
CN104239149A (zh
Inventor
周惠
胡光永
谈璐
高红民
彭建华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Huicheng Technology Co ltd
Original Assignee
Nanjing Institute of Industry Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing Institute of Industry Technology filed Critical Nanjing Institute of Industry Technology
Priority to CN201410444654.3A priority Critical patent/CN104239149B/zh
Priority claimed from CN201210315602.7A external-priority patent/CN102866922B/zh
Publication of CN104239149A publication Critical patent/CN104239149A/zh
Application granted granted Critical
Publication of CN104239149B publication Critical patent/CN104239149B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种服务端多线程并行数据处理方法,包括以下步骤:步骤1、服务端进程启动时,开启一个数据接收线程,开启一个数据分配线程以及开启一个包含多个数据处理线程的数据处理线程池,同时开辟一段用于存储接收到的客户端数据的动态存储区,并按照FIFO方式管理动态存储区;步骤2、数据接收线程通过socket侦听并接收客户端传过来的数据包,直接把数据包放入数据存储区,立即返回继续侦听接收客户端数据;步骤3、数据分配线程对动态存储区进行轮询。

Description

一种服务端多线程并行数据处理方法及负载均衡方法
本申请是分案申请,原申请的申请号 CN201210315602.7,申请日:2012.08.31,发明名称:一种海量数据多线程并行处理中的负载均衡方法。
技术领域
本发明涉及海量数据的多线程并行处理,尤其涉及一种服务端多线程并行数据处理方法及和一种海量数据多线程并行处理中的负载均衡方法,属于计算机网络技术领域。
背景技术
在大规模部署的终端设备接入与海量数据并发处理系统中,系统单位时间内接收处理数据量非常大,系统接收后马上产生一个新的线程,对接收的数据进行处理这种方法,系统并发性效率将会显著降低,这是由于创建线程需要较多系统开销、同时频繁分配、释放系统资源也要花费较多时间,为了尽力减少系统不必要的开销以及计算时间,提高系统并行处理能力,一般采用多线程、线程池的方式进行,通过接收与处理分离的,采用FIFO方式处理数据,也就是先到达的数据先处理。
系统接收数据后,如果随机或简单地对接收数据进行分配,由于线程对计算机时间片的分配以及数据内容的不同,每个数据处理的时间将不一致,随机分配将会造成数据处理线程池有的线程空闲,有的线程数据区中排放大量待处理数据,严重影响系统的性能,影响系统并发处理能力。
发明内容
本发明所要解决的技术问题在于提供一种服务端多线程并行数据处理方法及海量数据多线程并行处理中的负载均衡方法,能够将数据优先分配至当前比较空闲的数据处理线程进行处理,从而显著提高大规模部署的终端设备接入能力与海量数据的并行处理、密集计算的能力。
为解决上述技术问题,发明具体采用以下技术方案:
一种服务端多线程并行数据处理方法,其特征在于包括以下步骤:
步骤1、服务端进程启动时,开启一个数据接收线程(R),开启一个数据分配线程(S)以及开启一个包含多个数据处理线程(D)的数据处理线程池,同时开辟一段用于存储接收到的客户端数据的动态存储区(BM),并按照FIFO方式管理动态存储区(BM);服务端为线程池中的每一个数据处理线程开辟一个动态存储区(SM)和一个初始值为0的计数器;
步骤2、数据接收线程(R)通过socket侦听并接收客户端传过来的数据包,直接把数据包放入数据存储区(BM),立即返回继续侦听接收客户端数据;
步骤3、数据分配线程(S)对动态存储区(BM)进行轮询,如果动态存储区(BM)存在数据包,则从动态存储区(BM)中依次取出数据包,同时对线程池中的数据处理线程进行轮询,循环检测每个数据处理线程的相对空闲率;如果存在当前待处理数据包个数C为0或者已处理数据包个数n为0的数据处理线程,这样的的数据处理线程其相对空闲率最高,则选择其中任意一个数据处理线程,将数据包放入该数据处理线程的动态存储区(SM);否则,将新收到的数据包分配给相对空闲率最高的数据处理线程,所述数据处理线程的相对空闲率按照以下公式计算:
式中,为相对空闲率;为该数据处理线程当前待处理数据包个数;为该数据处理线程在处理n个数据包后的数据处理效率,其表达式为如下:
其中,n为已处理数据包个数,为该数据处理线程处理第n个数据包所耗费时间。
一种海量数据多线程并行处理中的负载均衡方法,服务端利用多个并行的数据处理线程对接收到的数据进行处理,对于每一个新接收到的数据包,服务端按照以下方法为其分配数据处理线程:
判断是否存在当前待处理数据包个数C为0或者已处理数据包个数n为0的数据处理线程,如是,则将新收到的数据包分配给其中任意一个数据处理线程;如否,则将新收到的数据包分配给相对空闲率最高的数据处理线程,所述数据处理线程的相对空闲率按照以下公式计算:
式中,为相对空闲率;为该数据处理线程当前待处理数据包个数;为该数据处理线程在处理n个数据包后的数据处理效率,其表达式为如下:
其中,n为已处理数据包个数,为该数据处理线程处理第n个数据包所耗费时间。
本发明的线程空闲率由两个因数决定:线程中排队待处理的数据包数以及线程处理数据的效率。通过线程对已处理数据包的时间进行线性平均得到当前线程的数据处理效率,线程中排队待处理的数据包与线程处理效率值的乘积,预测了后续当前线程还要花费多长时间处理完线程中待处理的数据包,这个处理时间越短,则表示后续放入该线程的数据将被更优先处理。同时,该算法计算简单,基本不耗费计算机资源,执行算法的时间只有千分之一微秒不到,即使海量数据分析处理的情况下,对系统性能、资源的影响也可以忽略。因此,该算法具有很强的实际应用价值。
本发明的负载均衡方法根据每个数据处理线程的待处理数据包个数和数据处理效率计算其相对空闲率,并根据相对空闲率对每个数据处理线程进行合理数据分配,能够显著提高系统对海量数据的并行处理、密集计算的能力。
附图说明
图1为服务端多线程并行数据处理的原理示意图;
图2为服务端多线程并行数据处理的流程示意图。
具体实施方式
下面结合附图对本发明的技术方案进行详细说明:
本发明的思路是在对多线程并行处理的数据进行分配时,根据各数据处理线程的相对空闲率来对每个数据处理线程进行合理数据分配,从而提高系统对海量数据的并行处理、密集计算的能力。
图1显示了一个服务端多线程并行数据处理的实例,在该实例中,服务端在进程启动时,开启一个数据接收线程R,并创建包含多个数据处理线程D的线程池,以及一个数据分发线程S,同时开辟一段动态存储区BM,并为线程池中的每一个数据处理线程D开辟一个动态存储区SM和一个初始值为0的计数器C;数据接收线程R只负责接收数据包并将其存入动态存储区BM;数据分发线程S循环读取动态存储区BM中的数据包,并根据线程池中各数据处理线程的相对空闲率将数据包存入相对空闲率最高的数据处理线程的动态存储区SM,存入一个数据包则将该数据处理线程的计数器C加1;数据处理线程D从自身的动态存储区SM中提取数据包进行处理,每处理一个数据包,就将自身的计数器C减1。这样,计数器C的数值就能够动态反映该数据处理线程的待处理数据包数量。
详细的服务端多线程并行数据处理流程如图2所示,包括以下步骤:
步骤1、服务端进程启动时,开启一个数据接收线程R,开启一个数据分配线程S以及开启一个包含多个数据处理线程D的数据处理线程池,同时开辟一段用于存储接收到的客户端数据的动态存储区BM,并按照FIFO方式管理动态存储区BM;服务端为线程池中的每一个数据处理线程开辟一个动态存储区SM和一个初始值为0的计数器C;
步骤2、数据接收线程R通过socket侦听并接收客户端传过来的数据包,直接把数据包放入数据存储区BM,立即返回继续侦听接收客户端数据;
步骤3、数据分配线程S对动态存储区BM进行轮询,如果动态存储区BM存在数据包,则从动态存储区BM中依次取出数据包,同时对线程池中的数据处理线程进行轮询,循环检测每个数据处理线程的相对空闲率:如果存在当前待处理数据包个数C为0或者已处理数据包个数n为0的数据处理线程,这样的的数据处理线程其相对空闲率最高,则选择其中任意一个数据处理线程,将数据包放入该数据处理线程的动态存储区SM;如否,则将新收到的数据包分配给相对空闲率最高的数据处理线程,所述数据处理线程的相对空闲率按照以下公式计算:
式中,为相对空闲率;为该数据处理线程当前待处理数据包个数;为该数据处理线程在处理n个数据包后的数据处理效率,其表达式为如下:
其中,n为已处理数据包个数,为该数据处理线程处理第n个数据包所耗费时间。
步骤4、数据处理线程D轮询本线程的动态存储区SM,按照先进先出的处理规则处理数据包,每处理完成一个数据包后,对该线程的计数器C减1。
至此,即完成了本发明的负载均衡方法。

Claims (1)

1.一种服务端多线程并行数据处理方法,其特征在于包括以下步骤:
步骤1、服务端进程启动时,开启一个数据接收线程(R),开启一个数据分配线程(S)以及开启一个包含多个数据处理线程(D)的数据处理线程池,同时开辟一段用于存储接收到的客户端数据的动态存储区(BM),并按照FIFO方式管理动态存储区(BM);服务端为线程池中的每一个数据处理线程开辟一个动态存储区(SM)和一个初始值为0的计数器;
步骤2、数据接收线程(R)通过socket侦听并接收客户端传过来的数据包,直接把数据包放入数据存储区(BM),立即返回继续侦听接收客户端数据;
步骤3、数据分配线程(S)对动态存储区(BM)进行轮询,如果动态存储区(BM)存在数据包,则从动态存储区(BM)中依次取出数据包,同时对线程池中的数据处理线程进行轮询,循环检测每个数据处理线程的相对空闲率;如果存在当前待处理数据包个数C为0或者已处理数据包个数n为0的数据处理线程,这样的数据处理线程其相对空闲率最高,则选择其中任意一个数据处理线程,将数据包放入该数据处理线程的动态存储区(SM);否则,将新收到的数据包分配给相对空闲率最高的数据处理线程,所述数据处理线程的相对空闲率按照以下公式计算:
式中,为相对空闲率;为该数据处理线程当前待处理数据包个数;为该数据处理线程在处理n个数据包后的数据处理效率,其表达式为如下:
其中,n为已处理数据包个数,为该数据处理线程处理第n个数据包所耗费时间。
CN201410444654.3A 2012-08-31 2012-08-31 一种服务端多线程并行数据处理方法及负载均衡方法 Expired - Fee Related CN104239149B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410444654.3A CN104239149B (zh) 2012-08-31 2012-08-31 一种服务端多线程并行数据处理方法及负载均衡方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201410444654.3A CN104239149B (zh) 2012-08-31 2012-08-31 一种服务端多线程并行数据处理方法及负载均衡方法
CN201210315602.7A CN102866922B (zh) 2012-08-31 2012-08-31 一种海量数据多线程并行处理中的负载均衡方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201210315602.7A Division CN102866922B (zh) 2012-08-31 2012-08-31 一种海量数据多线程并行处理中的负载均衡方法

Publications (2)

Publication Number Publication Date
CN104239149A CN104239149A (zh) 2014-12-24
CN104239149B true CN104239149B (zh) 2017-03-29

Family

ID=52227280

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410444654.3A Expired - Fee Related CN104239149B (zh) 2012-08-31 2012-08-31 一种服务端多线程并行数据处理方法及负载均衡方法

Country Status (1)

Country Link
CN (1) CN104239149B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107193539B (zh) * 2016-03-14 2020-11-24 北京京东尚科信息技术有限公司 多线程并发处理方法和多线程并发处理系统
CN106383742B (zh) * 2016-09-23 2019-10-18 郑州云海信息技术有限公司 一种基于linux的IO调度方法
CN106528299B (zh) * 2016-09-23 2019-12-03 北京华泰德丰技术有限公司 数据处理方法及装置
CN107046471A (zh) * 2017-04-07 2017-08-15 苏州乐麟无线信息科技有限公司 计费数据的处理方法、装置及服务器系统
CN107220551B (zh) * 2017-04-21 2020-12-25 上海海加网络科技有限公司 一种基于双卡校验的多线程组加解密调度方法及系统
CN109239028A (zh) * 2018-07-26 2019-01-18 海南大学 一种海南鱼体耐药性检测方法
CN111221652A (zh) * 2020-01-03 2020-06-02 北京百度网讯科技有限公司 数据处理方法和装置
CN111314874B (zh) * 2020-02-21 2021-08-03 南京工业职业技术大学 面向物联网应用的高并发海量数据采集方法
CN112910988A (zh) * 2021-01-28 2021-06-04 网宿科技股份有限公司 一种资源获取方法及资源调度装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256515A (zh) * 2008-03-11 2008-09-03 浙江大学 多核处理器操作系统负载均衡的实现方法
CN101403980A (zh) * 2008-11-12 2009-04-08 西安交通大学 一种电子产品码多线程处理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256515A (zh) * 2008-03-11 2008-09-03 浙江大学 多核处理器操作系统负载均衡的实现方法
CN101403980A (zh) * 2008-11-12 2009-04-08 西安交通大学 一种电子产品码多线程处理方法

Also Published As

Publication number Publication date
CN104239149A (zh) 2014-12-24

Similar Documents

Publication Publication Date Title
CN104239149B (zh) 一种服务端多线程并行数据处理方法及负载均衡方法
CN102866922B (zh) 一种海量数据多线程并行处理中的负载均衡方法
CN105718317B (zh) 一种任务调度方法及装置
KR101915198B1 (ko) 프로세서간 메시지처리장치 및 방법
CN101547150B (zh) 数据通信输入端口调度的方法及装置
US9552386B2 (en) Reducing lock occurrences in server/database systems
US9152482B2 (en) Multi-core processor system
CN102821164B (zh) 一种高效并行分布式数据处理系统
CN102521047B (zh) 实现多核处理器间中断负载均衡的方法
CN103412786B (zh) 一种高性能服务器架构系统及数据处理方法
US20130212594A1 (en) Method of optimizing performance of hierarchical multi-core processor and multi-core processor system for performing the method
RU2014118463A (ru) Способ, устройство и система для диспетчеризации ядра процессора в системе ядра мультипроцессора
WO2013180871A3 (en) Adaptive resource management of a data processing system
US20130047158A1 (en) Method and System for Real Time Detection of Resource Requirement and Automatic Adjustments
CN102624889A (zh) 一种基于接收与处理分离的海量数据并发性处理方法
CN114448989B (zh) 调整消息分发的方法、装置、电子设备、存储介质及产品
CN108196939B (zh) 用于云计算的虚拟机智能管理方法及装置
CN102831017B (zh) 一种高效分布式并行鉴权系统
CN103049421A (zh) 一种cpu与协处理器间的数据传输方法和装置
CN111367675A (zh) 一种线程调度方法、装置、设备及存储介质
CN108234646B (zh) 一种分配云安全资源的方法及装置
CN107370689A (zh) 一种1553b总线的消息负载均衡方法
CN106681832A (zh) 视频流分发方法
CN104506452B (zh) 一种报文处理方法及装置
US11003506B2 (en) Technique for determining a load of an application

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: Zhou Hui

Inventor after: Hu Guangyong

Inventor after: Tan Lu

Inventor after: Gao Hongmin

Inventor after: Peng Jianhua

Inventor before: Zhou Hui

Inventor before: Peng Jianhua

Inventor before: Gao Hongmin

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190313

Address after: 210019 Building No. 18, East Street, Jialing River, Jianye District, Nanjing City, Jiangsu Province, No. 03, 17 floors 1708-1

Patentee after: NANJING HUICHENG TECHNOLOGY Co.,Ltd.

Address before: 210000 East Zhongshan Road 532-2, Nanjing, Jiangsu Province

Patentee before: Nanjing Institute of Industry Technology

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Server multithread parallel data processing method and load balancing method

Effective date of registration: 20190920

Granted publication date: 20170329

Pledgee: Nanjing Bank Co.,Ltd. Chengnan Branch

Pledgor: NANJING HUICHENG TECHNOLOGY Co.,Ltd.

Registration number: Y2019320000143

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170329

Termination date: 20210831

CF01 Termination of patent right due to non-payment of annual fee