CN112437125B - 信息并发处理方法、装置、电子设备及存储介质 - Google Patents
信息并发处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112437125B CN112437125B CN202011245331.3A CN202011245331A CN112437125B CN 112437125 B CN112437125 B CN 112437125B CN 202011245331 A CN202011245331 A CN 202011245331A CN 112437125 B CN112437125 B CN 112437125B
- Authority
- CN
- China
- Prior art keywords
- session information
- concurrent processing
- sub
- arrays
- segmented
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 19
- 238000012545 processing Methods 0.000 claims abstract description 145
- 238000003491 array Methods 0.000 claims abstract description 95
- 238000000034 method Methods 0.000 claims abstract description 37
- 230000015654 memory Effects 0.000 claims description 28
- 238000001514 detection method Methods 0.000 claims description 24
- 230000011218 segmentation Effects 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 5
- 239000000126 substance Substances 0.000 claims description 2
- 238000012795 verification Methods 0.000 claims description 2
- 238000004590 computer program Methods 0.000 description 9
- 230000000903 blocking effect Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 101100517651 Caenorhabditis elegans num-1 gene Proteins 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了信息并发处理方法、装置、电子设备及存储介质,涉及并发处理、车联网领域。具体实现方案为:将获取的会话信息分割为多个子会话信息;将所述多个子会话信息分别对应存储到配置好的多个分段数组中;开启多个协程,根据所述多个协程分别对所述多个分段数组进行并发处理,得到针对所述多个子会话信息的并发处理结果。采用本申请,可以提高并发处理的效率。
Description
技术领域
本申请涉及并发处理领域。本申请尤其涉及车联网领域。
背景技术
信息交互或信息推送服务中,需要在终端与后台服务器间通过发送会话信息来建立长连接,如果存在大量的会话信息,则在高并发环境下会导致对会话资源的争夺,过于频繁的资源争夺导致并发处理效率降低,用于管理长连接的***则会不可避免的出现性能瓶颈,导致***性能下降。对此,相关技术中并未存在有效的解决方案。
发明内容
本申请提供了一种信息并发处理方法、装置、电子设备及存储介质。
根据本申请的一方面,提供了一种信息并发处理方法,包括:
将获取的会话信息分割为多个子会话信息;
将所述多个子会话信息分别对应存储到配置好的多个分段数组中;
开启多个协程,根据所述多个协程分别对所述多个分段数组进行并发处理,得到针对所述多个子会话信息的并发处理结果。
根据本申请的另一方面,提供了一种信息并发处理装置,包括:
分割模块,用于将获取的会话信息分割为多个子会话信息;
分组存储模块,用于将所述多个子会话信息分别对应存储到配置好的多个分段数组中;
并发处理模块,用于开启多个协程,根据所述多个协程分别对所述多个分段数组进行并发处理,得到针对所述多个子会话信息的并发处理结果。
根据本申请的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与该至少一个处理器通信连接的存储器;其中,
该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本申请任意一实施例所提供的方法。
根据本申请的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使该计算机执行本申请任意一项实施例所提供的方法。
根据本申请的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上所述的方法。
采用本申请,可以将获取的会话信息分割为多个子会话信息,可以将所述多个子会话信息分别对应存储到配置好的多个分段数组中。开启多个协程,可以根据所述多个协程分别对所述多个分段数组进行并发处理,得到针对所述多个子会话信息的并发处理结果。由于将获取的大量会话信息分割后可以对应存储到多个彼此独立的分段数组中,开启协程后可以基于该多个彼此独立的分段数组进行并发处理,因此,提高了并发处理的效率。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请实施例的信息并发处理方法的流程示意图;
图2是根据本申请实施例的信息并发处理方法的流程示意图;
图3是根据本申请实施例的一应用示例的并发处理的流程示意图;
图4是根据本申请实施例的信息并发处理装置的组成结构示意图;
图5是用来实现本申请实施例的信息并发处理方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。本文中术语“第一”、“第二”表示指代多个类似的技术用语并对其进行区分,并不是限定顺序的意思,或者限定只有两个的意思,例如,第一特征和第二特征,是指代有两类/两个特征,第一特征可以为一个或多个,第二特征也可以为一个或多个。
另外,为了更好的说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。
信息交互或信息推送服务(如IM或者推送服务***应用)中,建立长连接后,后台服务器可以按照终端或者终端用户的唯一标识来实现信息推送。为了实现信息推送需求,可以通过一个终端标识(ID)映射表,用以保存各个终端ID和对应ID的会话信息,从而基于该映射表实现该后台服务器与终端间的长连接管理(如针对固定的终端ID进行精准消息推送、管理连接的创建和销毁、实现心跳检测机制以实现连接状态判断及过期连接的清理等)。
高并发环境下,如果面对大量终端或者终端用户的访问,会处于高并发请求的连接状态,此时对会话资源的争夺会非常频繁,一些耗时操作会阻塞大量其他的操作,导致大量请求线程被阻塞,这些都会引起并发处理效率的降低,从而导致***的处理吞吐量下降、***性能下降、严重时可导致***崩溃等***性能下降的诸多问题。
为了提高并发处理效率,可以采用读写锁或分段锁的方案。其中,就读写锁而言,可以使用hashmap来存储终端ID映射表,并增加读写锁进行保护,从而改善高并发环境下的并发处理效率。然而,采用读写锁会存在写阻塞读的问题,同时读写锁在多CPU或者多核情况下性能表现不佳。就分段锁而言,分段锁方案比较读写锁方案,增加了分段机制,虽然可以通过有效的分割来降低资源竞争带来的***阻塞,但是分段锁是分割为多个分段后,对其中一个分段中的多个信息进行并发处理,前一个分段执行完毕后接续执行之后的分段,是一种分段且串联的处理方式,尤其是针对某个存储热点数据的分段情况,仍然存在写阻塞读的问题。
虽然上述读写锁或分段锁的方案能一定程度上改善并发处理效率,比如,可以做到对固定终端ID的O(1)读写操作,但是仍然不能解决高并发环境中,尤其是映射表保存有数量级别更高(如十多万或者上百万)的用于长连接管理的会话信息所面临的巨大访问压力。以并发处理操作为心跳检测操作为例,响应该心跳检测操作,利用心跳检测机制判断连接状态和过期连接清理时,心跳每一次检测都要遍历所有的会话信息,时间复杂度很高,也就是说,一次心跳检测期间耗时较长且在高并发场景下,在某个时刻很容易阻塞大量请求操作,由于并发处理效率不高,仍然会导致上述***的处理吞吐量下降、***性能下降、严重时可导致***崩溃等***性能下降的诸多问题。
根据本申请的实施例,提供了一种信息并发处理方法,图1是根据本申请实施例的信息并发处理方法的流程示意图,该方法可以应用于信息并发处理装置,例如,该装置可以部署于终端或服务器或其它处理设备执行的情况下,可以执行会话信息分割、分段处理及存储、并发处理等等。其中,终端可以为用户设备(UE,User Equipment)、移动设备、蜂窝电话、无绳电话、个人数字处理(PDA,Personal Digital Assistant)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该方法还可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图1所示,包括:
S101、将获取的会话信息分割为多个子会话信息。
S102、将所述多个子会话信息分别对应存储到配置好的多个分段数组中。
S103、开启多个协程,根据所述多个协程分别对所述多个分段数组进行并发处理,得到针对所述多个子会话信息的并发处理结果。
上述S101中,可以是在终端获取到该会话信息,也可以是在后台服务器获取到该会话信息,还可以是在终端与后台服务器建立长连接的过程中获取到该会话信息。也就是说,如图1所示的信息并发处理的处理逻辑,可以设置于终端、也可以设置于后台服务器,还可以设置于位于终端与后台服务器之间的中间处理设备上,本申请不限于这里的硬件设置部署,只要可以解决并发处理中提升***性能的部署方式都在本申请的保护范围之内。
上述S102中,分段数组只是独立运行的存储单元的一种可能性,比如,以go语言来实现本申请为例,可以基于go语言的分段数组结构(如sync.map)来实现该存储单元,即将该分段数组结构中的每一个分段数组作为该存储单元。本申请不限于这里分段数组的存储形式,只要可以解决并发处理中提升***性能的存储方式都在本申请的保护范围之内。
上述S103中,协程是非抢占式或者说协作式的计算机程序并发调度机制,也可以称之为轻量级的线程,协程是对线程操作的封装,可以通过状态机及回调等实现并发处理逻辑。多协程比多线程的并发处理更高效,因为它是“轻量级”的,所以处理速度更快,而且,多协程在内存消耗上与多线程相比,由于协程底层实现是类似线程池的形式,可以复用,比多线程更占优势,所以更省内存,避免了对内存的大量占用,从而进一步提高了处理速度,还可以避免采用线程可能导致的阻塞问题。
以go语言来实现本申请为例,协程可以为go程,本申请不限于go语音来实现,还可以是静态编程语言(如Kotlin),静态编程语言是一种可用于现代多平台应用的静态编程语言,其中,Kotlin可以编译成Java字节码和JavaScript与Java代码相互运作,只要可以解决并发处理中提升***性能的代码设计语言都在本申请的保护范围之内。
基于S101-S103处理逻辑的一示例中,可以将上述获取的大量会话信息(如10万个会话信息)分割为多个子会话信息(如可以根据终端ID的哈希运算或者MD5运算分割为1000份,每一份中有100个子会话消息),将包含该100个子会话消息的这一份信息存储到对应的存储单元中(如将包含该100个子会话消息的这一份信息存储到配置好的对应分段数组中)。将大量会话信息分割到多个独立运行的存储单元(如分段数组)中,开启多个协程后,可以根据多个协程分别对多个分段数组进行并发处理,从而得到针对多个子会话信息的并发处理结果。其中,子会话信息的个数、协程的个数、分段数组的个数可以一一对应,比如,协程的个数为N个,分段数组的个数也为N个,对应的,会话信息可以分割为N份子会话信息并对应存储于N个分段数组中,并通过N个协程来读取分段数组以实现上述并发处理。N为大于1的整数,针对大量的会话信息,为了提高并发处理效率,在实际应用中N可以取500-1000份。
采用本申请,可以将获取的会话信息分割为多个子会话信息,可以将多个子会话信息分别对应存储到配置好的多个分段数组中,开启多个协程后,可以根据多个协程分别对多个分段数组进行并发处理,得到针对大量子会话信息的并发处理结果。由于将获取的大量会话信息分割后可以对应存储到多个彼此独立的分段数组中,开启协程后可以基于该多个彼此独立的分段数组进行并发处理,而对于一个分段数组中存储的子会话信息的处理而言,是相对独立于其他分段数组中存储的子会话信息的,因此,避免了大量会话信息在高并发环境下由于并发处理效率低下所导致的***阻塞、资源争夺等问题,提高了并发处理的效率,以克服***在高并发环境下容易出现的性能瓶颈,从而提升了***性能。
根据本申请的实施例,提供了一种信息并发处理方法,图2是根据本申请实施例的信息并发处理方法的流程示意图,如图2所示,包括:
S201、将所述会话信息基于配置的N个分段数分割为N份子会话信息,每一份子会话信息为所述多个子会话信息,所述N为大于2的整数。
S202、将所述N份子会话信息分别对应存储到N个分段数组中,所述N为大于2的整数。
S203、开启多个协程,将每一个协程分别与对应的分段数组进行绑定处理,得到N个协程所绑定的N个分段数组。
S204、响应并发处理操作,基于N个协程分别读取所绑定的N个分段数组,执行所述并发处理。
上述S201中,N个分段数可以为0,…,N-1个分段数;上述S202中,N个分段数组可以为0,…,N-1个分段数组;上述S203中,与对应的分段数组相互绑定的协程也可以为N个,可以为0,…,N-1个协程。即包含上述多个子会话信息的子会话信息份数对应该N个分段数,以及N个分段数与N个分段数组及N个协程分别一一对应。
基于S201-S203构成的这种一一对应的绑定关系,可以将获取的会话信息根据N个分段数分割为N份(每份包含多个子会话信息)后,分别对应存储到配置好的N个分段数组中。通过S204中响应并发处理操作后,基于N个协程分别读取所绑定的该N个分段数组,对该N个分段数组同时执行并发处理,还可以对N个分段数组中的存储的多个子会话信息进行并发处理。
一示例中,可以是在终端获取到该会话信息,也可以是在后台服务器获取到该会话信息,还可以是在终端与后台服务器建立长连接的过程中获取到该会话信息。也就是说,如图1所示的信息并发处理的处理逻辑,可以设置于终端、也可以设置于后台服务器,还可以设置于位于终端与后台服务器之间的中间处理设备上,本申请不限于这里的硬件设置部署,只要可以解决并发处理中提升***性能的部署方式都在本申请的保护范围之内。
一示例中,分段数组只是独立运行的存储单元的一种可能性,比如,以go语言来实现本申请为例,可以基于go语言的分段数组结构(如sync.map)来实现该存储单元,即将该分段数组结构中的每一个分段数组作为该存储单元。本申请不限于这里分段数组的存储形式,只要可以解决并发处理中提升***性能的存储方式都在本申请的保护范围之内。
一示例中,协程是非抢占式或者说协作式的计算机程序并发调度机制,也可以称之为轻量级的线程,协程是对线程操作的封装,可以通过状态机及回调等实现并发处理逻辑。多协程比多线程的并发处理更高效,因为它是“轻量级”的,所以处理速度更快,而且,多协程在内存消耗上与多线程相比,由于协程底层实现是类似线程池的形式,可以复用,比多线程更占优势,所以更省内存,避免了对内存的大量占用,从而进一步提高了处理速度,还可以避免采用线程可能导致的阻塞问题。
一示例中,以go语言来实现本申请为例,协程可以为go程,本申请不限于go语音来实现,还可以是静态编程语言(如Kotlin),静态编程语言是一种可用于现代多平台应用的静态编程语言,其中,Kotlin可以编译成Java字节码和JavaScript与Java代码相互运作,只要可以解决并发处理中提升***性能的代码设计语言都在本申请的保护范围之内。
采用本申请,通过包含上述多个子会话信息的子会话信息份数对应该N个分段数,以及N个分段数与N个分段数组及N个协程分别一一对应的绑定关系,可以将获取的会话信息根据N个分段数分割为N份(每份包含多个子会话信息)后,分别对应存储到配置好的N个分段数组中。开启N个协程后,可以根据N个协程分别对N个分段数组同时进行并发处理,以得到针对大量子会话信息的并发处理结果。由于将获取的大量会话信息分割后可以对应存储到多个彼此独立的N个分段数组中,开启N个协程后可以基于该N个彼此独立的分段数组进行并发处理,而对于一个分段数组中存储的子会话信息的处理而言,是相对独立于其他分段数组中存储的子会话信息的,因此,避免了大量会话信息在高并发环境下由于并发处理效率低下所导致的***阻塞、资源争夺等问题,提高了并发处理的效率,以克服***在高并发环境下容易出现的性能瓶颈,从而提升了***性能。
一实施方式中,还包括:提取所述会话信息分别对应的终端标识,根据所述终端标识进行哈希运算或MD5运算,得到用于校验所述会话信息的识别码。采用哈希运算或MD5运算,可以将原终端标识转换为唯一的识别码并不可篡改,从而提高了长连接管理的***安全性。
一实施方式中,所述并发处理操作包括:读写操作或心跳检测操作,包括如下至少两种实施方案;
实施方案一:所述响应并发处理操作,基于N个协程分别读取所绑定的N个分段数组,执行所述并发处理,包括:所述并发处理操作为所述读写操作的情况下,在所述N个分段数组中查询读字段及写字段,基于所述N个协程并行访问对应绑定的所述N个分段数组,基于所述N个分段数组中的所述读字段来读取数据,基于所述N个分段数组中的所述写字段来写入数据。采用本实施方式,可以提高读写操作的并发处理效率,避免读操作阻塞写,或者写操作阻塞读。
实施方案二:所述响应并发处理操作,基于N个协程分别读取所绑定的N个分段数组,执行所述并发处理,包括:所述并发处理操作为所述心跳检测操作的情况下,在所述N个分段数组中查询所存储的所述多个子会话信息,
基于所述N个协程并行访问对应绑定的所述N个分段数组,对所述N个分段数组中的所述多个子会话信息进行遍历检测,直至遍历结束。采用本实施方式,可以提高心跳检测的并发处理效率,避免遍历处理所消耗大量的时间,节约了时间成本。
一示例中,可以配置分段数(对于大量的会话信息,可以按照会话信息对应的终端ID进行分段,将会话信息分割为多个子会话信息,且该多个子会话信息可以对应N个ID构成的ID范围)及分段数组(sync.map为元素的N个数组)的方式来对应保存会话信息。之后,创建go语言(或其他类似语言)的协程,标识该协程的ID范围(可以对应分割得到的上述ID范围)后开启定时器。在定时器开启后,触发N个协程(每个协程可以绑定一个sync.map分段数组结构中的一个分段数组)开始执行心跳检测处理逻辑或读写操作处理逻辑。响应心跳检测处理逻辑的情况下,可以对分割好并对应存储在N个sync.map中的N个会话信息进行并行处理的访问,以实现服务器与终端间的连接管理。响应读写操作处理逻辑的情况下,可以根据终端ID进行哈希运算以得到哈希值,根据哈希值在上述分段数组(sync.map为元素的N个数组)中查询对应的读字段“read字段”或写字段“dirty字段”,以读取数据或写入数据。其中,读取数据时可以先查询read字段,不存在,则查询dirty字段;写入数据时则只写入dirty字段。读取read字段可以不需要加锁;而读取或写入dirty字段都需要加锁。另外,还可以设置misses字段来统计read字段被穿透的次数(“被穿透”指需要读取dirty字段的情况),超过预设次数则将dirty字段上的会话信息同步到read字段上。
应用示例:
应用本申请实施例一处理流程包括如下内容:
本应用示例以go语言创建的协程为例进行阐述,go语言创建的协程简称为“go程”。基于go语言可以实现一种分组数据结构(如sync.map结构)。采用该sync.map结构,针对多CPU或多核的高并发场景的异步hashmap结构,可以实现读写分离,即:采用CPU级别的CAS不加锁的方式来更新会话信息的值,大大提高了并发处理效率。
图3是根据本申请实施例的一应用示例的并发处理的流程示意图,如图3所示,包括:设置设置分段数slot_num=N;建立分段数组client_map为sync.map(slot_num);创建go程并标识go程的标识go_id范围(0,slot_num-1);启动定时器计时后,等待操作(即等待对并发处理操作进行响应);之后判断并发处理操作是否为读写操作,如果是,则得到终端client_id,计算client_id的哈希值“hash_value”,对client_map(hash_value%slot_num)的sync.map对象进行相应的读写操作,继续等待操作(即等待对下一轮请求并引发的并发处理操作进行响应);如果否,则并发处理操作为心跳检测事件的情况下,通知所有go程,分别对client_map(go_id)对象进行遍历和相应的逻辑操作,继续等待操作(即等待对下一轮请求并引发的并发处理操作进行响应)。
举个例子,就目前情况而言,一个高性能的服务器也很少会实现100万连接,当前主流技术都是都是通过集群等方式来提高并发性的。但我们以单机100万连接为例子,如果分配1000个段来管理这100万个连接。按现有的方案,心跳操作需要一次性遍历100万个内存单元,如果该操作是个写操作,那么当前其他的所有操作都要被阻塞,是十分危险的行为。而本专利方法,存在1000个独立的存储单元。首先彼此之间没有资源竞争,降低了阻塞其他操作的风险。其次,每一个go程遍历的数量级平均为100万/1000=1000个。对于1000个元素的遍历处理几乎不存在阻塞的风险。大大提高了***性能。
采用本应用示例,利用go程+sync.map结构的分段机制,将大量长连接管理的会话信息,可以利用哈希或MD5运算将终端的id,分割到id为0~N-1的N个预设的以sync.map为分段数组元素的分段数组结构(sync.map结构)中来保存。通过定时器计时,到固定时间触发N个go程(每个go程绑定一个sync.map结构)后开始处理并发处理逻辑(读写逻辑及心跳检测逻辑),使得每个go程可以同时针对各自对应的sync.map进行并行处理。由于可以将大量的会话信息分割到N个彼此独立的sync.map中保存,因此,可以大大降低会话资源的争夺问题;由于go程的轻量特性,可以保证可以对分割的各个sync.map进行并行处理的访问,尤其是可以将心跳检测逻辑中的遍历操作的时间复杂度大大降低,因此,提高了并发处理效率,大大减少了高并发环境下请求阻塞的概率,解决了相关技术中即便采用读写锁及分段锁仍然会导致***的处理吞吐量下降、***性能下降、严重时可导致***崩溃等***性能下降的诸多问题。
根据本申请的实施例,提供了一种信息并发处理装置,图4是根据本申请实施例的信息并发处理装置的组成结构示意图,如图4所示,包括:分割模块41,用于将获取的会话信息分割为多个子会话信息;分组存储模块42,用于将所述多个子会话信息分别对应存储到配置好的多个分段数组中;并发处理模块43,用于开启多个协程,根据所述多个协程分别对所述多个分段数组进行并发处理,得到针对所述多个子会话信息的并发处理结果。
一实施方式中,所述分割模块,用于将所述会话信息基于配置的N个分段数分割为N份子会话信息,每一份子会话信息为所述多个子会话信息,所述N为大于2的整数。
一实施方式中,还包括校验模块,用于提取所述会话信息分别对应的终端标识;根据所述终端标识进行哈希运算或MD5运算,得到用于校验所述会话信息的识别码。
一实施方式中,所述分组存储模块,用于将所述N份子会话信息分别对应存储到N个分段数组中。
一实施方式中,所述并发处理模块,用于将每一个协程分别与对应的分段数组进行绑定处理,得到N个协程所绑定的N个分段数组;响应并发处理操作,基于N个协程分别读取所绑定的N个分段数组,执行所述并发处理。其中,所述并发处理操作包括:读写操作或心跳检测操作。
一实施方式中,所述并发处理模块,用于所述并发处理操作为所述读写操作的情况下,在所述N个分段数组中查询读字段及写字段;基于所述N个协程并行访问对应绑定的所述N个分段数组,基于所述N个分段数组中的所述读字段来读取数据,基于所述N个分段数组中的所述写字段来写入数据。
一实施方式中,所述并发处理模块,用于所述并发处理操作为所述心跳检测操作的情况下,在所述N个分段数组中查询所存储的所述多个子会话信息;基于所述N个协程并行访问对应绑定的所述N个分段数组,对所述N个分段数组中的所述多个子会话信息进行遍历检测,直至遍历结束。
本申请实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。
根据本申请的实施例,本申请还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
如图5所示,是用来实现本申请实施例的信息并发处理方法的电子设备的框图。该电子设备可以为前述部署设备或代理设备。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图5所示,该电子设备包括:一个或多个处理器501、存储器502,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器***)。图5中以一个处理器501为例。
存储器502即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的信息并发处理方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的信息并发处理方法。
存储器502作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的信息并发处理方法对应的程序指令/模块(例如,附图4所示的分割模块、分组存储模块、并发处理模块等模块)。处理器501通过运行存储在存储器502中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的信息并发处理方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
信息并发处理方法的电子设备,还可以包括:输入装置503和输出装置504。处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图5中以通过总线连接为例。
输入装置503可接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置504可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
采用本申请,可以将获取的会话信息分割为多个子会话信息,可以将所述多个子会话信息分别对应存储到配置好的多个分段数组中。开启多个协程,可以根据所述多个协程分别对所述多个分段数组进行并发处理,得到针对所述多个子会话信息的并发处理结果。由于将获取的大量会话信息分割后可以对应存储到多个彼此独立的分段数组中,开启协程后可以基于该多个彼此独立的分段数组进行并发处理,因此,提高了并发处理的效率。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (16)
1.一种信息并发处理方法,所述方法包括:
将获取的会话信息基于配置好的多个分段数组的个数分割为多份子会话信息;
将所述多份子会话信息分别对应存储到配置好的多个分段数组中;
开启多个协程,根据所述多个协程分别对所述多个分段数组进行并发处理,得到针对所述多份子会话信息的并发处理结果。
2.根据权利要求1所述的方法,其中,所述将获取的会话信息基于配置好的多个分段数组的个数分割为多份子会话信息,包括:
将所述会话信息基于配置的N个分段数分割为N份子会话信息,每一份子会话信息包括多个子会话信息,所述N为大于2的整数。
3.根据权利要求2所述的方法,还包括:
提取所述会话信息分别对应的终端标识;
根据所述终端标识进行哈希运算或MD5运算,得到用于校验所述会话信息的识别码。
4.根据权利要求2或3所述的方法,其中,所述将所述多份子会话信息分别对应存储到配置好的多个分段数组中,包括:
将所述N份子会话信息分别对应存储到N个分段数组中。
5.根据权利要求4所述的方法,其中,所述开启多个协程,根据所述多个协程分别对所述多个分段数组进行并发处理,包括:
将每一个协程分别与对应的分段数组进行绑定处理,得到N个协程所绑定的N个分段数组;
响应并发处理操作,基于N个协程分别读取所绑定的N个分段数组,执行所述并发处理;
其中,所述并发处理操作包括:读写操作或心跳检测操作。
6.根据权利要求5所述的方法,其中,所述响应并发处理操作,基于N个协程分别读取所绑定的N个分段数组,执行所述并发处理,包括:
所述并发处理操作为所述读写操作的情况下,在所述N个分段数组中查询读字段及写字段;
基于所述N个协程并行访问对应绑定的所述N个分段数组,基于所述N个分段数组中的所述读字段来读取数据,基于所述N个分段数组中的所述写字段来写入数据。
7.根据权利要求5所述的方法,其中,所述响应并发处理操作,基于N个协程分别读取所绑定的N个分段数组,执行所述并发处理,包括:
所述并发处理操作为所述心跳检测操作的情况下,在所述N个分段数组中查询所存储的所述多个子会话信息;
基于所述N个协程并行访问对应绑定的所述N个分段数组,对所述N个分段数组中的所述多个子会话信息进行遍历检测,直至遍历结束。
8.一种信息并发处理装置,所述装置包括:
分割模块,用于将获取的会话信息基于配置好的多个分段数组的个数分割为多份子会话信息;
分组存储模块,用于将所述多份子会话信息分别对应存储到配置好的多个分段数组中;
并发处理模块,用于开启多个协程,根据所述多个协程分别对所述多个分段数组进行并发处理,得到针对所述多份子会话信息的并发处理结果。
9.根据权利要求8所述的装置,其中,所述分割模块,用于:
将所述会话信息基于配置的N个分段数分割为N份子会话信息,每一份子会话信息包括多个子会话信息,所述N为大于2的整数。
10.根据权利要求9所述的装置,还包括校验模块,用于:
提取所述会话信息分别对应的终端标识;
根据所述终端标识进行哈希运算或MD5运算,得到用于校验所述会话信息的识别码。
11.根据权利要求9或10所述的装置,其中,所述分组存储模块,用于:
将所述N份子会话信息分别对应存储到N个分段数组中。
12.根据权利要求11所述的装置,其中,所述并发处理模块,用于:
将每一个协程分别与对应的分段数组进行绑定处理,得到N个协程所绑定的N个分段数组;
响应并发处理操作,基于N个协程分别读取所绑定的N个分段数组,执行所述并发处理;
其中,所述并发处理操作包括:读写操作或心跳检测操作。
13.根据权利要求12所述的装置,其中,所述并发处理模块,用于:
所述并发处理操作为所述读写操作的情况下,在所述N个分段数组中查询读字段及写字段;
基于所述N个协程并行访问对应绑定的所述N个分段数组,基于所述N个分段数组中的所述读字段来读取数据,基于所述N个分段数组中的所述写字段来写入数据。
14.根据权利要求12所述的装置,其中,所述并发处理模块,用于:
所述并发处理操作为所述心跳检测操作的情况下,在所述N个分段数组中查询所存储的所述多个子会话信息;
基于所述N个协程并行访问对应绑定的所述N个分段数组,对所述N个分段数组中的所述多个子会话信息进行遍历检测,直至遍历结束。
15.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使计算机执行权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011245331.3A CN112437125B (zh) | 2020-11-10 | 2020-11-10 | 信息并发处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011245331.3A CN112437125B (zh) | 2020-11-10 | 2020-11-10 | 信息并发处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112437125A CN112437125A (zh) | 2021-03-02 |
CN112437125B true CN112437125B (zh) | 2022-05-03 |
Family
ID=74700756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011245331.3A Active CN112437125B (zh) | 2020-11-10 | 2020-11-10 | 信息并发处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112437125B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114157500A (zh) * | 2021-12-07 | 2022-03-08 | 北京天融信网络安全技术有限公司 | 数据包处理方法及电子设备、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104243417A (zh) * | 2013-06-18 | 2014-12-24 | 上海博达数据通信有限公司 | 基于多核的pppoe实现方法 |
CN111556058A (zh) * | 2020-04-29 | 2020-08-18 | 杭州迪普信息技术有限公司 | 会话处理方法及装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9774486B2 (en) * | 2013-02-28 | 2017-09-26 | Level 3 Communications, Llc | Registration of SIP-based communications in a hosted VoIP network |
CN103997514A (zh) * | 2014-04-23 | 2014-08-20 | 汉柏科技有限公司 | 一种文件并行传输的方法及*** |
US10498791B2 (en) * | 2014-12-19 | 2019-12-03 | Telefonaktiebolaget Lm Ericsson (Publ) | Negotiation of message chunk size for message session relay protocol session |
US10187429B2 (en) * | 2016-01-22 | 2019-01-22 | Cisco Technology, Inc. | Selective redundancy for media sessions |
US10482084B2 (en) * | 2016-08-16 | 2019-11-19 | Netscout Systems Texas, Llc | Optimized merge-sorting of data retrieved from parallel storage units |
US11138215B2 (en) * | 2018-06-29 | 2021-10-05 | Oracle International Corporation | Method and system for implementing parallel database queries |
CN109408468A (zh) * | 2018-08-24 | 2019-03-01 | 阿里巴巴集团控股有限公司 | 文件处理方法和装置、计算设备及存储介质 |
CN111383037B (zh) * | 2018-12-27 | 2024-04-05 | 三六零科技集团有限公司 | 一种构建广告物料的方法和装置 |
CN111583906B (zh) * | 2019-02-18 | 2023-08-15 | ***通信有限公司研究院 | 一种语音会话的角色识别方法、装置及终端 |
CN111629074B (zh) * | 2020-07-29 | 2020-10-30 | 武汉思普崚技术有限公司 | 一种网关设备的会话排序方法及装置 |
CN111708866B (zh) * | 2020-08-24 | 2020-12-11 | 北京世纪好未来教育科技有限公司 | 会话切分方法、装置、电子设备和存储介质 |
-
2020
- 2020-11-10 CN CN202011245331.3A patent/CN112437125B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104243417A (zh) * | 2013-06-18 | 2014-12-24 | 上海博达数据通信有限公司 | 基于多核的pppoe实现方法 |
CN111556058A (zh) * | 2020-04-29 | 2020-08-18 | 杭州迪普信息技术有限公司 | 会话处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
基于多效用阈值的分布式高效用序列模式挖掘;曾毅等;《计算机工程与设计》;20200216(第02期);全文 * |
流级别的高速网络流量动态划分算法;熊兵等;《小型微型计算机***》;20130515(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112437125A (zh) | 2021-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2898655B1 (en) | System and method for small batching processing of usage requests | |
CN109032796B (zh) | 一种数据处理方法和装置 | |
CN112181683A (zh) | 消息中间件的并发消费方法以及装置 | |
CN111782365A (zh) | 定时任务处理方法、装置、设备及存储介质 | |
CN111259205A (zh) | 一种图数据库遍历方法、装置、设备及存储介质 | |
CN112565356A (zh) | 数据存储方法、装置以及电子设备 | |
CN111985906A (zh) | 一种远程办公***、方法、装置及存储介质 | |
KR20210040864A (ko) | 파일 디렉터리 순회 방법, 장치, 기기, 매체 및 컴퓨터 프로그램 | |
CN112437125B (zh) | 信息并发处理方法、装置、电子设备及存储介质 | |
US20170212846A1 (en) | Analyzing lock contention within a system | |
US9473565B2 (en) | Data transmission for transaction processing in a networked environment | |
CN111258957A (zh) | 分布式文件***目录更新方法、装置、设备和介质 | |
CN110545324A (zh) | 数据处理方法、装置、***、网络设备和存储介质 | |
CN111966471B (zh) | 访问方法、装置、电子设备及计算机存储介质 | |
CN111290842A (zh) | 一种任务执行方法和装置 | |
CN103577604B (zh) | 一种用于Hadoop分布式环境的图像索引结构 | |
CN111782357A (zh) | 标签控制方法及装置、电子设备和可读存储介质 | |
CN110536283B (zh) | 终端标识获取方法、装置、电子设备和介质 | |
CN111966877A (zh) | 前端服务方法、装置、设备及存储介质 | |
CN111475424B (zh) | 用于管理存储***的方法、设备和计算机可读存储介质 | |
CN111832070A (zh) | 数据的掩码方法、装置、电子设备和存储介质 | |
CN111901254B (zh) | 全节点的带宽分配方法、装置、电子设备以及存储介质 | |
CN110716814B (zh) | 一种进程间大数据量通讯的性能优化方法和装置 | |
CN114036195A (zh) | 一种数据请求处理方法、装置、服务器和存储介质 | |
CN113722070A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211014 Address after: 100176 Room 101, 1st floor, building 1, yard 7, Ruihe West 2nd Road, economic and Technological Development Zone, Daxing District, Beijing Applicant after: Apollo Intelligent Connectivity (Beijing) Technology Co., Ltd. Address before: 2 / F, *** building, 10 Shangdi 10th Street, Haidian District, Beijing 100085 Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |