CN110046003B - 数据处理方法、装置,存储介质和处理器 - Google Patents
数据处理方法、装置,存储介质和处理器 Download PDFInfo
- Publication number
- CN110046003B CN110046003B CN201910244453.1A CN201910244453A CN110046003B CN 110046003 B CN110046003 B CN 110046003B CN 201910244453 A CN201910244453 A CN 201910244453A CN 110046003 B CN110046003 B CN 110046003B
- Authority
- CN
- China
- Prior art keywords
- data service
- service request
- application
- parent
- child
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- 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
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)
Abstract
本发明公开了一种数据处理方法、装置,存储介质和处理器。其中,该方法包括:接收数据服务请求,其中,数据服务请求用于请求对客户机进行数据服务,数据服务请求由客户机发送;对当前的应用进程进行计数,其中,应用进程为响应数据服务请求所建立,用于进行数据服务操作;确定应用进程的数量大于等于预定数量的情况下,暂停处理数据服务请求,***进程暂停运行进行等待,其中,被暂停处理的数据服务请求按顺序暂存在存储设备中。本发明解决了相关技术中的数据处理方法,***资源有限,服务需求不断增加的情况下,影响数据服务的质量,导致服务器的负荷过高,反应缓慢的技术问题。
Description
技术领域
本发明涉及数据处理领域,具体而言,涉及一种数据处理方法、装置,存储介质和处理器。
背景技术
在一些服务器应用中,通过后台服务器的应用启用服务,监听客户机的数据服务需求,在客户机发送数据服务需求的情况下,通过服务器创建服务进程,处理服务需求。随着业务的法阵,客户机的数据服务需求持续增加的情况下,由于服务器的运算资源有限,例如,受到中央处理器CPU、内存、网络、操作***、数据库的限制,不能够无限制的创建服务进程,在服务进程数量过多的情况下,造成服务器负载较大,有可能导致服务器反应缓慢,终止服务。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据处理方法、装置,存储介质和处理器,以至少解决相关技术中的数据处理方法,***资源有限,服务需求不断增加的情况下,影响数据服务的质量,导致服务器的负荷过高,反应缓慢的技术问题。
根据本发明实施例的一个方面,提供了一种数据处理方法,包括:接收数据服务请求,其中,所述数据服务请求用于请求对客户机进行数据服务,所述数据服务请求由所述客户机发送;对当前的应用进程进行计数,其中,所述应用进程为响应所述数据服务请求所建立,用于进行数据服务操作;确定所述应用进程的数量大于等于预定数量的情况下,暂停处理数据服务请求,***进程暂停运行进行等待,其中,被暂停处理的所述数据服务请求按顺序暂存在存储设备中。
可选的,所述方法还包括:确定所述应用进程的数量没有超过预定数量的情况下,继续运行所述***进程,处理所述数据服务请求;其中,继续运行所述***进程,处理所述数据服务请求包括:通过分叉fork函数调用所述***进程的子进程,所述***进程为父进程;控制所述父进程与所述子进程同时进行处理,运行***进程,处理所述数据服务请求。
可选的,所述父进程与所述子进程同时进行处理,运行***进程,处理所述数据服务请求包括:控制所述父进程添加进程控制信息,控制所述子进程阻塞信号,等待所述父进程的通知,其中,所述进程控制信息用于控制***中的应用进程的启用和删除;通过所述父进程启动子进程,并通知所述子进程处理,其中,所述子进程接收父进程的处理信号后,进行业务处理;确定所述父进程或子进程业务处理完毕的情况下,退出并删除所述父进程或子进程。
可选的,确定所述父进程或子进程业务处理完毕的情况下,退出并删除所述父进程或子进程包括:控制所述子进程向所述父进程发送退出信号;确定所述父进程接收到所述退出信号的情况下,控制所述父进程通过所述进程控制信息,将发送所述退出信号的子进程从进程控制表中移除,删除所述子进程,其中,所述父进程通过进程控制表控制***的应用进程的启动和删除;确定***的主控进程终止的情况下,退出并删除所述父进程。
可选的,所述退出信号包括用于区分不同的业务类型的应用KEY值,应用当前进程数,以及用于记录所有所述应用进程的子进程的端口地址PID数据。
可选的,确定所述***的主控进程没有终止的情况下,继续接收数据服务请求。
可选的,该方法还包括:检测所述当前应用进程的数量;确定所述应用进程的数量减少至所述预定数量之下的情况下,读取缓存的所述数据服务请求;响应所述数据服务请求建立对应的应用进程,其中,所述应用进程操作完毕后进行退出,减少所述当前应用程序的数量。
可选的,接收数据服务请求之前还包括:确定***的主控进程没有终止的情况下,接收数据服务请求;确定所述***的主控进程终止的情况下,退出所述***的主控进程。
可选的,接收数据服务请求之前还包括:根据参数建立进程控制表,其中,所述参数包括每个应用进程的,用于区分不同的业务类型的应用KEY值,以及所述应用进程的所有的端口地址PID数据;根据初始化指令初始化所述进程控制表。
根据本发明实施例的另一方面,还提供了一种数据处理装置,包括:接收模块,用于接收数据服务请求,其中,所述数据服务请求用于请求对客户机进行数据服务,所述数据服务请求由所述客户机发送;计数模块,用于对当前的应用进程进行计数,其中,所述应用进程为响应所述数据服务请求所建立,用于进行数据服务操作;确定模块,用于确定所述应用进程的数量大于等于预定数量的情况下,暂停接收数据服务请求,***进程暂停运行进行等待,其中,被拒绝接收的所述数据服务请求按顺序暂存在存储设备中。
根据本发明实施例的另一方面,还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述中任意一项所述的方法。
根据本发明实施例的另一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述中任意一项所述的方法。
在本发明实施例中,采用对响应数据服务请求的应用进程进行计数的方式,在上述应用进程达到服务器的预定数量的情况下,对接收的数据服务请求,暂停响应,并将数据服务请求进行存储,待应用进程服务器的数量低于所述预定数量的情况下,对数据服务请求进行处理,达到了保持高效和迅速的运行应用进程的目的,从而实现了提高服务质量,保证服务器的负荷在一定范围内,提高服务器运行和处理的速度的技术效果,进而解决了相关技术中的数据处理方法,***资源有限,服务需求不断增加的情况下,影响数据服务的质量,导致服务器的负荷过高,反应缓慢的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种数据处理方法的流程图;
图2是根据本发明实施例的实施方式的数据处理方法的流程图;
图3是根据本发明实施例的一种数据处理装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种数据处理方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种数据处理方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,接收数据服务请求,其中,数据服务请求用于请求对客户机进行数据服务,数据服务请求由客户机发送;
步骤S104,对当前的应用进程进行计数,其中,应用进程为响应数据服务请求所建立,用于进行数据服务操作;
步骤S106,确定应用进程的数量大于等于预定数量的情况下,暂停处理数据服务请求,***进程暂停运行进行等待,其中,被暂停处理的数据服务请求按顺序暂存在存储设备中。
根据上述步骤,采用对响应数据服务请求的应用进程进行计数的方式,在上述应用进程达到服务器的预定数量的情况下,对接收的数据服务请求,暂停响应,并将数据服务请求进行存储,待应用进程服务器的数量低于预定数量的情况下,对数据服务请求进行处理,达到了保持高效和迅速的运行应用进程的目的,从而实现了提高服务质量,保证服务器的负荷在一定范围内,提高服务器运行和处理的速度的技术效果,进而解决了相关技术中的数据处理方法,***资源有限,服务需求不断增加的情况下,影响数据服务的质量,导致服务器的负荷过高,反应缓慢的技术问题。
上述步骤的执行主体可以为用于响应上述数据服务请求进行服务的服务器,上述接收数据服务请求,可以是接收上述客户机发送的数据服务请求,还可以是其他服务器发送的数据服务请求,还可以是上述客户机或者服务器通过转发装置发送的数据服务请求,其中,上述转发装置可以对上述数据服务请求进行处理,例如,转发装置可以对数据服务请求的数据格式进行转换,以适应接收上述数据服务请求的服务器的接收数据的格式。上述转发装置还可以对上述数据服务请求进行加解密处理,以提高数据交互的安全性和保密性。
上述服务器在接受到上述数据服务请求之后,响应该数据服务请求,建立与该数据服务请求对应的应用进程,运行该应用进程对发送上述数据服务请求的设备或应用进行服务。由于服务器的使用时间越长,其服务的范围变广,该服务器接收的数据服务请求的数量也会增加,服务器响应接收的数据服务请求,在数据服务请求的数量无限增加的情况下,服务器所建立的应用进程也会无限增加,由于服务器的运算资源受硬件限制,服务器硬件不变的情况下,就会影响到当前所有的进程,导致应用进程反应变慢,甚至停止工作。
在本实施例中,采用对服务器的当前应用进程进行计数,可以通过对服务器同时运行的应用进程的数量进行控制或者限制,保证应用进程的高效快速运行。可以通过在服务器同时进行的应用进程的数量达到一定数量的情况下,不再响应该数据服务请求,建立应用进程,在应用进程进行完毕后,退出该应用进程,从而可以使服务器同时进行的应用进程的数量减少,从而可以响应新的数据服务请求。还可以通过控制器对正在进行应用进程进行控制,控制权重较大的应用进程先运行,控制运行完成度较高的应用程序先运行,控制延误时间长的应用进程先运行等,可以保证在一定的运行效率和速度下,保证相对重要的部分应用进程进行运行,在该相对重要的部分应用进程运行完毕后,在运行相对不重要的应用进程运行。保证不同的轻重缓急的数据服务需求可以被区别处理,以保证服务器的高效运行和高速反应。
由于数据服务请求的数据量十分巨大,种类也十分多样,对不同的数据服务请求进行权重确定的过程,不仅数据量大,而且难度较高,因此,本实施例中,在确定应用进程的数量大于等于预定数量的情况下,暂停处理数据服务请求,***进程暂停运行进行等待,其中,被暂停处理的数据服务请求按顺序暂存在存储设备中。在服务器的当前同时运行的应用进程数量达到预定数量的情况下,暂停处理数据服务请求,也即是暂停响应数据服务请求,但是继续接收数据服务请求,并将接收并未处理的数据服务请求缓存在存储设备中,一方面可以对未处理的数据服务请求进行排序,一方面可以在服务器当前同时进行的应用进程的数量减小至上述预定数量之下的情况下,直接从缓存中调取数据服务请求进行响应,提高数据服务请求的处理效率。
可选的,该方法还包括:确定应用进程的数量没有超过预定数量的情况下,继续运行***进程,处理数据服务请求;其中,继续运行***进程,处理数据服务请求包括:通过分叉fork函数调用***进程的子进程,***进程为父进程;控制父进程与子进程同时进行处理,运行***进程,处理数据服务请求。
上述对服务器当前同时运行的应用进程的数量进行计数之后,采用对服务器的应用进程的数量进行限制的方式,保证服务器运行应用程序的效率和质量。例如,可以是在应用进程的数量没有超过预定数量的情况下,继续运行***进程,处理数据服务请求,也即是响应上述数据服务请求,建立相应的应用进程进行服务。上述继续运行***进程包括通过分叉fork函数调用***进程的子进程,***进程为父进程,可以采用子进程对发送上述数据服务请求的设备或软件进行服务,还可以采用父进程对盖子进程进行控制,在子进程完成服务之后,将子进程移除,以实现对当前的应用进程数量进行减少,从而实现在当前应用进程数量低于上述预定数量的情况下,调取缓存的数据服务请求。
上述控制父进程与子进程同时进行处理,运行***进程,处理数据服务请求。上述父进程与子进程可以是互相独立,互不干涉,在处理的过程中可以互相独立处理,可以同时处理,也可以不同时处理,由于该父进程与子进程服务于同一数据服务请求,因此,本实施例中,采用同时运行上述父进程和子进程,以提高响应数据服务请求的效率。
可选的,父进程与子进程同时进行处理,运行***进程,处理数据服务请求包括:控制父进程添加进程控制信息,控制子进程阻塞信号,等待父进程的通知,其中,进程控制信息用于控制***中的应用进程的启用和删除;通过父进程启动子进程,并通知子进程处理,其中,子进程接收父进程的处理信号后,进行业务处理;确定父进程或子进程业务处理完毕的情况下,退出并删除父进程或子进程。
上述父进程与上述子进程同时运行时,先由父进程添加进程控制信息,上述进程控制信息可以用于父进程控制子进程移入或移出进程控制表。上述父进程添加进程控制信息,可以是父进程控制子进程添加到***进程的进程控制表中,通过进程控制表运行上述子进程。父进程添加进程控制,可以是于此同时,子进程阻塞信号,停止工作,不发送信号,等待父进程的通知,父进程成功添加进程信息,可以是父进程成功将子进程移入进程控制表后,有父进程箱子进程发送业务处理通知,子进程在接收到该业务处理通知之后,进行相应的业务处理。在上述子进程业务处理完毕之后,退出上述子进程,并通过父进程从上述进程控制表中移除上述子进程,删除上述子进程。
可选的,确定父进程或子进程业务处理完毕的情况下,退出并删除父进程或子进程包括:控制子进程向父进程发送退出信号;确定父进程接收到退出信号的情况下,控制父进程通过进程控制信息,将发送退出信号的子进程从进程控制表中移除,删除子进程,其中,父进程通过进程控制表控制***的应用进程的启动和删除;确定***的主控进程终止的情况下,退出并删除父进程。
在上述子进程业务处理完毕之后,退出并删除上述子进程。可以是在上述子进程业务处理完毕后,向上述父进程发送退出信号,父进程接收该退出信号后,将上述子进程从进程控制表中移除,从而删除上述子进程。可以是控制父进程通过进程控制信息,将发送退出信号的子进程从进程控制表中移除,删除子进程。上述父进程在确定***的主控进程终止的情况下,退出并删除父进程。可以是由***其它应用进程控制删除父进程。上述父进程服务于***的主控进程,可以是***的主控进程通过父进程移入和移除上述子进程,在***的主控进程没有终止的情况下,上述父进程持续对主控进程进行服务。
可选的,退出信号包括用于区分不同的业务类型的应用KEY值,应用当前进程数,以及用于记录所有应用进程的子进程的端口地址PID数据。
例如,进程并发控制主控进程中需要控制进程并发数,通过扩展信号量的使用,以解决单纯信号量无法根据PID来区分是哪种业务处理子进程退出的问题,因此,我们定义如下结构来代替信号量:
其中,sAppKey:应用KEY值,用来区分不同的业务类型;iCurrProcNum:应用当前进程数,保存指定应用当前正在运行的进程数;pids:应用当前进程PID数据,记录所有该应用的子进程PID。
可选的,确定***的主控进程没有终止的情况下,继续接收数据服务请求。
在该***的主控进程没有终止的情况下,继续接受数据服务请求,并重新计算当前应用进程的数量,执行上述步骤。该父进程可以对上述主控进程继续服务,直至主控进程终止。也可以接受指令,退出并删除该父进程。上述指令可以是上述***的主控进程发送的。
可选的,该方法还包括:检测当前应用进程的数量;确定应用进程的数量减少至预定数量之下的情况下,读取缓存的数据服务请求;响应数据服务请求建立对应的应用进程,其中,应用进程操作完毕后进行退出,减少当前应用程序的数量。
上述在方法还可以在确定应用进程的数量大于等于预定数量的情况下,暂停处理数据服务请求,***进程暂停运行进行等待之后,对当前应用进程的数量进行检测,在应用进程的数量减少至预定数量之下的情况下,读取缓存的数据服务请求;响应数据服务请求建立对应的应用进程,其中,应用进程操作完毕后进行退出,减少当前应用程序的数量。上述应用进程瑞出后,可以进行删除,以节省存储资源。
可选的,接收数据服务请求之前还包括:确定***的主控进程没有终止的情况下,接收数据服务请求;确定***的主控进程终止的情况下,退出***的主控进程。
上述接收服务数据服务请求,以及响应该数据服务请求均是为***的主控进程服务。接收数据服务请求之前,对***的主控进程进行监测,确定***的主控进程没有终止的情况下,接收数据服务请求;确定***的主控进程终止的情况下,退出***的主控进程。
可选的,接收数据服务请求之前还包括:根据参数建立进程控制表,其中,参数包括每个应用进程的,用于区分不同的业务类型的应用KEY值,以及应用进程的所有的端口地址PID数据;根据初始化指令初始化进程控制表。
上述进程控制表初始化后,方便使用,有助于提高应用进程的处理效率和速度。
需要说明的是,本实施例还提供了一种数据处理方法作为本实施例的优选实施方式,下面对该实施方式进行详细说明。
客户机/服务器结构是目前广泛应用的一种分布式计算模式,其部署在局域网内部或广域网上,它的优势在于广泛地采用了网络技术,将***中的各部分任务分配给分布在网络上的担任不同角色的计算机,它把较复杂的计算和管理任务交给网络上的高档机器-服务器(Server),而把一些频繁与用户打交道的任务交给前端较简单的计算机-客户机(Client)。通过这种结构完全实现了网络上信息资源的共享。
在目前的客户机/服务器应用中,后台服务器应用(Server)通过启用服务,监听客户机(Client)请求,在接收到客户机的请求后,创建子进程处理业务逻辑,父进程则继续监听客户机请求,以保证对客户机(Client)的持续服务。随着业务的发展,客户机请求持续增多,在这种模式下,由于受到各种资源(CPU、内存、网络、操作***、数据库等)的限制,服务器(Server)不能无限制的创建子业务进程来响应客户机(Client)的请求,否则可能会引起服务器宕机或响应缓慢,终止服务,因此,服务器(Server)必须提供一种方案,能够对业务逻辑处理进程数进行控制,保证服务器正常运行。
为实现服务器应用进程的并发控制,常用的手段是使用各种进程间通讯技术,通过设置信号量或计数器来控制,比如使用信号量、消息队列、或者是共享内存等。
相关技术中,有的采用管道应用在进程并发控制的方法,在同一祖先的进程中,可以使用管道进行通讯。实际运用中,主控进程可以打开一个管道,然后fork进程进行业务逻辑处理,子进程在结束前,向管道写端写入数据,父进程即主控进程读管道读端,如果读到有子进程即将消亡的消息,则可将进程并发控制计数器减一,即可实现进程并发控制。但该方案有如下弊端:子进程即业务逻辑进程中需要增加相关进程并发控制的代码,使用管道通知父进程自己即将消亡;父进程即主控进程需要增加读管道中数据的代码,该操作可能会引起主进程阻塞,影响服务;当子进程有异常(比如coredump异常)时,此时子进程将不会通过管道向父进程发送自身退出的消息,父进程无法获取子进程的相关数据和状态,直接影响到计数器的控制。
还有的采用消息队列、共享内存应用在进程并发控制的方法,消息队列、共享内存在进程并发控制中的应用与管道类似,也有着同样的弊端,同时,多个父子进程对消息队列和共享内存同时处理时,还需要考虑这部分数据的同步问题,更增加了实现的难度,同时也降低了***效率。还有的采用信号量应用在进程并发控制的方法,在UNIX操作***中,经常使用到信号量,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况。信号量,分为互斥信号量,和条件信号量。但是,使用信号量有一个不足,因信号量仅仅只是一个计数器,它无法保存进程相关信息,当主控进程需要监听多种业务,对每类业务调用不同的业务子进程处理,在使用SIGCHLD信号时,获取到的是终止子进程的PID,此时,无法根据PID来区分是哪种业务处理子进程退出。
本实施方式通过信号来实现客户机/服务器应用中的业务进程并发控,在一个子进程及业务进程终止(coredump等)或停止时,SIGCHLD信号被送给其父进程,父进程获取相关子进程的PID,将该进程信息从主控进程保存的子进程信息列表中移除,使用信号来实现并发控制可以避免使用其它方式的弊端,首先,信号机制由操作***内核实现,它是可靠的,保证的子进程退出时父进程能够及时获取;其次,子进程即业务处理进程无需进行额外的进程控制相关编码,使其只关心业务逻辑,所有的进程并发控制全部在主控进程中完成;再次,操作***对信号的处理是“实时”发送和接收的,避免了主控进程等待。
图2是根据本发明实施例的实施方式的数据处理方法的流程图,如图2所示,在本技术方案中,进程并发控制主控进程中需要控制进程并发数,扩展信号量的使用,以解决单纯信号量无法根据PID来区分是哪种业务处理子进程退出的问题,因此,定义如下结构来代替信号量:
sAppKey:应用KEY值,用来区分不同的业务类型;
iCurrProcNum:应用当前进程数,保存指定应用当前正在运行的进程数;
pids:应用当前进程PID数据,记录所有该应用的子进程PID;
定义如下结构:
/*进程控制表接口*/
typedef struct{
APP_PROC_CTRL procArr[MAX_APPKEY];/*每应用进程数据*/
}APP_PROC_CTRL_ARR;
该结构使用一个二维数组保存相关已启动的进程号,该进程号二维数据称之为进程控制表,一个进程控制表类似如下结构:
{
{"APPKEY1",2{pid11,pid12}},--每应用进程数据
{"APPKEY2",1{pid21}},
...
{"APPKEYn",3{pidn1,pidn2,pidn3}}
}
定义如下接口,利用进程控制表进行进程并发控制,其中,为对进程控制表进行操作,定义有如下几个接口:
addProcByKey()
描述:根据应用KEY值将指定进程的进程号添加到进程控制表中,采用遍历进程控制表方法,首先根据应用KEY值查找到应用在进程控制表中的位置,在查找应用进程数组,当有空余未使用的进程,则设置进程号,同时应用处理进程数加一
参数:APP_PROC_CTRL_ARR*pProcArr --进程控制表
int index --应用序号
pid_t pPid --添加进程号(子进程号)
返回值:int>0:成功;-1:未找到数据;-2:参数错误;-4:进程已超限
getCurrProcByKey()
描述:根据应用KEY获取当前应用进程数,遍历进程控制表,根据应用KEY查找应用进程数组,获取当前应用进程数;
参数:APP_PROC_CTRL_ARR*pProcArr --进程控制表
char*pKey --应用KEY值
返回值:int>0:当前进程数;-1:未找到数据;-2:参数错误
initProcArr()
描述:初始化进程控制表,将进程控制表相关数据置空或置零;
参数:APP_PROC_CTRL_ARR*pProcArr 进程控制表
返回值:int>0:成功,-2:参数错误
setProcArrKey()
描述:在进程控制表指定序号设置应用KEY值;
参数:APP_PROC_CTRL_ARR*pProcArr 进程控制表
char*pKey 应用KEY值
int index 应用序号
返回值:int>0:当前进程数,-2:参数错误,-3:指定位置数据已存在
removeProc()
描述:将指定进程从进程控制表中删除,遍历整个进程控制表,查询进程控制表中是否存在指定的进程号,查找到该进程号后,将该位置的进程号置零,并将对应应用的处理进程数减一;
参数:APP_PROC_CTRL_ARR*pProcArr 进程控制表
pid_t pPid 删除进程号
返回值:int>0:当前进程数,-1:指定进程不存在,-2:参数错误
sig_chld()
描述:子进程退出信号处理函数,在收到SIG_CLD/SIGCHLD之后,父进程wait子进程,获取进程号后从调用removeProc()函数将指定的子进程从进程控制表中移除;
参数:int signum信号
返回值:int>0:当前进程数,其它:错误
另外,为保证进程控制表数据同步,定义如下几个接口:
tellWait()
描述:注册用户信号(SIGUSER1、SIGUSER2)处理函数,同时阻塞信号,用来做父子进程间的同步处理;
tellChild()
描述:父进程通知子进程,向子进程发送信号SIGUSR1;
参数:pid_t pPid 子进程PID
tellParent()
描述:子进程通知父进程,向父进程发送信号SIGUSR2;
参数:pid_t pPid 父进程PID
waitChild()
描述:父进程等待子进程通知(阻塞等待信号SIGUSER2),如收到子进程发送的SIGUSER2信号,则恢复信号阻塞;
参数:pid_t pPid 子进程PID
waitParent()
描述:子进程等待父进程通知(阻塞等待信号SIGUSER1),如收到父进程发送的SIGUSER1信号,则恢复信号阻塞;
参数:pid_t pPid 父进程PID
本实施方式设计了一套进程控制表代替一般信号量;利用进程控制表控制进程并发。采用C语言实现该技术方案,并在实际生产业务***中运行,***运行稳定。
图3是根据本发明实施例的一种数据处理装置的示意图,如图3所示,数据处理装置,包括:接收模块32,计数模块34和确定模块36,下面对该装置进行详细说明。
接收模块32,用于接收数据服务请求,其中,数据服务请求用于请求对客户机进行数据服务,数据服务请求由客户机发送;计数模块34,与上述接收模块32相连,用于对当前的应用进程进行计数,其中,应用进程为响应数据服务请求所建立,用于进行数据服务操作;确定模块36,与上述计数模块34相连,用于确定应用进程的数量大于等于预定数量的情况下,暂停接收数据服务请求,***进程暂停运行进行等待,其中,被拒绝接收的数据服务请求按顺序暂存在存储设备中。
通过上述装置,采用对响应数据服务请求的应用进程进行计数的方式,在上述应用进程达到服务器的预定数量的情况下,对接收的数据服务请求,暂停响应,并将数据服务请求进行存储,待应用进程服务器的数量低于预定数量的情况下,对数据服务请求进行处理,达到了保持高效和迅速的运行应用进程的目的,从而实现了提高服务质量,保证服务器的负荷在一定范围内,提高服务器运行和处理的速度的技术效果,进而解决了相关技术中的数据处理方法,***资源有限,服务需求不断增加的情况下,影响数据服务的质量,导致服务器的负荷过高,反应缓慢的技术问题。
根据本发明实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述中任意一项的方法。
根据本发明实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述中任意一项的方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种数据处理方法,其特征在于,包括:
接收数据服务请求,其中,所述数据服务请求用于请求对客户机进行数据服务,所述数据服务请求由所述客户机发送;
对当前的应用进程进行计数,其中,所述应用进程为响应所述数据服务请求所建立,用于进行数据服务操作;
确定所述应用进程的数量大于等于预定数量的情况下,暂停处理数据服务请求,***进程暂停运行进行等待,其中,被暂停处理的所述数据服务请求按顺序暂存在存储设备中;
其中,在暂停处理所述数据服务请求时,继续接收数据服务请求,并将接收的数据服务请求按顺序缓存在所述存储设备中;
当检测到所述应用进程的数量小于所述预定数量时,从所述存储设备中调取所述接收的数据服务请求进行响应;
确定所述应用进程的数量没有超过预定数量的情况下,继续运行所述***进程,处理所述数据服务请求;其中,继续运行所述***进程,处理所述数据服务请求包括:通过分叉fork函数调用所述***进程的子进程,所述***进程为父进程;
控制所述父进程与所述子进程同时进行处理,运行***进程,处理所述数据服务请求,其中,所述父进程与所述子进程服务于同一数据服务请求;
其中,所述父进程与所述子进程同时进行处理,运行***进程,处理所述数据服务请求包括:
控制所述父进程添加进程控制信息,控制所述子进程阻塞信号,等待所述父进程的通知,其中,所述进程控制信息用于控制***中的应用进程的启用和删除;
通过所述父进程启动子进程,并通知所述子进程处理,其中,所述子进程接收父进程的处理信号后,进行业务处理;
确定所述父进程或子进程业务处理完毕的情况下,退出并删除所述父进程或子进程;
确定所述父进程或子进程业务处理完毕的情况下,退出并删除所述父进程或子进程包括:
控制所述子进程向所述父进程发送退出信号;
确定所述父进程接收到所述退出信号的情况下,控制所述父进程通过所述进程控制信息,将发送所述退出信号的子进程从进程控制表中移除,删除所述子进程,其中,所述父进程通过进程控制表控制***的应用进程的启动和删除;
确定***的主控进程终止的情况下,退出并删除所述父进程;
所述退出信号包括用于区分不同的业务类型的应用KEY值,应用当前进程数,以及用于记录所有所述应用进程的子进程的端口地址PID数据。
2.根据权利要求1所述的方法,其特征在于,确定所述***的主控进程没有终止的情况下,继续接收数据服务请求。
3.根据权利要求1所述的方法,其特征在于,该方法还包括:
检测所述当前应用进程的数量;
确定所述应用进程的数量减少至所述预定数量之下的情况下,读取缓存的所述数据服务请求;
响应所述数据服务请求建立对应的应用进程,其中,所述应用进程操作完毕后进行退出,减少所述当前应用进程的数量。
4.根据权利要求1所述的方法,其特征在于,接收数据服务请求之前还包括:
确定***的主控进程没有终止的情况下,接收数据服务请求;
确定所述***的主控进程终止的情况下,退出所述***的主控进程。
5.根据权利要求1至4中任意一项所述的方法,其特征在于,接收数据服务请求之前还包括:
根据参数建立进程控制表,其中,所述参数包括每个应用进程的,用于区分不同的业务类型的应用KEY值,以及所述应用进程的所有的端口地址PID数据;
根据初始化指令初始化所述进程控制表。
6.一种数据处理装置,其特征在于,包括:
接收模块,用于接收数据服务请求,其中,所述数据服务请求用于请求对客户机进行数据服务,所述数据服务请求由所述客户机发送;
计数模块,用于对当前的应用进程进行计数,其中,所述应用进程为响应所述数据服务请求所建立,用于进行数据服务操作;
确定模块,用于确定所述应用进程的数量大于等于预定数量的情况下,暂停接收数据服务请求,***进程暂停运行进行等待,其中,被拒绝接收的所述数据服务请求按顺序暂存在存储设备中;
其中,所述装置还用于在暂停处理所述数据服务请求时,继续接收数据服务请求,并将接收的数据服务请求按顺序缓存在所述存储设备中;
当检测到所述应用进程的数量小于所述预定数量时,从所述存储设备中调取所述接收的数据服务请求进行响应;
确定所述应用进程的数量没有超过预定数量的情况下,继续运行所述***进程,处理所述数据服务请求;其中,继续运行所述***进程,处理所述数据服务请求包括:通过分叉fork函数调用所述***进程的子进程,所述***进程为父进程;
控制所述父进程与所述子进程同时进行处理,运行***进程,处理所述数据服务请求,其中,所述父进程与所述子进程服务于同一数据服务请求;
其中,所述装置还用于控制所述父进程添加进程控制信息,控制所述子进程阻塞信号,等待所述父进程的通知,其中,所述进程控制信息用于控制***中的应用进程的启用和删除;
通过所述父进程启动子进程,并通知所述子进程处理,其中,所述子进程接收父进程的处理信号后,进行业务处理;
确定所述父进程或子进程业务处理完毕的情况下,退出并删除所述父进程或子进程;
确定所述父进程或子进程业务处理完毕的情况下,退出并删除所述父进程或子进程包括:
控制所述子进程向所述父进程发送退出信号;
确定所述父进程接收到所述退出信号的情况下,控制所述父进程通过所述进程控制信息,将发送所述退出信号的子进程从进程控制表中移除,删除所述子进程,其中,所述父进程通过进程控制表控制***的应用进程的启动和删除;
确定***的主控进程终止的情况下,退出并删除所述父进程;
所述退出信号包括用于区分不同的业务类型的应用KEY值,应用当前进程数,以及用于记录所有所述应用进程的子进程的端口地址PID数据。
7.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至5中任意一项所述的方法。
8.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至5中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910244453.1A CN110046003B (zh) | 2019-03-28 | 2019-03-28 | 数据处理方法、装置,存储介质和处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910244453.1A CN110046003B (zh) | 2019-03-28 | 2019-03-28 | 数据处理方法、装置,存储介质和处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110046003A CN110046003A (zh) | 2019-07-23 |
CN110046003B true CN110046003B (zh) | 2023-03-28 |
Family
ID=67275481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910244453.1A Active CN110046003B (zh) | 2019-03-28 | 2019-03-28 | 数据处理方法、装置,存储介质和处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110046003B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352988B (zh) * | 2020-02-29 | 2023-05-23 | 重庆百事得大牛机器人有限公司 | 针对法务信息的大数据仓库存储、分析、提取*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970599A (zh) * | 2014-05-29 | 2014-08-06 | 中国银行股份有限公司 | 一种基于多进程并发的数据处理方法及装置 |
CN105426231A (zh) * | 2014-09-04 | 2016-03-23 | 腾讯科技(深圳)有限公司 | 多进程处理装置和多进程处理方法 |
CN107423118A (zh) * | 2017-04-21 | 2017-12-01 | 广州五舟科技股份有限公司 | 分布式计算数据转发方法和装置 |
CN108694571A (zh) * | 2017-04-11 | 2018-10-23 | 优酷网络技术(北京)有限公司 | 一种基于多进程的业务处理方法及装置 |
CN109343972A (zh) * | 2018-08-21 | 2019-02-15 | 平安科技(深圳)有限公司 | 任务处理方法及终端设备 |
-
2019
- 2019-03-28 CN CN201910244453.1A patent/CN110046003B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970599A (zh) * | 2014-05-29 | 2014-08-06 | 中国银行股份有限公司 | 一种基于多进程并发的数据处理方法及装置 |
CN105426231A (zh) * | 2014-09-04 | 2016-03-23 | 腾讯科技(深圳)有限公司 | 多进程处理装置和多进程处理方法 |
CN108694571A (zh) * | 2017-04-11 | 2018-10-23 | 优酷网络技术(北京)有限公司 | 一种基于多进程的业务处理方法及装置 |
CN107423118A (zh) * | 2017-04-21 | 2017-12-01 | 广州五舟科技股份有限公司 | 分布式计算数据转发方法和装置 |
CN109343972A (zh) * | 2018-08-21 | 2019-02-15 | 平安科技(深圳)有限公司 | 任务处理方法及终端设备 |
Non-Patent Citations (1)
Title |
---|
基于Node.Js的Web***性能提高方法研究;杨林;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑(月刊)2018年第04期 》;20180430;第3.4-3.5章 * |
Also Published As
Publication number | Publication date |
---|---|
CN110046003A (zh) | 2019-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8424007B1 (en) | Prioritizing tasks from virtual machines | |
JP3762846B2 (ja) | サーバのグループに関する作業負荷管理を行うデータ処理装置および方法 | |
CN106161537B (zh) | 远程过程调用的处理方法、装置、***及电子设备 | |
Wang et al. | Towards green service composition approach in the cloud | |
US20100036957A1 (en) | Method and System for Implementing Transfer of a Network Session | |
US10908963B2 (en) | Deterministic real time business application processing in a service-oriented architecture | |
US20090328040A1 (en) | Determining Real Time Stateful Business Application Processing In An Otherwise Stateless Service-Oriented Architecture | |
CN111737356B (zh) | 一种区块链事件的处理方法及装置 | |
CN110046003B (zh) | 数据处理方法、装置,存储介质和处理器 | |
CN112600878A (zh) | 一种数据传输方法及装置 | |
CN114296953B (zh) | 一种多云异构***及任务处理方法 | |
CN114697194B (zh) | 阻塞式事件通知方法及装置 | |
CN112905357B (zh) | 一种数据读取方法、***、电子设备及存储介质 | |
US7769828B2 (en) | System for provisioning time sharing option (TSO) and interactive productivity system facility (ISPF) services in a network environment | |
CN109324877A (zh) | 数据访问的方法及服务器 | |
CN110018782B (zh) | 一种数据读/写方法及相关装置 | |
AU2018294439B2 (en) | Technologies for managing web notifications in client-server systems | |
US7693988B2 (en) | Subject/observer update control method and apparatus | |
WO2023002547A1 (ja) | サーバ内データ転送装置、サーバ内データ転送方法およびプログラム | |
US20210311761A1 (en) | Method for accessing application logs within virtual machines based on operator-defined criteria | |
US7577712B1 (en) | Efficient event completion in UDAPL | |
CN111160546B (zh) | 一种数据处理*** | |
JPH08212090A (ja) | サーバシステム | |
WO2023144878A1 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
WO2022172366A1 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
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 |