CN108694083B - 一种服务器的数据处理方法和装置 - Google Patents
一种服务器的数据处理方法和装置 Download PDFInfo
- Publication number
- CN108694083B CN108694083B CN201710225059.4A CN201710225059A CN108694083B CN 108694083 B CN108694083 B CN 108694083B CN 201710225059 A CN201710225059 A CN 201710225059A CN 108694083 B CN108694083 B CN 108694083B
- Authority
- CN
- China
- Prior art keywords
- thread
- data processing
- shared memory
- processing request
- memory queue
- 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.)
- Active
Links
Images
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/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
-
- 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/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明实施例公开了一种服务器的数据处理方法和装置;本实施例的网络收发层可以包括接受线程和多个辅助线程,接受线程用于接收数据处理请求,并分配给辅助线程,而辅助线程可以通过共享内存队列与业务逻辑线程进行通信,以对数据处理请求进行处理,其中,由于辅助线程具有多个,且与共享内存队列、以及业务逻辑线程三者一一对应,因此,可以大大提升网络收发层的处理能力,且无需进行锁竞争,大大提高了处理效率,有利于改善网络服务器的性能。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种服务器的数据处理方法和装置。
背景技术
随着网络技术的发展、以及用户需求的持续增多,网络服务器所面对的数据量也越来越为庞大,如何提高网络服务器的性能,使其能够更好地处理数据,一直都是人们所关注的问题。
在现有技术中,网络服务器一般分为网络收发层和业务逻辑层,网络收发层主要用于接收各种数据处理请求,而业务逻辑层则可以根据该数据处理请求对数据进行具体的处理,其中,网络收发层与业务逻辑层主要通过共享内存进行通信。例如,当网络收发层接收到数据处理请求后,可以将该数据处理请求保存至共享内存,然后,由多个业务逻辑层之间相互争抢锁,由抢到锁的业务逻辑层对共享内存中所保存的数据处理请求进行读取,并根据该数据处理请求对数据进行处理。
在对现有技术的研究和实践过程中,本发明的发明人发现,由于在现有方案中,网络收发层的处理能力有限,而且,业务逻辑层之间需要进行频繁地竞争,因此,不仅实现较为复杂,而且,处理效率也较低,大大影响网络服务器的性能。
发明内容
本发明实施例提供一种服务器的数据处理方法和装置,不仅实现简单,而且,可以大大提高处理效率,有利于改善网络服务器的性能。
本发明实施例提供一种服务器的数据处理方法,包括:
通过接受线程(AcceptThread)接收数据处理请求,所述接受线程对应多个辅助线程(AuxThread),每个辅助线程对应一个共享内存(SharedMemory)队列;
为所述数据处理请求选择辅助线程,并通过选择的辅助线程将所述数据处理请求写入对应的共享内存队列中;
调用与所述共享内存队列一一对应的业务逻辑线程(Worker);
通过所述业务逻辑线程对所述共享内存队列中的数据处理请求进行处理。
本发明实施例还提供一种服务器的数据处理装置,包括:
接收单元,用于通过接受线程接收数据处理请求,所述接受线程对应多个辅助线程,每个辅助线程对应一个共享内存队列;
选择单元,用于为所述数据处理请求选择辅助线程;
写入单元,用于通过选择的辅助线程将所述数据处理请求写入对应的共享内存队列中;
调用单元,用于调用与所述共享内存队列一一对应的业务逻辑线程;
处理单元,用于通过所述业务逻辑线程对所述共享内存队列中的数据处理请求进行处理。
本发明实施例的网络收发层可以包括接受线程和多个辅助线程,接受线程用于接收数据处理请求,并分配给辅助线程,而辅助线程可以通过共享内存队列与业务逻辑线程进行通信,以对数据处理请求进行处理,其中,由于辅助线程具有多个,且与共享内存队列、以及业务逻辑线程三者一一对应,因此,可以大大提升网络收发层的处理能力,且无需进行锁竞争,即每个业务逻辑线程只需处理与自身对应的共享内存队列中的数据处理请求即可,无需与其他业务逻辑线程争抢锁,所以,从整体上看,该方案相对于现有方案而言,不仅实现简单,而且,可以大大提高处理效率,有利于改善网络服务器的性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的服务器的数据处理方法的场景示意图;
图1b是本发明实施例提供的服务器的数据处理方法的流程图;
图2是本发明实施例提供的服务器的数据处理方法的另一流程图;
图3a是本发明实施例提供的服务器的数据处理装置的结构示意图;
图3b是本发明实施例提供的服务器的数据处理装置的另一结构示意图;
图4是本发明实施例提供的服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种服务器的数据处理方法和装置。
其中,该服务器的数据处理装置具体可以集成在服务器,比如网络服务器等设备中。例如,以集成在网络服务器中为例,参见图1a,该网络服务器可以包括接受线程(AcceptThread)、多个辅助线程(AuxThread)、以及多个业务逻辑线程(Worker),其中,接受线程用于接收数据处理请求,并分配给辅助线程,而每个辅助线程可以通过共享内存(SharedMemory)队列与业务逻辑线程进行通信,以对数据处理请求进行处理。其中,由于辅助线程具有多个,因此,可以大大提升网络收发层(包括接受线程和辅助线程)的处理能力;此外,由于辅助线程与共享内存队列、以及业务逻辑线程三者之间一一对应,所以,每个业务逻辑线程只需处理与自身(即业务逻辑线程)对应的共享内存队列中的数据处理请求即可,而无需与其他业务逻辑线程争抢锁,可以大大提升处理效率。
以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定
实施例一、
本实施将从服务器的数据处理装置的角度进行描述,该服务器的数据处理装置具体可以集成在服务器,比如网络服务器等设备中。
一种服务器的数据处理方法,简称数据处理方法,包括:通过接受线程接收数据处理请求,该接受线程对应多个辅助线程,每个辅助线程对应一个共享内存队列;为该数据处理请求选择辅助线程,并通过选择的辅助线程将该数据处理请求写入对应的共享内存队列中;调用与该共享内存队列一一对应的业务逻辑线程;通过该业务逻辑线程对该共享内存队列中的数据处理请求进行处理。
如图1b所示,该数据处理方法的具体流程可以如下:
101、通过接受线程接收数据处理请求。
其中,可以将网络收发层分为接受线程和辅助线程,一个接受线程对应多个辅助线程,每个辅助线程对应一个共享内存队列。
例如,以接受线程对应辅助线程A、辅助线程B和辅助线程C为例,则辅助线程A、辅助线程B和辅助线程C分别具有独立的共享内存队列,比如,辅助线程A对应共享内存队列1,辅助线程B对应共享内存队列2辅助线程C对应共享内存队列3,等等。
102、为该数据处理请求选择辅助线程。
例如,具体可以根据负载均衡策略来为该数据处理请求选择辅助线程,比如,具体可以如下:
获取该接受线程对应的多个辅助线程的负载信息,根据该负载信息从该多个辅助线程中选择负载最轻的辅助线程,将该数据处理请求分配给选择的辅助线程。
其中,该负载信息可以包括辅助线程当前处理的请求的数量(即连接数)等信息,比如,还是以接受线程对应辅助线程A、辅助线程B和辅助线程C为例,若辅助线程A当前处理的连接数为10个,辅助线程B当前处理的连接数为15个,而辅助线程C当前处理的连接数为13个,则此时,可以将该数据处理请求分配给辅助线程A,以此类推,等等。
103、通过选择的辅助线程将该数据处理请求写入对应的共享内存队列中;例如,具体可以如下:
根据预设映射关系获取与选择的辅助线程对应的共享内存队列,由选择的辅助线程将该数据处理请求写入该对应的共享内存队列中。
其中,辅助线程与共享内存队列的映射关系可以由维护人员根据实际应用的需求预先进行设置,也可以由系统自行进行建立,即在步骤“通过选择的辅助线程将该数据处理请求写入对应的共享内存队列中”之前,该数据处理方法还可以包括:
建立辅助线程与共享内存队列一一对应的映射关系,将该映射关系保存至预设数据库中。
则此时,步骤“根据预设映射关系获取与选择的辅助线程对应的共享内存队列”具体可以包括:通过查找该数据库中的映射关系,获取与选择的辅助线程对应的共享内存队列。
104、调用与该共享内存队列一一对应的业务逻辑线程。
例如,具体可以根据预设的共享内存队列与业务逻辑线程的对应关系,来调用与该共享内存队列对应的业务逻辑线程。
其中,该共享内存队列与业务逻辑线程的一一对应关系可以由维护人员根据实际应用的需求预先进行设置,也可以由系统自行进行建立,即在步骤“调用与该共享内存队列一一对应的业务逻辑线程”之前,该数据处理方法还可以包括:
建立共享内存队列与业务逻辑线程的一一对应关系,保存该对应关系。
则此时,步骤“调用与该共享内存队列一一对应的业务逻辑线程”具体可以包括:根据保存的对应关系,调用与该共享内存队列一一对应的业务逻辑线程。
105、通过该业务逻辑线程对该共享内存队列中的数据处理请求进行处理。
例如,具体可以通过该业务逻辑线程对该共享内存队列中的数据处理请求进行读取,由该业务逻辑线程根据读取到的数据处理请求确定操作对象和操作内容,并由该业务逻辑线程对该操作对象执行该操作内容。
比如,若操作对象为数据M,操作内容为“删除”,则此时,业务逻辑线程可以对数据M执行删除操作。
又比如,若操作对象为数据M,操作内容为“更新”,则此时,业务逻辑线程可以对数据M执行更新操作,以此类推,等等。
由上可知,本实施例的网络收发层可以包括接受线程和多个辅助线程,接受线程用于接收数据处理请求,并分配给辅助线程,而辅助线程可以通过共享内存队列与业务逻辑线程进行通信,以对数据处理请求进行处理,其中,由于辅助线程具有多个,且与共享内存队列、以及业务逻辑线程三者一一对应,因此,可以大大提升网络收发层的处理能力,且无需进行锁竞争,即每个业务逻辑线程只需处理与自身对应的共享内存队列中的数据处理请求即可,无需与其他业务逻辑线程争抢锁,所以,从整体上看,该方案相对于现有方案而言,不仅实现简单,而且,可以大大提高处理效率,有利于改善网络服务器的性能。
实施例二、
根据实施例一所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将以该服务器的数据处理装置具体集成在网络服务器中为例进行说明。
如图2所示,一种服务器的数据处理方法,具体流程可以如下:
201、网络服务器启动本地(即网络服务器)的接受线程,并通过该接受线程接收数据处理请求。
202、网络服务器在接收到数据处理请求后,根据负载均衡策略来为该数据处理请求选择辅助线程。
其中,该负载均衡策略可以根据实际应用的需求进行设置,例如,可以设置多个负载等级,如“重负载”、“中等负载”、以及“轻负载”等,每个负载等级具有相应的阈值,可以将辅助线程当前的负载信息与这些阈值进行比较,并基于比较结果对辅助线程当前的负载进行等级划分,在划分完毕后,可以按照预设选择策略在属于“轻负载”等级的辅助线程中选择所需的辅助线程,譬如,可以在属于“轻负载”等级的辅助线程中随机选择一辅助线程,等等。
其中,该负载信息可以包括辅助线程当前处理的请求的数量(即连接数)等信息,比如,以接受线程对应辅助线程A、辅助线程B、辅助线程C、以及辅助线程D,且“重负载”的条件为连接数大于25个,“中等负载”的条件为连接数在15~25个之间,“轻负载”的条件为连接数小于15个为例,若辅助线程A当前处理的连接数为18个,辅助线程B当前处理的连接数为30个,辅助线程C当前处理的连接数为8个,而辅助线程D当前处理的连接数为11个,则此时,可以确定辅助线程A的负载等级为“中等负载”,辅助线程B的负载等级为“重负载”,辅助线程C和辅助线程D的负载等级为“轻负载”,所以,可以在辅助线程C和辅助线程D机选择一辅助线程,比如选择辅助线程C,并将该数据处理请求分配给辅助线程C。
可选的,也可以采用其他的方式,比如,可以将这多个辅助线程的负载进行排序,然后,基于排序从中选择负载最轻的辅助线程,具体可以如下:
网络服务器获取该接受线程对应的多个辅助线程的负载信息,根据该负载信息对该多个辅助线程进行排序,基于排序从该多个辅助线程中选择负载最轻的辅助线程,将该数据处理请求分配给选择的辅助线程。
比如,还是以接受线程对应辅助线程A、辅助线程B、辅助线程C、以及辅助线程D为例,若辅助线程A当前处理的连接数为18个,辅助线程B当前处理的连接数为30个,辅助线程C当前处理的连接数为8个,而辅助线程D当前处理的连接数为11个,则此时,可以对这些辅助线程进行排序,如按照连接数从高到低的次序进行排序,即辅助线程B>辅助线程A>辅助线程D>辅助线程C,由于辅助线程C的连接数最少,所以,可以确定辅助线程C的负载最轻,因此,可以将该数据处理请求分配给辅助线程C,比如,由接受线程将该数据处理请求传递给该辅助线程C,等等。
需说明的是,也可以按照连接数从低到高的次序进行排序,其实现与上述类似,在此不再赘述。
203、网络服务器根据预设映射关系获取与步骤202中所选择的辅助线程对应的共享内存队列。
例如,以与辅助线程A一一对应的共享内存队列为共享内存队列1,与辅助线程B一一对应的共享内存队列为共享内存队列2,与辅助线程C一一对应的共享内存队列为共享内存队列3,且与辅助线程D一一对应的共享内存队列为共享内存队列4为例,若在步骤202中,选择了辅助线程C,则此时,可以获取与辅助线程C一一对应的共享内存队列,即共享内存队列3。
其中,辅助线程与共享内存队列的映射关系可以由维护人员根据实际应用的需求预先进行设置,也可以由系统自行进行建立,比如,可以预先建立辅助线程与共享内存队列一一对应的映射关系,并将该映射关系保存至预设数据库中,这样,此时便可以通过查找该数据库中的映射关系,来获取到与所选择的辅助线程对应的共享内存队列,具体可参见前面的实施例,在此不再赘述。
204、网络服务器通过选择的辅助线程将该数据处理请求写入该共享内存队列中。
例如,若在步骤203中,选择共享内存队列3,则此时,可以通过辅助线程3将该数据处理请求写入共享内存队列3中。
205、网络服务器调用与该共享内存队列一一对应的业务逻辑线程。
例如,具体可以根据预设的共享内存队列与业务逻辑线程的对应关系,来调用与该共享内存队列对应的业务逻辑线程。
比如,若在步骤204中,将该数据处理请求写入共享内存队列3中,则此时,网络服务器可以调用与该共享内存队列3对应的业务逻辑线程,比如调用业务逻辑线程3,同理,若在步骤204中,将该数据处理请求写入其他的共享内存队列,如共享内存队列2中,则此时,网络服务器可以调用与该共享内存队列2对应的业务逻辑线程,比如调用业务逻辑线程2,以此类推,等等。
其中,该共享内存队列与业务逻辑线程的一一对应关系可以由维护人员根据实际应用的需求预先进行设置,也可以由系统自行进行建立,比如,可以在调用业务逻辑线程之前,建立共享内存队列与业务逻辑线程的一一对应关系,并保存该对应关系,这样,此时便可以根据保存的对应关系,调用与该共享内存队列一一对应的业务逻辑线程,具体可参见实施例一,在此不再赘述。
206、网络服务器通过该业务逻辑线程对该共享内存队列中的数据处理请求进行读取。
比如,以业务逻辑线程具体为业务逻辑线程3为例,由于业务逻辑线程3对应的共享内存队列为共享内存队列3,因此,此时业务逻辑线程3可以对共享内存队列3进行读取,以获取相应数据处理请求;同理,若业务逻辑线程具体为业务逻辑线程2,由于业务逻辑线程2对应的共享内存队列为共享内存队列2,因此,此时业务逻辑线程2可以对共享内存队列2进行读取,以获取相应数据处理请求,以此类推,等等。
207、业务逻辑线程根据读取到的数据处理请求确定操作对象和操作内容。例如,具体可以如下:
若数据处理请求指示删除数据M,则此时,可以确定操作对象为数据M,操作内容为删除。
若数据处理请求指示修改数据M,则此时,可以确定操作对象为数据M,操作内容为修改。
若数据处理请求指示更新数据M,则此时,可以确定操作对象为数据M,操作内容为更新。
若数据处理请求指示添加数据M,则此时,可以确定操作对象为数据M,操作内容为添加。
依次类推,在此不再列举。
208、业务逻辑线程对该操作对象执行该操作内容。例如,具体可以如下:
若操作对象为数据M,操作内容为删除,则此时,可以对数据M执行删除操作。
若操作对象为数据M,操作内容为修改,则此时,可以对数据M执行修改操作。
若操作对象为数据M,操作内容为更新,则此时,可以对数据M执行更新操作。
若操作对象为数据M,操作内容为添加,则此时,可以对数据M执行添加操作。
依次类推,在此不再列举。
由上可知,本实施例的网络收发层可以包括接受线程和多个辅助线程,接受线程用于接收数据处理请求,并分配给辅助线程,而辅助线程可以通过共享内存队列与业务逻辑线程进行通信,以对数据处理请求进行处理,其中,由于辅助线程具有多个,且与共享内存队列、以及业务逻辑线程三者一一对应,因此,可以大大提升网络收发层的处理能力,且无需进行锁竞争,即每个业务逻辑线程只需处理与自身对应的共享内存队列中的数据处理请求即可,无需与其他业务逻辑线程争抢锁,所以,从整体上看,该方案相对于现有方案而言,不仅实现简单,而且,可以大大提高处理效率,有利于改善网络服务器的性能。
实施例三、
为了更好地实施以上方法,本发明实施例还提供一种服务器的数据处理装置,简称数据处理装置。如图3a所示,该数据处理装置可以包括接收单元301、选择单元302、写入单元303、调用单元304、以及处理单元305,具体可以如下:
(1)接收单元301;
接收单元301,用于通过接受线程接收数据处理请求。
其中,可以将网络收发层分为接受线程和辅助线程,一个接受线程对应多个辅助线程,每个辅助线程对应一个共享内存队列。
例如,以接受线程对应辅助线程A、辅助线程B和辅助线程C为例,则辅助线程A、辅助线程B和辅助线程C分别具有独立的共享内存队列,比如,辅助线程A对应共享内存队列1,辅助线程B对应共享内存队列2辅助线程C对应共享内存队列3,等等。
(2)选择单元302;
选择单元302,用于为该数据处理请求选择辅助线程。
例如,选择单元302,具体可以用于根据负载均衡策略来为该数据处理请求选择辅助线程,比如,具体可以如下:
获取该接受线程对应的多个辅助线程的负载信息,根据该负载信息从该多个辅助线程中选择负载最轻的辅助线程,将该数据处理请求分配给选择的辅助线程。
其中,该负载信息可以包括辅助线程当前处理的请求的数量(即连接数)等信息,比如,还是以接受线程对应辅助线程A、辅助线程B和辅助线程C为例,若辅助线程A当前处理的连接数为10个,辅助线程B当前处理的连接数为15个,而辅助线程C当前处理的连接数为13个,则此时,可以将该数据处理请求分配给辅助线程A,以此类推,等等。
(3)写入单元303;
写入单元303,用于通过选择的辅助线程将该数据处理请求写入对应的共享内存队列中。
例如,该写入单元303,具体可以用于根据预设映射关系获取与选择的辅助线程对应的共享内存队列,由选择的辅助线程将该数据处理请求写入该对应的共享内存队列中。
其中,辅助线程与共享内存队列的映射关系可以由维护人员根据实际应用的需求预先进行设置,也可以由系统自行进行建立,即如图3b所示,该数据处理装置还可以包括建立单元306,如下:
建立单元306,可以用于建立辅助线程与共享内存队列一一对应的映射关系,将该映射关系保存至预设数据库中。
则此时,该写入单元303,具体可以用于通过查找该数据库中的映射关系,获取与选择的辅助线程对应的共享内存队列。
(4)调用单元304;
调用单元304,用于调用与该共享内存队列一一对应的业务逻辑线程。
例如,调用单元304,具体可以用于根据预设的共享内存队列与业务逻辑线程的对应关系,来调用与该共享内存队列对应的业务逻辑线程。
其中,该共享内存队列与业务逻辑线程的一一对应关系可以由维护人员根据实际应用的需求预先进行设置,也可以由系统自行进行建立,即:
建立单元306,还可以用于建立共享内存队列与业务逻辑线程的一一对应关系,保存该对应关系。
则此时,调用单元304,具体可以用于根据建立单元306保存的对应关系,调用与该共享内存队列一一对应的业务逻辑线程。
(5)处理单元305;
处理单元305,用于通过该业务逻辑线程对该共享内存队列中的数据处理请求进行处理。
例如,处理单元305,具体可以用于通过该业务逻辑线程对该共享内存队列中的数据处理请求进行读取,由该业务逻辑线程根据读取到的数据处理请求确定操作对象和操作内容,由该业务逻辑线程对该操作对象执行该操作内容。
比如,若操作对象为数据M,操作内容为“删除”,则此时,处理单元305可以通过业务逻辑线程对数据M执行删除操作。
又比如,若操作对象为数据M,操作内容为“更新”,则此时,处理单元305可以通过业务逻辑线程对数据M执行更新操作,以此类推,等等。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
该服务器的数据处理装置具体可以集成在服务器,比如网络服务器等设备中。
由上可知,本实施例的数据处理装置的接收单元301可以通过接受线程接收数据处理请求,并分配给辅助线程,然后由写入单元303通过辅助线程将该数据处理请求写入与之一一对应的共享内存队列中,并由调用单元304调用对应的业务逻辑线程,以及由处理单元304通过该业务逻辑线程对该共享内存队列中的数据处理请求进行处理。其中,由于辅助线程具有多个,且与共享内存队列、以及业务逻辑线程三者一一对应,因此,可以大大提升网络收发层的处理能力,且无需进行锁竞争,即每个业务逻辑线程只需处理与自身对应的共享内存队列中的数据处理请求即可,无需与其他业务逻辑线程争抢锁,所以,从整体上看,该方案相对于现有方案而言,不仅实现简单,而且,可以大大提高处理效率,有利于改善网络服务器的性能。
实施例四、
本发明实施例还提供一种服务器,可以作为本发明实施例的网络服务器,如图4所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
服务器还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,服务器中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
通过接受线程接收数据处理请求,为该数据处理请求选择辅助线程,并通过选择的辅助线程将该数据处理请求写入对应的共享内存队列中,调用与该共享内存队列一一对应的业务逻辑线程,通过该业务逻辑线程对该共享内存队列中的数据处理请求进行处理。
例如,具体可以通过该业务逻辑线程对该共享内存队列中的数据处理请求进行读取,由该业务逻辑线程根据读取到的数据处理请求确定操作对象和操作内容,并由该业务逻辑线程对该操作对象执行该操作内容,等等。
其中,一个接受线程对应多个辅助线程,每个辅助线程对应一个共享内存队列,而共享内存也与业务逻辑线程的一一对应,即辅助线程、共享内存队列、以及业务逻辑线程三者一一对应。其中,辅助线程与共享内存队列的映射关系,以及共享内存队列与业务逻辑线程的一一对应关系均可以由维护人员根据实际应用的需求预先进行设置,或者,也可以由系统自行进行建立,具体可参见前面的实施例,在此不再赘述。
可选的,选择辅助线程的方式可以有多种,比如,可以根据负载均衡策略来为该数据处理请求选择辅助线程,即存储在存储器402中的应用程序,也可以实现如下功能:
获取该接受线程对应的多个辅助线程的负载信息,根据该负载信息从该多个辅助线程中选择负载最轻的辅助线程,将该数据处理请求分配给选择的辅助线程。
其中,该负载信息可以包括辅助线程当前处理的请求的数量(即连接数)等信息。
由上可知,本实施例所提供的服务器的网络收发层可以包括接受线程和多个辅助线程,接受线程用于接收数据处理请求,并分配给辅助线程,而辅助线程可以通过共享内存队列与业务逻辑线程进行通信,以对数据处理请求进行处理,其中,由于辅助线程具有多个,且与共享内存队列、以及业务逻辑线程三者一一对应,因此,可以大大提升网络收发层的处理能力,且无需进行锁竞争,即每个业务逻辑线程只需处理与自身对应的共享内存队列中的数据处理请求即可,无需与其他业务逻辑线程争抢锁,所以,从整体上看,该方案相对于现有方案而言,不仅实现简单,而且,可以大大提高处理效率,有利于改善网络服务器的性能。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种服务器的数据处理方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种服务器的数据处理方法,其特征在于,包括:
通过接受线程接收数据处理请求,所述接受线程对应多个辅助线程,每个辅助线程对应一个共享内存队列,所述辅助线程、所述共享内存队列以及业务逻辑线程三者之间一一对应;
根据负载均衡策略为所述数据处理请求选择辅助线程,所述根据负载均衡策略为所述数据处理请求选择辅助线程,包括:获取所述接受线程对应的多个辅助线程的负载信息;根据所述负载信息从所述多个辅助线程中选择负载最轻的辅助线程;通过所述接受线程,将所述数据处理请求分配给选择的辅助线程;
通过选择的辅助线程将所述数据处理请求写入选择的辅助线程所对应的共享内存队列中;
调用与所述共享内存队列一一对应的业务逻辑线程;
通过所述业务逻辑线程对所述共享内存队列中的数据处理请求进行处理。
2.根据权利要求1所述的方法,其特征在于,所述通过选择的辅助线程将所述数据处理请求写入对应的共享内存队列中,包括:
根据预设映射关系获取与选择的辅助线程对应的共享内存队列;
由选择的辅助线程将所述数据处理请求写入所述对应的共享内存队列中。
3.根据权利要求2所述的方法,其特征在于,所述通过选择的辅助线程将所述数据处理请求写入对应的共享内存队列中之前,还包括:
建立辅助线程与共享内存队列一一对应的映射关系;
将所述映射关系保存至预设数据库中;
所述根据预设映射关系获取与选择的辅助线程对应的共享内存队列,包括:通过查找所述数据库中的映射关系,获取与选择的辅助线程对应的共享内存队列。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述通过所述业务逻辑线程对所述共享内存队列中的数据处理请求进行处理,包括:
通过所述业务逻辑线程对所述共享内存队列中的数据处理请求进行读取;
由所述业务逻辑线程根据读取到的数据处理请求确定操作对象和操作内容;
由所述业务逻辑线程对所述操作对象执行所述操作内容。
5.一种服务器的数据处理装置,其特征在于,包括:
接收单元,用于通过接受线程接收数据处理请求,所述接受线程对应多个辅助线程,每个辅助线程对应一个共享内存队列,所述辅助线程、所述共享内存队列以及业务逻辑线程三者之间一一对应;
选择单元,用于根据负载均衡策略为所述数据处理请求选择辅助线程,所述根据负载均衡策略为所述数据处理请求选择辅助线程,包括:获取所述接受线程对应的多个辅助线程的负载信息;根据所述负载信息从所述多个辅助线程中选择负载最轻的辅助线程;通过所述接受线程,将所述数据处理请求分配给选择的辅助线程;
写入单元,用于通过选择的辅助线程将所述数据处理请求写入选择的辅助线程所对应的共享内存队列中;
调用单元,用于调用与所述共享内存队列一一对应的业务逻辑线程;
处理单元,用于通过所述业务逻辑线程对所述共享内存队列中的数据处理请求进行处理。
6.根据权利要求5所述的装置,其特征在于,
所述写入单元,具体用于根据预设映射关系获取与选择的辅助线程对应的共享内存队列,由选择的辅助线程将所述数据处理请求写入所述对应的共享内存队列中。
7.根据权利要求6所述的装置,其特征在于,还包括建立单元;
所述建立单元,用于建立辅助线程与共享内存队列一一对应的映射关系,将所述映射关系保存至预设数据库中;
所述写入单元,具体用于通过查找所述数据库中的映射关系,获取与选择的辅助线程对应的共享内存队列。
8.根据权利要求5至7任一项所述的装置,其特征在于,
所述处理单元,具体用于通过所述业务逻辑线程对所述共享内存队列中的数据处理请求进行读取,由所述业务逻辑线程根据读取到的数据处理请求确定操作对象和操作内容,由所述业务逻辑线程对所述操作对象执行所述操作内容。
9.一种存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至4任一项所述的服务器的数据处理方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710225059.4A CN108694083B (zh) | 2017-04-07 | 2017-04-07 | 一种服务器的数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710225059.4A CN108694083B (zh) | 2017-04-07 | 2017-04-07 | 一种服务器的数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108694083A CN108694083A (zh) | 2018-10-23 |
CN108694083B true CN108694083B (zh) | 2022-07-29 |
Family
ID=63842191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710225059.4A Active CN108694083B (zh) | 2017-04-07 | 2017-04-07 | 一种服务器的数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108694083B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352743B (zh) * | 2018-12-24 | 2023-12-01 | 北京新媒传信科技有限公司 | 一种进程通讯方法和装置 |
CN110472516B (zh) * | 2019-07-23 | 2024-10-18 | 腾讯科技(深圳)有限公司 | 一种人物图像识别系统的构建方法、装置、设备及系统 |
CN113052564A (zh) * | 2020-10-17 | 2021-06-29 | 严怀华 | 应用于云服务的智慧社区信息处理方法及云服务设备 |
CN113312184A (zh) * | 2021-06-07 | 2021-08-27 | 平安证券股份有限公司 | 一种业务数据的处理方法及相关设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101753439A (zh) * | 2009-12-18 | 2010-06-23 | 深圳市融创天下科技发展有限公司 | 一种流媒体分发传输方法 |
KR20130118593A (ko) * | 2012-04-20 | 2013-10-30 | 한국전자통신연구원 | 데이터 분산 서비스를 위한 미들웨어에서 데이터를 처리하기 위한 장치 및 방법 |
WO2014063067A1 (en) * | 2012-10-19 | 2014-04-24 | uCIRRUS | Multi-threaded, lockless data parallelization |
KR20140137573A (ko) * | 2013-05-23 | 2014-12-03 | 한국전자통신연구원 | 데이터 분산 서비스 미들웨어의 쓰레드를 위한 메모리 관리 장치 및 방법 |
CN103412786B (zh) * | 2013-08-29 | 2017-04-12 | 苏州科达科技股份有限公司 | 一种高性能服务器架构系统及数据处理方法 |
US9378168B2 (en) * | 2013-09-18 | 2016-06-28 | International Business Machines Corporation | Shared receive queue allocation for network on a chip communication |
CN104735077B (zh) * | 2015-04-01 | 2017-11-24 | 积成电子股份有限公司 | 一种使用环形缓存和环形队列实现udp高效并发的方法 |
US9953006B2 (en) * | 2015-06-23 | 2018-04-24 | International Business Machines Corporation | Lock-free processing of stateless protocols over RDMA |
CN105827604A (zh) * | 2016-03-15 | 2016-08-03 | 深圳市游科互动科技有限公司 | 服务器业务处理方法及服务器 |
-
2017
- 2017-04-07 CN CN201710225059.4A patent/CN108694083B/zh active Active
Non-Patent Citations (2)
Title |
---|
Effective Data Exchange in Parallel Computing;Hui Ma et.al;《2013 International Conference on Information Science and Cloud Computing》;20131231;全文 * |
基于共享存储和Gzip的并行压缩算法研究;宋刚 等;《计算机工程与设计》;20091231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108694083A (zh) | 2018-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113110938B (zh) | 一种资源分配方法、装置、计算机设备及存储介质 | |
CN112269641B (zh) | 一种调度方法、装置、电子设备及存储介质 | |
CN102835068B (zh) | 用于管理系统资源的重新分配的方法和装置 | |
CN104461744B (zh) | 一种资源分配方法及装置 | |
CN114356543B (zh) | 一种基于Kubernetes的多租户机器学习任务资源调度方法 | |
CN108694083B (zh) | 一种服务器的数据处理方法和装置 | |
CN111464659A (zh) | 节点的调度、节点的预选处理方法、装置、设备及介质 | |
CN114416352B (zh) | 算力资源分配方法、装置、电子设备及储存介质 | |
CN104679594B (zh) | 一种中间件分布式计算方法 | |
CN108334396A (zh) | 一种数据处理方法和装置、资源组的创建方法和装置 | |
CN110706148B (zh) | 人脸图像处理方法、装置、设备和存储介质 | |
US10761869B2 (en) | Cloud platform construction method and cloud platform storing image files in storage backend cluster according to image file type | |
CN106598737A (zh) | 一种实现硬件资源分配的方法及装置 | |
CN110321215A (zh) | 队列控制方法及装置 | |
CN115174406A (zh) | 容器应用的扩缩容方法、装置、计算机设备及存储介质 | |
US12028269B2 (en) | Method for optimal resource selection based on available GPU resource analysis in large-scale container platform | |
CN117707763A (zh) | 分层算力调度方法、系统、设备及存储介质 | |
CN115658311A (zh) | 一种资源的调度方法、装置、设备和介质 | |
CN111352735A (zh) | 数据加速方法、装置、存储介质及设备 | |
CN111290858A (zh) | 输入输出资源管理方法、装置、计算机设备和存储介质 | |
CN110347502A (zh) | 云主机服务器的负载均衡调度方法、装置及电子设备 | |
CN115629854A (zh) | 分布式任务调度方法、系统、电子设备和存储介质 | |
CN111459651B (zh) | 一种负载均衡方法、装置、存储介质及调度系统 | |
CN116743755A (zh) | 客服服务场景的资源调度方法、计算机设备及存储介质 | |
CN113867887A (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 |