CN109995758A - 数据并行处理方法及装置 - Google Patents
数据并行处理方法及装置 Download PDFInfo
- Publication number
- CN109995758A CN109995758A CN201910148958.8A CN201910148958A CN109995758A CN 109995758 A CN109995758 A CN 109995758A CN 201910148958 A CN201910148958 A CN 201910148958A CN 109995758 A CN109995758 A CN 109995758A
- Authority
- CN
- China
- Prior art keywords
- data
- request
- journey
- specific
- basic
- 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.)
- Pending
Links
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/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- 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/08—Protocols for interworking; Protocol conversion
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例涉及数据处理技术领域,提供一种数据并行处理方法及装置,其中,方法包括:数据请求解析步骤,对接收的综合数据请求协议转换后进行解析,得到至少两个具体数据请求,其中,所述具体数据请求设置有与基础数据库中的基础数据匹配的数据标识;具体数据请求并行处理步骤,协程调度所述具体数据请求。本公开的数据并行处理方法及装置提高了对不同语言编辑的数据请求的适用性,且多个具体数据请求可同时进行处理,提高了数据处理的效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据并行处理方法及装置。
背景技术
网站服务器在收到浏览器或者应用程序(Application,APP)的数据请求时,可能会遇到一个数据请求可能包含多项的基础数据。其中,网站服务器针对浏览器网页的数据请求处理http、rpc等协议的请求,而对于APP发送的数据请求,需要网站服务器基于多种其他不同的协议,处理APP发送的数据请求。
网站服务器在接收到浏览器或者APP的数据请求时,可能需要从网站服务器的基础数据库中获取、处理并组合多业务数据并返回给浏览器或者APP。
相关技术中,为避免网站服务器串行处理数据请求耗时长、业务处理能力较差的缺陷,利用编程语言的多进程或多线程特性去并行获取、处理业务数据的方案完全依赖于网站服务器所使用的编程语言,不同编程语言对多进程、多线程的支持程度及实现复杂度都不相同,实现成本较高,不通用,并行请求数量受内存等限制较大且不易扩展。
发明内容
为了解决现有技术中存在的上述问题,本发明提供一种数据并行处理方案。
根据本发明实施例的其中一方面,提供一数据并行处理方法,包括:
数据请求解析步骤,对接收的综合数据请求协议转换后进行解析,得到至少两个具体数据请求,其中,所述具体数据请求设置有与基础数据库中的基础数据匹配的数据标识;具体数据请求并行处理步骤,协程调度所述具体数据请求。
在一例中,所述数据请求解析步骤,包括:对所述综合数据请求进行协议转换,得到按照http协议传输的综合数据请求。
在一例中,所述数据请求解析步骤,包括:数据请求拆解步骤,对所述综合数据请求进行拆解,得到拆解后的数据请求;数据请求标注步骤,对所述拆解后的数据请求分别标注所述数据标识,得到所述具体数据请求。
在一例中,所述具体数据请求并行处理步骤,包括:协程创建步骤,基于系统资源与所述具体数据请求数量,创建用于处理具体数据请求的协程,得到数据请求处理协程。
在一例中,所述数据请求处理协程为基于golang的协程;所述具体数据请求并行处理步骤,包括:基于golang的协程对所述具体数据请求进行调度。
在一例中,所述具体数据请求并行处理步骤,还包括:协程复用步骤,通过所述数据请求处理协程,处理所述具体数据请求。
在一例中,所述方法,还包括:基础数据库连接建立步骤,数据请求处理协程与所述基础数据库建立socket连接。
在一例中,所述方法,还包括:连接维持步骤,基于连接池,维持数据请求处理协程与所述基础数据库的socket连接。
在一例中,所述基础数据库与所述数据请求处理协程之间设置有http模块;所述基础数据库连接建立步骤,包括:所述数据请求处理协程与所述基础数据库通过所述http模块建立连接。
在一例中,所述方法,还包括:数据获取步骤,基于所述数据标识,获取所述基础数据库中的基础数据,得到具体数据。
在一例中,所述方法,还包括:数据返回步骤,基于所述数据请求处理协程与所述基础数据库的socket连接,将所述具体数据返回。
根据本发明实施例的另一方面,提供一种数据并行处理装置,包括:
数据请求解析单元,用于对接收的综合数据请求协议转换后进行解析,得到至少两个具体数据请求,其中,所述具体数据请求设置有与基础数据库中的基础数据匹配的数据标识;具体数据请求并行处理单元,用于协程调度所述具体数据请求。
在一例中,所述数据请求解析单元,具体用于对所述综合数据请求进行协议转换,得到按照http协议传输的综合数据请求。
在一例中,所述数据请求解析单元,包括:数据请求拆解模块,用于对所述综合数据请求进行拆解,得到拆解后的数据请求;数据请求标注模块,用于对所述拆解后的数据请求分别标注所述数据标识,得到所述具体数据请求。
在一例中,所述具体数据请求并行处理单元,包括:协程创建模块,用于基于系统资源与所述具体数据请求数量,创建用于处理具体数据请求的协程,得到数据请求处理协程。
在一例中,所述协程为基于golang的协程;所述具体数据请求并行处理单元,具体用于基于golang的协程对所述具体数据请求进行调度。
在一例中,所述具体数据请求并行处理单元,还包括:协程复用模块,用于通过所述数据请求处理协程,处理所述具体数据请求。
在一例中,所述装置,还包括:基础数据库连接建立单元,用于数据请求处理协程与所述基础数据库建立socket连接。
在一例中,所述装置,还包括:http模块,与所述数据请求处理协程、所述基础数据库分别连接。
在一例中,所述装置还包括:数据获取单元,用于基于所述数据标识,获取所述基础数据库中的基础数据,得到具体数据。
在一例中,所述装置还包括:数据返回单元,用于基于所述数据请求处理协程与所述基础数据库的socket连接,将所述具体数据返回。
根据本发明实施例的另一方面,提供一种电子设备,其中,包括:
存储器,用于存储计算机程序;
处理器,用于执行存储器中存储的计算机程序,且计算机程序被执行时,实现上述任一实施例的数据并行处理方法。
根据本发明实施例的另一方面,提供一种计算机可读存储介质,存储有计算机程序,其中,计算机程序被处理器执行时,实现上述任一实施例的数据并行处理方法。
基于数据并行处理方法及装置、电子设备、计算机可读存储介质,本发明通过对接收的综合数据请求进行解析,得到至少两个具体数据请求;协程调度具体数据请求;基于数据标识,获取基础数据库中的基础数据,得到具体数据。提高了对不同语言编辑的数据请求的适用性,且多个具体数据请求可同时进行处理,提高了数据处理的效率。
附图说明
通过参考附图阅读下文的详细描述,本发明实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示出了本发明的数据并行处理方法的一个实施例的流程示意图;
图2示出了本发明的数据并行处理方法的另一实施例的流程示意图;
图3示出了本发明的数据并行处理方法的另一实施例的流程示意图;
图4示出了本发明的数据并行处理方法的另一实施例的流程示意图;
图5示出了本发明的数据并行处理方法的另一实施例的流程示意图;
图6示出了本发明的数据并行处理方法的另一实施例的流程示意图;
图7示出了本发明的数据并行处理方法的另一实施例的流程示意图;
图8示出了本发明的数据并行处理装置的一个实施例的结构示意图;
图9示出了本发明的数据并行处理装置的另一实施例的结构示意图;
图10示出了本发明的数据并行处理装置的另一实施例的结构示意图;
图11示出了本发明的数据并行处理装置的另一实施例的结构示意图;
图12示出了本发明的数据并行处理装置的另一实施例的结构示意图;
图13示出了本发明的数据并行处理装置的另一实施例的结构示意图;
图14示出了本发明的数据并行处理装置的另一实施例的结构示意图;
图15示出了本发明的电子设备的一个实施例的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。
需要注意,虽然本文中使用“第一”、“第二”等表述来描述本发明的实施方式的不同模块、步骤和数据等,但是“第一”、“第二”等表述仅是为了在不同的模块、步骤和数据等之间进行区分,而并不表示特定的顺序或者重要程度。实际上,“第一”、“第二”等表述完全可以互换使用。
本发明实施例可以应用于终端设备、计算机系统及服务器等电子设备,其可与众多其它通用或者专用的计算系统环境或者配置一起操作。适于与终端设备、计算机系统以及服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子,包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统以及服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑以及数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
图1为本发明数据并行处理方法一个实施例的流程示意图。如图1所示,该实施例方法包括:数据请求解析步骤110、具体数据请求并行处理步骤120。下面对图1中的各步骤进行详细说明。
数据请求解析步骤110,对接收的综合数据请求协议转换后进行解析,得到至少两个具体数据请求,其中,所述具体数据请求设置有与基础数据库中的基础数据匹配的数据标识。
在一些实施例中,本发明中的综合数据请求可以是web页面发出的,也可以是APP发出的,其目的是通过综合数据请求调取网站服务器端的基础数据库中的基础数据。综合数据请求发出的web页面或者APP可以为计算机或可移动通讯设备,其中的可移动通讯设备可以是平板电脑、手机等可实现主动数据发送和接收的设备。本实施例对客户端的类型不做具体限定。
在一些实施例中,通过点击web页面或者APP上的显示界面的一个功能性按钮,即可获取基础数据库中的多种基础数据。例如,在某旅游网站的APP上搜索某旅游地区时,需要获取游记、攻略、酒店等业务数据组合后返回给该旅游网站的APP的显示界面。其实,该业务数据在该旅游网站的基础数据库中是分别存储的。
在上述旅游网站的APP上搜索某旅游地区时,即为向该旅游网站发送了一个综合数据请求。本实施例将该综合数据请求进行解析,使该综合数据请求转换为多个针对基础数据调取的具体数据请求。仍以上述旅游网站APP为例,在APP上搜索某旅游地区,如北京。对综合数据请求进行解析的过程是将该综合数据请求“北京”解析为“关于北京的游记请求”、“关于北京的攻略请求”、“北京的酒店请求”等多项具体数据请求。
上述多项具体数据请求所对应的基础数据在基础数据库中分别存储。在上述多项具体数据请求中设置有与相应基础数据相匹配的数据标识,即可以通过数据标识确认需要获取的基础数据。如“关于北京的游记请求”可以在该具体数据请求前标注a,通过识别带有a的“关于北京的游记请求”即可知道该具体数据请求是获取基础数据库中“关于北京的游记”的基础数据,其他具体数据请求与该“关于北京的游记请求”的形式相同。
本实施例中的综合数据请求除了上述的形式之外,还可以以其他形式存在。在一例中,多个APP同时发出综合数据请求,或者多个APP同时发出未标识有数据标识的具体数据,或者既有web网页发出的也有APP发出的综合数据请求,来获取基础数据库中的基础数据,均可以视作为一个综合数据请求,其最终为设置有数据标识的具体数据,根据设置有数据标识的具体数据对基础数据库中的基础数据进行获取。
通过对综合数据请求进行解析,获得具体数据请求,使得对基础数据的获取更具有针对性,使获得的基础数据更准确。
具体数据请求并行处理步骤120,协程调度具体数据请求。
在一些实施例中,多个具体数据请求可以同时对基础数据进行获取任务。在接收到多个具体数据请求后对该多个具体数据请求进行任务分配。确保多个具体数据请求均可以有相应的协程同时进行基础数据获取。在没有协程对应具体数据请求任务时创建协程进行基础数据获取;当其中一个或一些协程完成基础数据获取后,该协程空闲,其他后续的具体数据请求还可以重复使用该协程,提高了协程的复用率以及数据处理的效率。
在一些实施例中,所述数据请求解析步骤110,包括:对所述综合数据请求进行协议转换,得到按照http协议传输的综合数据请求。在一些实施例中,由于利用编程语言的多进程或多线程特性去并行获取、处理业务数据的方案完全依赖于网站所使用的编程语言,不同编程语言对多进程、多线程的支持程度及实现复杂度都不相同,实现成本较高,不通用,并行请求数量受内存等限制较大且不易扩展。本实施例中将不同编程语言的web页面或者APP所发出的综合数据请求进行协议转换,将综合数据请求转换为按照http协议传输的综合数据请求。避免了多种语言编程的web页面和APP发出的总和数据请求不能够被识别的弊端,提高了处理综合数据请求的范围。
本实施例通过将综合数据请求解析成具体数据请求后,分别同时对基础数据库中的基础数据进行获取,缩短了数据处理请求获取基础数据的时间,提高了数据处理的效率。
图2示出了本发明数据并行处理方法的另一些实施例的流程示意图,如图2所示,数据请求解析步骤110,包括:数据请求拆解步骤1101、数据请求标注步骤1102。下面对图2中的各步骤进行详细说明。
数据请求拆解步骤1101,对综合数据请求进行拆解,得到拆解后的数据请求。
在一些实施例中,将综合数据请求进行拆解,使拆解后的数据请求与基础数据更具有针对性。其中,对综合数据请求进行拆解所遵循的原则可以是以基础数据的类型进行拆解,方便依据拆解后的数据请求分别获取基础数据库中的基础数据。
数据请求标注步骤1102,对拆解后的数据请求分别标注数据标识,得到具体数据请求。
在一些实施例中,数据标识与基础数据库中的基础数据类型一一匹配,通过在拆解后的数据请求中设置数据标识,可以通过数据标识迅速匹配基础数据库中的基础数据类型,缩短了在基础数据库中查找与拆解后的数据请求相匹配的基础数据的时间,提高了数据处理的效率。
图3示出了本发明数据并行处理方法的另一些实施例的流程示意图,如图3所示,本实施例的具体数据请求并行处理步骤120包括:协程创建步骤1201,下面对图3中的步骤进行详细说明。
协程创建步骤1201,基于系统资源与具体数据请求数量,创建用于处理具体数据请求的协程,得到数据请求处理协程。
在一些实施例中,协程为基于golang的协程,基于golang的协程对具体数据请求进行调度。golang协程实现的http并行请求代理,通过为不同编程语言的网站提供通用的http代理服务(http代理服务在这里是网站服务器和提供业务数据的服务之间的服务,网站服务器将数据请求发给该http代理服务,http代理服务会据此去请求业务数据,并返回给网站的服务器。)屏蔽了不同编程语言网站对多进程、多线程实现的复杂度。不同编语言的网站只需按通用的http协议请求进行协议转换,http并行求情代理服务就可以实现并行处理业务数据的功能。http代理是通过socket编程实现的,通过守候协程监听建立的ip+port为标识的文件描述符,当有具体数据请求到达ip+port为标识的文件描述符时监听程序就会为网站建立一个基于tcp/ip的http连接,通过这个连接就可以实现接收网站的http请求参数和将基础数据返回给网站。
线程、进程与协程的主要区别是,线程和进程都是有操作系统内核管理,而协程完全是由程序管理。操作系统内核管理需要进行程序与操作系统内核之间的锁、上下文信息的交换,这些操作都是很耗费性能和内存的,而协程完全有程序控制,能够最大限度提升性能和内存使用效率。本实施例基于golang协程实现的http并行请求代理利用golang协程,占用很少的资源就能实现很高的并行具体数据请求数。在一例中,具体数据请求1获业务数据1,具体数据请求2获业务数据2,检测到系统负载和内存等资源丰富,且没有空闲的协程处理任务,此时创建两个新的协程去并行处理具体数据请求1和具体数据请求2。
继续参照图3,本实施例的具体数据请求并行处理步骤120还包括:协程复用步骤1202,通过数据请求处理协程,处理具体数据请求。
在一些实施例中,如果当具体数据请求1处理完成后,后续还有一个具体数据请求3待进行处理,此时协程调度任务检测到有空闲的协程,就会将具体数据请求3的请求交给此协程处理。如果检测到系统负载和内存资源不够,具体数据请求3将会排队等待资源释放。协程经过一次创建即可,在创建完成之后可以复用,再次处理具体数据请求的过程中无需再次创建,有助于具体数据请求以及获取的基础数据的快速传输,提高了数据传输的效率。
图4示出了本发明数据并行处理方法的另一些实施例的流程示意图,如图4所示,本实施例的数据并行处理方法,还包括基础数据库连接建立步骤130,下面对图4中的步骤进行详细说明。
基础数据库连接建立步骤130,数据请求处理协程与基础数据库建立socket连接。Socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是socket编程接口;http提供了封装或者显示数据的具体形式;socket提供了网络通信的能力。socket连接传输数据为字节级,传输数据可自定义,数据量小。传输数据时间短,性能高;适合于客户端和服务器端之间信息实时交互;可以加密,数据安全性强。采用socket连接解决了服务器上消耗资源的问题。避免了资源占用的缺陷。在一些实施例中,数据请求处理协程在处理具体数据请求的时候,需要与下游模块建立基于tcp/ip的socket连接作为数据传输的通道。
在一些实施例中,基础数据库与数据请求处理协程之间设置有http模块;基础数据库连接建立步骤130,包括:数据请求处理协程与基础数据库通过http模块建立连接。
图5示出了本发明数据并行处理方法的另一些实施例的流程示意图,本实施例的数据并行处理方法,如图5所示,在基础数据库连接建立步骤130之后,还包括连接维持步骤140,下面对图5中的步骤进行详细说明。
连接维持步骤140,基于连接池,维持数据请求处理协程与基础数据库的socket连接。
在一些实施例中,连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏,可以明显提高对数据库操作的性能。连接池将数据库连接作为对象存储在内存中,当需要访问基础数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个具体数据请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
本实施例通过连接池连接数据请求处理协程与基础数据库,使得基础数据库连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销;连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库连接获取和返回。
图6示出了本发明数据并行处理方法的另一些实施例的流程示意图,本实施例的数据并行处理方法,如图6所示,本实施例中所涉及的数据并行处理方法,还包括数据获取步骤150,基于数据标识,获取基础数据库中的基础数据,得到具体数据。
在一些实施例中,通过协程调度具体数据请求之后,具体数据请求到达基础数据库,对基础数据库中的基础数据与数据标识进行匹配,获得与数据标识匹配的基础数据,并基于具体数据请求获取对应的基础数据,该部分的基础数据以具体数据的形式被获取。
在一例中,对基础数据库中的不同基础数据可以同时进行基础数据获取的步骤;对基础数据库中的相同基础数据需要按照预设顺序进行获取。该预设顺序可以是具体数据请求的时间顺序。
图7示出了本发明数据并行处理方法的另一些实施例的流程示意图,本实施例的数据并行处理方法,如图7所示,在数据获取步骤150之后,还包括:数据返回步骤160,下面对图7中的步骤进行详细说明。
数据返回步骤160,基于维持数据请求处理协程与基础数据库的socket连接,将具体数据返回。基于上述的连接池建立的数据请求处理协程与基础数据库的socket连接,将具体数据返回至web页面或者APP。减少数据传输对系统资源的占用,提高了系统资源的利用率。
本发明实施例的另一方面,提供一种数据并行处理装置,图8为本发明数据并行处理装置一个实施例的结构示意图。如图8所示,本实施例装置包括:数据请求解析单元10、具体数据请求并行处理单元20。下面参照对本实施例的图8中的数据并行处理装置进行详细说明。
在本实施例的数据并行处理装置中,数据请求解析单元10用于对接收的综合数据请求协议转换后进行解析,得到至少两个具体数据请求,其中,所述具体数据请求设置有与基础数据库中的基础数据匹配的数据标识;具体数据请求并行处理单元20用于协程调度所述具体数据请求。
在一些实施例中,本发明中的综合数据请求可以是web页面发出的,也可以是APP发出的,其目的是通过综合数据请求调取网站服务器端的基础数据库中的基础数据。综合数据请求发出的web页面或者APP可以为计算机或可移动通讯设备,其中的可移动通讯设备可以是平板电脑、手机等可实现主动数据发送和接收的设备。本实施例对客户端的类型不做具体限定。
在一些实施例中,通过点击web页面或者APP上的显示界面的一个功能性按钮,即可获取基础数据库中的多种基础数据。例如,在某旅游网站的APP上搜索某旅游地区时,需要获取游记、攻略、酒店等业务数据组合后返回给该旅游网站的APP的显示界面。其实,该业务数据在该旅游网站的基础数据库中是分别存储的。
在上述旅游网站的APP上搜索某旅游地区时,即为向该旅游网站发送了一个综合数据请求。本实施例将该综合数据请求通过数据请求解析单元10进行解析,使该综合数据请求转换为多个针对基础数据调取的具体数据请求。仍以上述旅游网站APP为例,在APP上搜索某旅游地区,如北京。对综合数据请求进行解析的过程是将该综合数据请求“北京”解析为“关于北京的游记请求”、“关于北京的攻略请求”、“北京的酒店请求”等多项具体数据请求。
上述多项具体数据请求所对应的基础数据在基础数据库中分别存储。在上述多项具体数据请求中设置有与相应基础数据相匹配的数据标识,即可以通过数据标识确认需要获取的基础数据。如“关于北京的游记请求”可以在该具体数据请求前标注a,通过识别带有a的“关于北京的游记请求”即可知道该具体数据请求是获取基础数据库中“关于北京的游记”的基础数据,其他具体数据请求与该“关于北京的游记请求”的形式相同。
本实施例中的综合数据请求除了上述的形式之外,还可以以其他形式存在。在一例中,多个APP同时发出综合数据请求,或者多个APP同时发出未标识有数据标识的具体数据,或者既有web网页发出的也有APP发出的综合数据请求,来获取基础数据库中的基础数据,均可以视作为一个综合数据请求,其最终为设置有数据标识的具体数据,根据设置有数据标识的具体数据对基础数据库中的基础数据进行获取。
通过数据请求解析单元10对综合数据请求进行解析,获得具体数据请求,使得对基础数据的获取更具有针对性,使获得的基础数据更准确。
多个具体数据请求可以同时对基础数据进行获取任务。在接收到多个具体数据请求后,具体数据请求并行处理单元20对该多个具体数据请求进行任务分配。确保多个具体数据请求均可以有相应的协程同时进行基础数据获取。在没有协程对应具体数据请求任务时创建协程进行基础数据获取;当其中一个或一些协程完成基础数据获取后,该协程空闲,其他后续的具体数据请求还可以重复使用该协程,提高了协程的复用率以及数据处理的效率。
本实施例通过数据请求解析单元10将综合数据请求解析成具体数据请求后,具体数据请求并行处理单元20分别同时对基础数据库中的基础数据进行获取,缩短了数据处理请求获取基础数据的时间,提高了数据处理的效率。
在一些实施例中,所述数据请求解析单元10具体用于对所述综合数据请求进行协议转换,得到按照http协议传输的综合数据请求。由于利用编程语言的多进程或多线程特性去并行获取、处理业务数据的方案完全依赖于网站所使用的编程语言,不同编程语言对多进程、多线程的支持程度及实现复杂度都不相同,实现成本较高,不通用,并行请求数量受内存等限制较大且不易扩展。本实施例中将不同编程语言的web页面或者APP所发出的综合数据请求进行协议转换,将综合数据请求转换为按照http协议传输的综合数据请求。避免了多种语言编程的web页面和APP发出的总和数据请求不能够被识别的弊端,提高了处理综合数据请求的范围。
本实施例通过将综合数据请求解析成具体数据请求后,分别同时对基础数据库中的基础数据进行获取,缩短了数据处理请求获取基础数据的时间,提高了数据处理的效率。
图9示出了本发明的数据并行处理装置的另一实施例的结构示意图。如图9所示,本实施例的数据并行处理装置中所述数据请求解析单元10包括:数据请求拆解模块11与数据请求标注模块12,其中,数据请求拆解模块11用于对所述综合数据请求进行拆解,得到拆解后的数据请求;数据请求标注模块12,用于对所述拆解后的数据请求分别标注所述数据标识,得到所述具体数据请求。
在一些实施例中,通过数据请求拆解模块11将综合数据请求进行拆解,使拆解后的数据请求与基础数据更具有针对性。其中,对综合数据请求进行拆解所遵循的原则可以是以基础数据的类型进行拆解,方便依据拆解后的数据请求分别获取基础数据库中的基础数据。数据请求标注模块12对拆解后的数据请求中设置数据标识,其中,数据标识与基础数据库中的基础数据类型一一匹配。
通过数据标识迅速匹配基础数据库中的基础数据类型,缩短了在基础数据库中查找与拆解后的数据请求相匹配的基础数据的时间,提高了数据处理的效率。
图10示出了本发明的数据并行处理装置的另一实施例的结构示意图,如图10所示,所述具体数据请求并行处理单元20,包括协程创建模块21与协程复用模块22,其中,协程创建模块21用于基于系统资源与所述具体数据请求数量,创建用于处理具体数据请求的协程,得到数据请求处理协程。协程复用模块22用于通过所述数据请求处理协程,处理所述具体数据请求。
在一些实施例中,协程为基于golang的协程,具体数据请求并行处理单元20基于golang的协程对具体数据请求进行调度。golang协程实现的http并行请求代理,通过为不同编程语言的网站提供通用的http代理服务(http代理服务在这里是网站服务器和提供业务数据的服务之间的服务,网站服务器将数据请求发给该http代理服务,http代理服务会据此去请求业务数据,并返回给网站的服务器。)屏蔽了不同编程语言网站对多进程、多线程实现的复杂度。不同编语言的网站只需按通用的http协议对http并行求情代理服务进行请求,就可以实现并行处理业务数据的功能。http并行求情代理服务是通过socket编程实现的,通过守候协程监听建立的ip+port为标识的文件描述符,当有具体数据请求到达ip+port为标识的文件描述符时监听程序就会为网站建立一个基于tcp/ip的http连接,通过这个连接就可以实现接收网站的http请求参数和将基础数据返回给网站。
线程、进程与协程的主要区别是,线程和进程都是有操作系统内核管理,而协程完全是由程序管理。操作系统内核管理需要进行程序与操作系统内核之间的锁、上下文信息的交换,这些操作都是很耗费性能和内存的,而协程完全有程序控制,能够最大限度提升性能和内存使用效率。本实施例基于golang协程实现的http并行请求代理利用golang协程,占用很少的资源就能实现很高的并行具体数据请求数。在一例中,具体数据请求1获业务数据1,具体数据请求2获业务数据2,检测到系统负载和内存等资源丰富,且没有空闲的协程处理任务,此时创建两个新的协程去并行处理具体数据请求1和具体数据请求2。
如果当具体数据请求1处理完成后,后续还有一个具体数据请求3待进行处理,此时协程调度任务检测到有空闲的协程,就会将具体数据请求3的请求交给此协程处理。如果检测到系统负载和内存资源不够,具体数据请求3将会排队等待资源释放。协程经过一次创建即可,在创建完成之后可以复用,再次处理具体数据请求的过程中无需再次创建,有助于具体数据请求以及获取的基础数据的快速传输,提高了数据传输的效率。
在另一些实施例中,图11示出了本发明的数据并行处理装置的另一实施例的结构示意图,如图11所示,本实施例的装置还包括基础数据库连接建立单元30,用于数据请求处理协程与所述基础数据库建立socket连接。Socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是socket编程接口;http提供了封装或者显示数据的具体形式;socket提供了网络通信的能力。socket连接传输数据为字节级,传输数据可自定义,数据量小。传输数据时间短,性能高;适合于客户端和服务器端之间信息实时交互;可以加密,数据安全性强。
基础数据库连接建立单元30采用socket连接解决了服务器上消耗资源的问题,避免了资源占用的缺陷。在一些实施例中,数据请求处理协程在处理具体数据请求的时候,需要与下游模块建立基于tcp/ip的socket连接作为数据传输的通道。
图12示出了本发明的数据并行处理装置的另一实施例的结构示意图,如图12所示,在一些实施例中,装置还包括:连接维持单元40用于基于连接池,维持数据请求处理协程与所述基础数据库的socket连接。
在一些实施例中,连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏,可以明显提高对数据库操作的性能。连接池将数据库连接作为对象存储在内存中,当需要访问基础数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个具体数据请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
本实施例通过连接池连接数据请求处理协程与基础数据库,使得基础数据库连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销;连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库连接获取和返回。
图13示出了本发明的数据并行处理装置的另一实施例的结构示意图;参照图13,本实施例的数据并行处理装置还包括http模块70,http模块70与所述数据请求处理协程、所述基础数据库分别连接。http模块70使用户有机会检查传入的请求并根据该请求采取操作,还使用户有机会检查出站响应并修改它。
在一些实施例中,如图14示出的本发明的数据并行处理装置的另一实施例的结构示意图,本实施例中数据并行处理装置还包括数据获取单元50,用于基于所述数据标识,获取所述基础数据库中的基础数据,得到具体数据。
通过协程调度具体数据请求之后,具体数据请求到达基础数据库,对基础数据库中的基础数据与数据标识进行匹配,获得与数据标识匹配的基础数据,数据获取单元50并基于具体数据请求获取对应的基础数据,该部分的基础数据以具体数据的形式被获取。
在一例中,数据获取单元50对基础数据库中的不同基础数据可以同时进行基础数据获取的步骤;对基础数据库中的相同基础数据需要按照预设顺序进行获取。该预设顺序可以是具体数据请求的时间顺序。
继续参照图14,在另一些实施例中,数据并行处理装置还包括数据返回单元60,用于基于所述数据请求处理协程与所述基础数据库的socket连接,将所述具体数据返回。基于上述的连接池建立的数据请求处理协程与基础数据库的socket连接,将具体数据返回至web页面或者APP。减少数据传输对系统资源的占用,提高了系统资源的利用率。
本发明实施例的另一方面,提供一种电子设备。下面参考图15,其示出了适于用来实现本申请实施例的终端设备或服务器的电子设备的结构示意图。如图15所示,该电子设备该电子设备包括处理器和存储器。其中,存储器,用于存储处理器执行的指令;处理器,用于调用存储器存储的指令,并执行上述实施例涉及的数据并行处理方法。本发明实施例中处理器可调用存储器存储的指令,对接收的综合数据请求协议转换后进行解析,得到至少两个具体数据请求;协程调度所述具体数据请求。
其中,电子设备执行数据并行处理的过程,可参阅上述实施例描述的数据并行处理的实施过程,在此不再赘述。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在计算机上运行时,执行上述实施例涉及的数据并行处理方法。
本发明实施例还提供一种包含指令的计算机程序产品,当包含指令的计算机程序产品在计算机上运行时,使得计算机执行上述实施例涉及的数据并行处理方法。
在一个或多个可选实施方式中,本公开实施例还提供了一种计算机可读存储介质,用于存储计算机可读指令,该指令被执行时使得计算机执行上述任一可能的实现方式中的数据并行处理方法。在另一个可选例子中,该计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
尽管在附图中以特定的顺序描述操作,但是不应将其理解为要求按照所示的特定顺序或是串行顺序来执行这些操作,或是要求执行全部所示的操作以得到期望的结果。在特定环境中,多任务和并行处理可能是有利的。
本发明的方法和装置能够利用标准编程技术来完成,利用基于规则的逻辑或者其他逻辑来实现各种方法步骤。还应当注意的是,此处以及权利要求书中使用的词语“装置”和“模块”意在包括使用一行或者多行软件代码的实现和/或硬件实现和/或用于接收输入的设备。
此处描述的任何步骤、操作或程序可以使用单独的或与其他设备组合的一个或多个硬件或软件模块来执行或实现。在一个实施方式中,软件模块使用包括包含计算机程序代码的计算机可读介质的计算机程序产品实现,其能够由计算机处理器执行用于执行任何或全部的所描述的步骤、操作或程序。
出于示例和描述的目的,已经给出了本发明实施的前述说明。前述说明并非是穷举性的也并非要将本发明限制到所公开的确切形式,根据上述教导还可能存在各种变形和修改,或者是可能从本发明的实践中得到各种变形和修改。选择和描述这些实施例是为了说明本发明的原理及其实际应用,以使得本领域的技术人员能够以适合于构思的特定用途来以各种实施方式和各种修改而利用本发明。
Claims (10)
1.一种数据并行处理方法,其中,包括:
数据请求解析步骤,对接收的综合数据请求协议转换后进行解析,得到至少两个具体数据请求,其中,所述具体数据请求设置有与基础数据库中的基础数据匹配的数据标识;
具体数据请求并行处理步骤,协程调度所述具体数据请求。
2.根据权利要求1所述的方法,其中,所述数据请求解析步骤,包括:对所述综合数据请求进行协议转换,得到按照http协议传输的综合数据请求。
3.根据权利要求1或2所述的方法,其中,所述数据请求解析步骤,包括:
数据请求拆解步骤,对所述综合数据请求进行拆解,得到拆解后的数据请求;
数据请求标注步骤,对所述拆解后的数据请求分别标注所述数据标识,得到所述具体数据请求。
4.根据权利要求1所述的方法,其中,所述具体数据请求并行处理步骤,包括:
协程创建步骤,基于系统资源与所述具体数据请求数量,创建用于处理具体数据请求的协程,得到数据请求处理协程。
5.根据权利要求1所述的方法,其中,所述数据请求处理协程为基于golang的协程;
所述具体数据请求并行处理步骤,包括:
基于golang的协程对所述具体数据请求进行调度。
6.根据权利要求5所述的方法,其中,所述具体数据请求并行处理步骤,还包括:
协程复用步骤,通过所述数据请求处理协程,处理所述具体数据请求。
7.根据权利要求5所述的方法,其中,所述方法,还包括:
基础数据库连接建立步骤,数据请求处理协程与所述基础数据库建立socket连接。
8.一种数据并行处理装置,其中,包括:
数据请求解析单元,用于对接收的综合数据请求协议转换后进行解析,得到至少两个具体数据请求,其中,所述具体数据请求设置有与基础数据库中的基础数据匹配的数据标识;
具体数据请求并行处理单元,用于协程调度所述具体数据请求。
9.一种电子设备,其中,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现权利要求1-7任一所述的数据并行处理方法。
10.一种计算机可读存储介质,存储有计算机程序,其中,所述计算机程序被处理器执行时,实现权利要求1-7任一所述的数据并行处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910148958.8A CN109995758A (zh) | 2019-02-28 | 2019-02-28 | 数据并行处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910148958.8A CN109995758A (zh) | 2019-02-28 | 2019-02-28 | 数据并行处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109995758A true CN109995758A (zh) | 2019-07-09 |
Family
ID=67130507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910148958.8A Pending CN109995758A (zh) | 2019-02-28 | 2019-02-28 | 数据并行处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109995758A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990667A (zh) * | 2019-10-29 | 2020-04-10 | 内蒙古大学 | 一种基于协程技术的多端大学生电子档案管理系统 |
CN112613276A (zh) * | 2020-12-28 | 2021-04-06 | 南京中孚信息技术有限公司 | 一种流式文档解析的并行执行方法及系统 |
CN114697293A (zh) * | 2022-03-30 | 2022-07-01 | 西安北方华创微电子装备有限公司 | 一种数据传输方法、下位机和控制器 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130036192A1 (en) * | 2011-08-04 | 2013-02-07 | Wyse Technology Inc. | System and method for client-server communication facilitating utilization of network-based procedure call |
CN104852941A (zh) * | 2014-02-18 | 2015-08-19 | 郑建锋 | 面向区域的Web服务系统及方法 |
CN105956481A (zh) * | 2015-09-17 | 2016-09-21 | 中国银联股份有限公司 | 一种数据处理方法及其装置 |
CN108108458A (zh) * | 2017-12-28 | 2018-06-01 | 广州南方人才资讯科技有限公司 | 基于域名共享人才资源数据的方法及装置 |
CN108509282A (zh) * | 2018-02-08 | 2018-09-07 | 厦门快商通信息技术有限公司 | 基于golang反射技术的rpc跨语言调用服务治理方法 |
CN108900591A (zh) * | 2018-06-19 | 2018-11-27 | 广州市捍御者信息科技有限公司 | 基于高并发语言的物联网接入模块 |
CN109165905A (zh) * | 2018-06-26 | 2019-01-08 | 北京炎黄盈动科技发展有限责任公司 | 业务流程数据的处理方法、装置、设备及可读存储介质 |
-
2019
- 2019-02-28 CN CN201910148958.8A patent/CN109995758A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130036192A1 (en) * | 2011-08-04 | 2013-02-07 | Wyse Technology Inc. | System and method for client-server communication facilitating utilization of network-based procedure call |
CN104852941A (zh) * | 2014-02-18 | 2015-08-19 | 郑建锋 | 面向区域的Web服务系统及方法 |
CN105956481A (zh) * | 2015-09-17 | 2016-09-21 | 中国银联股份有限公司 | 一种数据处理方法及其装置 |
CN108108458A (zh) * | 2017-12-28 | 2018-06-01 | 广州南方人才资讯科技有限公司 | 基于域名共享人才资源数据的方法及装置 |
CN108509282A (zh) * | 2018-02-08 | 2018-09-07 | 厦门快商通信息技术有限公司 | 基于golang反射技术的rpc跨语言调用服务治理方法 |
CN108900591A (zh) * | 2018-06-19 | 2018-11-27 | 广州市捍御者信息科技有限公司 | 基于高并发语言的物联网接入模块 |
CN109165905A (zh) * | 2018-06-26 | 2019-01-08 | 北京炎黄盈动科技发展有限责任公司 | 业务流程数据的处理方法、装置、设备及可读存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990667A (zh) * | 2019-10-29 | 2020-04-10 | 内蒙古大学 | 一种基于协程技术的多端大学生电子档案管理系统 |
CN112613276A (zh) * | 2020-12-28 | 2021-04-06 | 南京中孚信息技术有限公司 | 一种流式文档解析的并行执行方法及系统 |
CN114697293A (zh) * | 2022-03-30 | 2022-07-01 | 西安北方华创微电子装备有限公司 | 一种数据传输方法、下位机和控制器 |
CN114697293B (zh) * | 2022-03-30 | 2023-11-10 | 西安北方华创微电子装备有限公司 | 一种数据传输方法、下位机和控制器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109933522B (zh) | 一种自动化用例的测试方法、测试系统及存储介质 | |
CN110310034A (zh) | 一种应用于SaaS的服务编排、业务流程处理方法和装置 | |
RU2648966C2 (ru) | Устройство и способ для обработки множества открытых api | |
CN109995758A (zh) | 数据并行处理方法及装置 | |
US10977076B2 (en) | Method and apparatus for processing a heterogeneous cluster-oriented task | |
WO2017071266A1 (zh) | 一种业务和资源编排的系统、方法及装置 | |
CN101630272B (zh) | 进程调度方法和系统 | |
CN110324169A (zh) | 一种接口管理的方法和装置 | |
CN101976199A (zh) | 面向对象的中间件分布式系统开发平台 | |
CN113094674B (zh) | 页面展示方法、装置、电子设备及存储介质 | |
CN108182138A (zh) | Bmc sel日志的获取方法、系统、装置及存储介质 | |
CN108416568A (zh) | 政务业务数据处理方法、装置及终端设备 | |
CN109815107A (zh) | 自动化测试的方法和装置 | |
US20200028743A1 (en) | Dynamic product installation based on user feedback | |
CN103246547A (zh) | 远程调用对象的方法和系统 | |
CN109298948A (zh) | 分布式计算方法和系统 | |
CN104239000A (zh) | 用于对用于在应用处理的传入消息定序的计算机系统、计算机实施的方法和计算机程序产品 | |
KR20210129584A (ko) | 동적으로 할당된 클라우드 작업자 관리 시스템 및 그의 방법 | |
CN116414370A (zh) | 基于低代码的平台构建方法、装置、介质及电子设备 | |
US20160239275A1 (en) | Generating an integrated service | |
CN102902620A (zh) | 基于gdb的异构计算调试环境的实现系统 | |
CN114237853A (zh) | 应用于异构系统的任务执行方法、装置、设备、介质和程序产品 | |
US20220067659A1 (en) | Research and development system and method | |
CN113179269A (zh) | 基于物联网的协议数据解析方法、系统、介质及程序产品 | |
CN109783201A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190709 |
|
RJ01 | Rejection of invention patent application after publication |