CN105373420B - 数据传输方法及装置 - Google Patents
数据传输方法及装置 Download PDFInfo
- Publication number
- CN105373420B CN105373420B CN201410433031.6A CN201410433031A CN105373420B CN 105373420 B CN105373420 B CN 105373420B CN 201410433031 A CN201410433031 A CN 201410433031A CN 105373420 B CN105373420 B CN 105373420B
- Authority
- CN
- China
- Prior art keywords
- client
- database
- thread
- data
- network event
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据传输方法及装置,该方法中间件分配第一线程将数据发送至客户端或数据库之后,便释放该第一线程,使该第一线程转变为空闲状态,以便分配给其他客户端或处理其他业务,同时,中间件会在监听到客户端和数据库之间出现指定的网络事件后,为客户端和数据库重新分配第二线程以进行数据的传输,从而,不仅节省了中间件内有限的线程资源为客户端和数据库间的数据传输提供数据服务,也有效提升了线程的利用率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据传输方法及装置。
背景技术
随着信息技术的发展,用户通过客户端可以访问互联网以获取所需的各类数据。互联网中各类数据存储在不同的数据库(如MySQL数据库、Oracle数据库等)中,也就是说用户通过网络途径访问相应的数据库来获取所需的数据。
在现有技术中,通常在数据库和客户端之间设置有中间件(一种数据中转设备),以管理数据库与大量客户端之间的连接交互,并为各客户端提供数据服务,即客户端与数据库之间通过中间件进行数据传输。
中间件中含有多个提供数据服务的线程,每一个线程会被分配给一个客户端,为该客户端提供数据服务,当一个线程接收了一个客户端的数据请求后,该线程会将该数据请求转发至数据库,并等待数据库对该数据请求进行处理的结果,之后,该线程再把结果反馈至发出数据请求的客户端中。
但是,数据库会接收到大量的数据请求,并行处理数据请求的数量有限,也就是说,线程将数据请求转发给数据库后,数据请求可能处于等待队列中,而且,数据库对数据请求进行处理本身会需要一定的时间(几秒至几十秒不等),不能够立刻就生成处理结果,那么在这段时间中,线程会一直处于等待状态(该状态下,线程不能处理其他业务),直到接收到数据库反馈的处理的结果,再将该结果转发至客户端后,才能为其他客户端提供数据服务或处理其他业务,因此,造成了线程资源的浪费,也导致了线程利用率低。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据传输方法及装置,能够有效节约现有的客户端和数据库之间在进行数据通信的过程中所使用的线程,提升了线程的利用率。
根据本发明的第一个方面,提出一种数据传输方法,用于在客户端与服务器之间通过中间件进行数据传输,该方法包括:
所述中间件为所述客户端和数据库分配第一线程,使所述客户端和数据库通过所述第一线程传输数据;
所述中间件在所述线程完成所述数据的传输后,释放该第一线程;
监听所述客户端和数据库的网络事件;
当监听到指定网络事件后,重新为所述客户端和数据库分配第二线程。
可选地,所述数据包括:所述客户端向所数据库发送的第一数据,或,所述数据库向所述客户端发送的第二数据;
所述指定网络事件包括:所述数据库根据所述第一数据生成第一响应数据的网络事件,或,所述客户端根据所述第二数据生成第二响应数据的网络事件。
可选地,当监听到指定网络事件后,重新为所述客户端和数据库分配第二线程,具体包括:
当监听到所述数据库根据所述第一数据生成所述第一响应数据的网络事件时,所述中间件重新为所述客户端和数据库分配第二线程,使所述数据库通过重新分配的第二线程将该第一响应数据传输至所述客户端;或者
当监听到所述客户端根据所述第二数据生成所述第二响应数据时,所述中间件重新为所述客户端和数据库分配第二线程,使所述客户端通过重新分配的第二线程将该第二响应数据传输至所述数据库。
可选地,所述指定网络事件还包括:所述客户端或数据库的存储空间未饱和的网络事件;
当监听到指定网络事件后,重新为所述客户端和数据库分配第二线程,具体包括:
当监听到所述数据库根据所述第一数据生成所述第一响应数据的网络事件,以及所述客户端的存储空间未饱和的网络事件时,所述中间件重新为所述客户端和数据库分配第二线程,使所述数据库通过重新分配的第二线程将该第一响应数据传输至所述客户端;或者
当监听到所述客户端根据所述第二数据生成第二响应数据的网络事件,以及所述数据库的存储空间未饱和的网络事件时,所述中间件重新为所述客户端和数据库分配第二线程,使所述客户端通过重新分配的第二线程将该第二响应数据传输至所述数据库。
可选地,重新为所述客户端和数据库分配第二线程,具体包括:
将所述客户端和数据库传输所述数据所使用的第一线程作为第二线程,重新分配给所述客户端和数据库。
根据本发明的第二个方面,提出一种数据传输装置,用于在客户端和服务器进行数据传输,所述装置包括:第一分配模块、释放模块、监听模块以及第二分配模块,其中,
所述第一分配模块,用于为所述客户端和数据库分配第一线程,使所述客户端和数据库通过所述第一线程传输数据;
所述释放模块,用于在所述线程完成所述数据的传输后,释放该第一线程;
所述监听模块,用于监听所述客户端和数据库的网络事件;
所述第二分配模块,用于当监听到指定网络事件后,重新为所述客户端和数据库分配第二线程。
可选地,所述数据包括:所述客户端向所数据库发送的第一数据,或,所述数据库向所述客户端发送的第二数据;
所述指定网络事件包括:所述数据库根据所述第一数据生成第一响应数据的网络事件,或,所述客户端根据所述第二数据生成第二响应数据的网络事件。
可选地,所述第二分配模块,具体用于:
当监听到所述数据库根据所述第一数据生成所述第一响应数据的网络事件时,重新为所述客户端和数据库分配第二线程,使所述数据库通过重新分配的第二线程将该第一响应数据传输至所述客户端;或者
当监听到所述客户端根据所述第二数据生成所述第二响应数据时,重新为所述客户端和数据库分配第二线程,使所述客户端通过重新分配的第二线程将该第二响应数据传输至所述数据库。
可选地,所述指定网络事件还包括:所述客户端或数据库的存储空间未饱和的网络事件;所述第二分配模块,具体用于:
当监听到所述数据库根据所述第一数据生成所述第一响应数据的网络事件,以及所述客户端的存储空间未饱和的网络事件时,重新为所述客户端和数据库分配第二线程,使所述数据库通过重新分配的第二线程将该第一响应数据传输至所述客户端;或者
当监听到所述客户端根据所述第二数据生成第二响应数据的网络事件,以及所述数据库的存储空间未饱和的网络事件时,重新为所述客户端和数据库分配第二线程,使所述客户端通过重新分配的第二线程将该第二响应数据传输至所述数据库。
可选地,所述第二分配模块,具体用于:
将所述客户端和数据库传输所述数据所使用的第一线程作为第二线程,重新分配给所述客户端和数据库。
根据本发明提供的线程管理方法,中间件分配第一线程将数据发送至客户端或数据库之后,便释放该第一线程,使该第一线程转变为空闲状态,以便分配给其他客户端或处理其他业务,同时,中间件会在监听到客户端和数据库之间出现指定的网络事件后,为客户端和数据库重新分配第二线程以进行数据的传输,从而,不仅节省了中间件内有限的线程资源为客户端和数据库间的数据传输提供数据服务,也有效提升了线程的利用率。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为依据本发明一个实施例的数据传输方法流程示意图;
图2至5分别为依据本发明一个实施例在实际应用场景中客户端、中间件以及数据库的连接架构示意图;
图6为依据本发明一个实施例的数据传输装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
下面结合说明书附图,对本发明实施例进行详细描述。
图1为依据本发明一个实施例的数据传输方法,该实施例中客户端与服务器通过中间件相连接,可以包括步骤:
S101:所述中间件为所述客户端和数据库分配第一线程,使所述客户端和数据库通过所述第一线程传输数据。
S102:所述中间件在所述第一线程完成所述数据的传输后,释放该第一线程。
S103:监听所述客户端和数据库的网络事件。
S104:当监听到指定网络事件后,重新为所述客户端和数据库分配第二线程。
从上述可知,在该实施例中,中间件分配第一线程将数据发送至客户端或数据库之后,便释放该第一线程,使该第一线程转变为空闲状态,以便分配给其他客户端或处理其他业务,同时,中间件会在监听到客户端和数据库之间出现指定的网络事件后,为客户端和数据库重新分配第二线程以进行数据的传输,从而,不仅节省了中间件内有限的线程资源为客户端和数据库间的数据传输提供数据服务,也有效提升了线程的利用率。
依据本发明的一个实施例,所述数据包括:所述客户端向所数据库发送的第一数据,或,所述数据库向所述客户端发送的第二数据。其中,客户端发出的第一数据具体可以是不同类型的数据请求,如:读数据请求和写数据请求,也可以是上传至数据库的文件数据、备份数据等。数据库发出的第二数据具体可以是推送至客户端的更新数据、文件数据、备份数据等。
所述的第一数据和第二数据由所述中间件分配的第一线程完成传输,在实际应用中,对于数据库而言,数据库在接收了第一数据后,对该第一数据进行处理需要一定的时间,另外,同一数据库可能会通过中间件同时连接多个客户端,在数据传输后,数据库将同时处理多个客户端发来的多个数据,而由于数据库自身硬件条件的限制,数据库同时并行处理数据的数量有限,就造成了数据在数据库中的等待状态。对于客户端而言,客户端在接收了第二数据后,对该第二数据的处理同样需要一定的时间,便造成了所述第二数据在该客户端中也进入等待状态。
所以,在上述步骤S102中,为了提升数据传输效率,一旦中间件监控到其所分配的第一线程已将数据发送至数据库或客户端中后,中间件便立即释放该第一线程,使该第一线程处于空闲状态,以便处理其他数据业务。
依据本发明的一个实施例,中间件将第一数据发送至数据库,或将第二数据发送至客户端后,客户端或数据库均会对接收到的数据进行处理,并且在对数据进行处理后产生响应,发送相应的响应数据,即此时客户端或数据库会出现相应的网络事件。如此一来,中间件就需要在完成第一数据和第二数据的传输后,对客户端和数据库的网络事件进行监听。
当然,依据本发明的一个实施例,客户端和数据库会出现多种网络事件,并不是所有的网络事件都与中间件分配线程有关,例如客户端向数据库建立连接的网络事件,并不会由中间件分配线程来完成连接的建立。所以在上述步骤S103中,中间件就需要监听与数据传输有关的指定网络事件,其中,所述指定网络事件包括:所述数据库根据所述第一数据生成第一响应数据的网络事件,或,所述客户端根据所述第二数据生成第二响应数据的网络事件。
具体的,当数据库根据所述第一数据生成第一响应数据的网络事件出现时,就表示数据库在接收到客户端发送的第一数据后进行了处理并产生了响应。例如:客户端发出下载请求(即第一数据),由中间件分配的第一线程将该下载请求发送至数据库,数据库在接收到该下载请求后,调取出与该下载请求对应的数据,该数据就是数据库根据下载请求作出的响应,即第一响应数据。
同样,当客户端根据所述第二数据生成第二响应数据的网络事件出现时,就表示客户端在接收到数据库发送的第二数据后进行了处理并产生了响应,客户端作出响应而生成的数据便是第二响应数据。
其中,第一响应数据,例如可以是数据库根据客户端发出的第一数据而产生的与该第一数据对应的数据,如:与下载请求对应的下载数据、与查询请求对应的查询结果数据等。第二响应数据,例如可以是客户端根据数据库发出的第二数据而产生的与该第二数据对应的数据,如:客户端根据数据库的安全指令数据反馈的认证数据等。
依据本发明的一个实施例,对于步骤S104而言,可以包括:当监听到所述数据库根据所述第一数据生成所述第一响应数据的网络事件时,所述中间件重新为所述客户端和数据库分配第二线程,使所述数据库通过重新分配的第二线程将该第一响应数据传输至所述客户端,或者,当监听到所述客户端根据所述第二数据生成所述第二响应数据时,所述中间件重新为所述客户端和数据库分配第二线程,使所述客户端通过重新分配的第二线程将该第二响应数据传输至所述数据库。
依据本发明的另一实施例,客户端或数据库在同时处理数据时(如:数据库接收多个客户端发送的数据进行处理,或,客户端处理多个数据库发送的数据),会出现存储空间(如,缓存)饱和的情况,在这种情况下,客户端或数据库无法再接收外部发来的数据,而是需等待当前的数据处理完成后,再接收数据,那么,如果在客户端或数据库的存储空间处于饱和状态下,中间件向客户端发送第一响应数据或向数据库发送第二响应数据,必然会导致发送失败,所以,中间件还需要对客户端或数据库的存储空间进行监听。
所以,本发明实施例中所述的指定网络事件除了包括数据库根据第一数据生成第一响应数据的网络事件和客户端根据第二数据生成第二响应数据的网络事件以外,还包括:所述客户端或数据库的存储空间未饱和的网络事件。在这样的情况下,对于所述步骤S104而言,可以包括:当监听到所述数据库根据所述第一数据生成所述第一响应数据的网络事件,以及所述客户端的存储空间未饱和的网络事件时,所述中间件重新为所述客户端和数据库分配第二线程,使所述数据库通过重新分配的第二线程将该第一响应数据传输至所述客户端,或者,当监听到所述客户端根据所述第二数据生成第二响应数据的网络事件,以及所述数据库的存储空间未饱和的网络事件时,所述中间件重新为所述客户端和数据库分配第二线程,使所述客户端通过重新分配的第二线程将该第二响应数据传输至所述数据库。
依据本发明的一个实施例,对于步骤S104中重新为所述客户端和数据库分配第二线程,具体包括:将所述客户端和数据库传输所述数据所使用的第一线程作为第二线程,重新分配给所述客户端和数据库。
结合图2至5,本发明所述的数据传输方法的具体实际应用如下:
图2至5,示出了在实际应用中,客户端、中间件以及数据库的连接架构,其中,数据库为MySQL数据库,客户端C1~C4分别通过中间件同时与MySQL数据库连接,客户端C1~C4和MySQL数据库之间的数据通过中间件分配的线程进行传输,并设定客户端C1~C4与中间件以及中间件与该MySQL数据库的连接都基于TCP协议。这里需要说明的是,图中四个客户端C1~C4分别按照编号顺序与该MySQL数据库进行数据传输,虚线表示已建立连接,但未进行数据传输。
在图2中,客户端C1想要在MySQL数据库进行数据查询,具体包括步骤:
步骤一:所述中间件为客户端C1和MySQL数据库分配线程TR1,将客户端C1发出的查询请求通过该线程TR1传输至MySQL数据库。
步骤二:线程TR1将查询请求传输至MySQL数据库后,中间件释放该线程TR1。
步骤三:中间件监听客户端C1和MySQL数据库之间的指定网络事件。
步骤四:当监听到MySQL数据库根据查询请求生成对应的查询结果数据,以及客户端C1的存储空间未饱和的网络事件时,中间件重新为客户端C1和MySQL数据库分配第二线程,使MySQL数据库通过重新分配的第二线程将查询结果数据传输至所述客户端C1。
对于上述客户端C1发出的查询请求,就是所述的第一数据,该客户端C1所发出的查询请求可以是基于结构化查询语言(Structured Query Language,SQL)的查询请求,如:若客户端C1想要查询MySQL数据库中某一数据表中的某一项数据,则该客户端C1的查询请求采用“SELECT数据项名称FROM数据表名称”的语句,当然,这里并不构成对本发明的限定。
中间件在该客户端C1与MySQL数据库建立连接后,就会自动分配一个线程为该客户端C1和MySQL数据库之间提供数据传输服务,即传输客户端C1向MySQL数据库发送的第一数据,或,该MySQL数据库向所述客户端C1发送的第二数据,此时,中间件分配的线程就是第一线程,也即线程TR1。
依据本发明的一个实施例,若客户端C1与MySQL数据库建立连接后,在预先设定的时间内并未进行传输数据,则中间件可以释放已经分配的线程TR1,使该线程TR1为其他客户端进行数据传输服务。中间件监听该客户端C1和MySQL数据库的指定网络事件,当监听到该客户端C1和MySQL数据库之间进行数据传输时,中间件再为该客户端C1和MySQL数据库分配线程TR1,以传输数据。对于上述预先设定的时间,将由中间件进行设定,而且,在一种可行的方式下,中间件可以根据可分配的空闲线程的数量对该时间进行动态的设定,在可分配的空闲线程数量较多时,可以延长该时间,否则缩短该时间。当然,这里对时间的设定并不构成对本发明的限定。
对于上述步骤三,指定的网络事件包括:MySQL数据库根据客户端C1发送的查询请求生成查询结果数据的网络事件,以及,客户端C1的存储空间未饱和的网络事件。其中,这里的查询结果数据就是第一响应数据。
这里需要说明的是,在步骤四中,作为一种优选方式,中间件为客户端C1和MySQL数据库之间重新分配的第二线程仍为线程TR1,这是因为该线程TR1在将客户端C1的查询数据传输至MySQL数据库的过程中,该线程TR1内设置有与该客户端C1相关的参数,如:客户端C1的互联网协议(Internet Protocol,IP)地址、传输端口号等,故重新分配该线程TR1时,无需再次设置相关的参数。但若该线程TR1在传输完查询请求释放后,分配给了其他客户端,则中间件会在线程TR2~4中选择任一处于空闲状态的线程作为第二线程,重新分配给客户端C1和MySQL数据库。
在图3中,客户端C2想要从MySQL数据库中进行数据读取,具体包括步骤:
步骤一:所述中间件为客户端C2和MySQL数据库分配线程TR2,将客户端C2发出的读取请求通过该线程TR2传输至MySQL数据库。
步骤二:线程TR2将读取请求传输至MySQL数据库后,中间件释放该线程TR2。
步骤三:中间件监听客户端C2和MySQL数据库之间的指定网络事件。
步骤四:当监听到MySQL数据库根据读取请求生成对应的读取结果数据的网络事件,但未监听到客户端C2的存储空间未饱和的网络事件时,中间件不为客户端C2和MySQL数据库重新分配第二线程,并继续监听客户端C2的存储空间未饱和的网络事件。
步骤五:当监听到客户端C2的存储空间未饱和的网络事件时,中间件重新为客户端C2和MySQL数据库分配第二线程,使MySQL数据库通过重新分配的第二线程将读取结果数据传输至所述客户端C2。
上述客户端C2发出的读取请求,就是所述的第一数据,MySQL数据库根据该读取请求所生成的读取结果数据就是所述的第一响应数据。
对于上述步骤三,指定的网络事件包括:MySQL数据库根据客户端C2发送的读取请求生成读取结果数据的网络事件,以及,客户端C2的存储空间未饱和的网络事件。
在MySQL数据库根据客户端C2发送的读取请求生成读取结果数据后,MySQL数据库会通知中间件,表明该读取结果数据可以进行传输。但是若客户端C2出现存储空间饱和的情况,则将导致读取结果数据的传输失败。中间件未监听到客户端C2的存储空间未饱和的网络事件,就表明该客户端C2的存储空间已经饱和,不能再接收传输的读取结果数据,所以在步骤四中,中间件处于等待状态,也不会重新分配第二线程。只有在中间件同时监听到上述两种网络事件时,才会重新分配第二线程,将该读取结果数据传输至客户端C2,即上述步骤五。
对于上述步骤五,优选地,中间件为客户端C2和MySQL数据库之间重新分配的第二线程仍为线程TR2。
在图4中,客户端C3与MySQL数据库连接后,该MySQL数据库向该客户端C3发送安全指令数据,以确定该客户端C3是否为认证客户端,具体包括步骤:
步骤一:所述中间件为MySQL数据库和客户端C3分配线程TR3,将MySQL数据库发出的安全指令数据通过该线程TR3传输至客户端C3。
步骤二:线程TR3将安全指令数据传输至客户端C3后,中间件释放该线程TR3。
步骤三:中间件监听MySQL数据库和客户端C3之间的指定网络事件。
步骤四:当监听到客户端C3根据安全指令数据生成对应的身份认证数据以及MySQL数据库的存储空间未饱和的网络事件时,中间件重新为MySQL数据库和客户端C3分配第二线程,使客户端C3通过重新分配的第二线程将身份认证数据传输至MySQL数据库。
上述MySQL数据库发出的安全指令数据,就是所述的第二数据,客户端C1根据该安全指令数据所生成的身份认证数据就是所述的第二响应数据。
对于上述步骤三,指定的网络事件包括:客户端C3根据MySQL数据库发送的安全指令数据生成身份认证数据的网络事件,以及,MySQL数据库的存储空间未饱和的网络事件。
对于上述步骤四,优选地,中间件为MySQL数据库和客户端C3之间重新分配的第二线程仍为线程TR3。
在图5中,客户端C4与MySQL数据库连接后,该MySQL数据库向该客户端C4推送更新数据,具体包括步骤:
步骤一:所述中间件为MySQL数据库和客户端C4分配线程TR4,将MySQL数据库发出的更新数据通过该线程TR4传输至客户端C4。
步骤二:线程TR4将更新数据传输至客户端C4后,中间件释放该线程TR4。
步骤三:中间件监听MySQL数据库和客户端C4之间的指定网络事件。
步骤四:当监听到客户端C4根据更新数据生成对应的更新反馈数据的网络时间,但未监听到MySQL数据库的存储空间未饱和的网络事件时,中间件不为MySQL数据库和客户端C4重新分配第二线程,并继续监听MySQL数据库的存储空间未饱和的网络事件。
步骤五,当监听到MySQL数据库的存储空间未饱和的网络事件时,中间件重新为MySQL数据库和客户端C4分配第二线程,使客户端C4通过重新分配的第二线程将更新反馈数据传输至MySQL数据库。
上述MySQL数据库发出的更新数据,就是所述的第二数据,客户端C1根据该更新数据所生成的更新反馈数据就是所述的第二响应数据。
对于上述步骤三,指定的网络事件包括:客户端C4根据MySQL数据库发送的更新数据生成更新反馈数据的网络事件,以及,MySQL数据库的存储空间未饱和的网络事件。
在客户端C4根据MySQL数据库发送的更新数据生成更新反馈数据后,客户端C4会通知中间件,表明该更新反馈数据可以进行传输。但是若MySQL数据库出现存储空间饱和的情况,则将导致更新反馈数据的传输失败。中间件未监听到MySQL数据库的存储空间未饱和的网络事件,就表明该MySQL数据库的存储空间已经饱和,不能再接收传输的更新反馈数据,所以在步骤四中,中间件处于等待状态,也不会重新分配第二线程,只有在中间件同时监听到上述两种网络事件时,才会重新分配第二线程,将该更新反馈数据传输至MySQL数据库,即上述步骤五。
对于上述步骤五,优选地,中间件为MySQL数据库和客户端C4之间重新分配的第二线程仍为线程TR4。
在上述实际应用场景中,可能会出现由于断电、网络拥塞等原因造成的客户端突然离线的情况,如果中间件监听到这样的情况出现,会将由此原因造成的客户端离线作为一种特殊的网络事件进行处理,即,客户端已将相应的数据通过中间件分配的线程进行传输,那么,中间件监听到该客户端突然离线,也会根据数据处理的状态继续分配线程传输数据。以图2为例:客户端C1通过中间件分配的线程TR1将查询请求传输至MySQL数据库后,MySQL数据库会对该查询请求进行处理,该中间件释放该线程TR1,中间件会监听客户端C1和MySQL数据库之间的网络事件。此时,中间件监听到该客户端C1突然离线的网络事件,而MySQL数据库已经根据该客户端C1的查询请求生成了对应的查询结果数据,中间件也会监听到MySQL数据库生成了查询结果数据的网络事件,那么,中间件仍会分配第二线程,将该查询结果数据传输至该中间件自身进行缓存,然后中间件再释放该第二线程,监听客户端C1重新上线的网络事件。一旦监听到该客户端C1重新上线,且连接到该中间件时,该中间件再分配第三线程将缓存的查询结果数据发送至客户端C1中。这样一来,即使客户端C1重新上线,也不需要向MySQL数据库发出请求重新获取查询结果数据,而是由中间件直接分配线程将查询结果数据传输至该客户端C1中,有效增加了数据传输的效率及便捷性。
当然,上述中间件分配的第二线程和第三线程,在优选方式下,是分配给该客户端C1和MySQL数据库的第一线程,即线程TR1。
以上为本发明实施例提供的数据传输方法,基于同样的思路,本发明实施例还提供一种数据传输装置,如图6所示。
图6中的数据传输装置,设置在中间件中,用于在客户端和服务器之间进行数据传输,所述装置包括:第一分配模块601、释放模块602、监听模块603以及第二分配模块604,其中,
所述第一分配模块601,用于为所述客户端和数据库分配第一线程,使所述客户端和数据库通过所述第一线程传输数据。
所述释放模块602,用于在所述线程完成所述数据的传输后,释放该第一线程。
所述监听模块603,用于监听所述客户端和数据库的网络事件。
所述第二分配模块604,用于当监听到指定网络事件后,重新为所述客户端和数据库分配第二线程。
在本发明的一个实施例中,所述数据包括:所述客户端向所数据库发送的第一数据,或,所述数据库向所述客户端发送的第二数据。所述指定网络事件包括:所述数据库根据所述第一数据生成第一响应数据的网络事件,或,所述客户端根据所述第二数据生成第二响应数据的网络事件。
具体地,所述第二分配模块604,具体用于:当监听到所述数据库根据所述第一数据生成所述第一响应数据的网络事件时,重新为所述客户端和数据库分配第二线程,使所述数据库通过重新分配的第二线程将该第一响应数据传输至所述客户端,或者,当监听到所述客户端根据所述第二数据生成所述第二响应数据时,重新为所述客户端和数据库分配第二线程,使所述客户端通过重新分配的第二线程将该第二响应数据传输至所述数据库。
在本发明的另一个实施例中,所述指定网络事件还包括:所述客户端或数据库的存储空间未饱和的网络事件。
具体地,所述第二分配模块604,具体用于:当监听到所述数据库根据所述第一数据生成所述第一响应数据的网络事件,以及所述客户端的存储空间未饱和的网络事件时,重新为所述客户端和数据库分配第二线程,使所述数据库通过重新分配的第二线程将该第一响应数据传输至所述客户端,或者,当监听到所述客户端根据所述第二数据生成第二响应数据的网络事件,以及所述数据库的存储空间未饱和的网络事件时,重新为所述客户端和数据库分配第二线程,使所述客户端通过重新分配的第二线程将该第二响应数据传输至所述数据库。
在本发明的一个实施例中,所述第二分配模块604具体用于:将所述客户端和数据库传输所述数据所使用的第一线程作为第二线程,重新分配给所述客户端和数据库。
本发明实施例提供一种线程管理方法及装置,该方法中间件分配第一线程将数据发送至客户端或数据库之后,便释放该第一线程,使该第一线程转变为空闲状态,以便分配给其他客户端或处理其他业务,同时,中间件会在监听到客户端和数据库之间出现指定的网络事件后,为客户端和数据库重新分配第二线程以进行数据的传输,从而,不仅节省了中间件内有限的线程资源为客户端和数据库间的数据传输提供数据服务,也有效提升了线程的利用率。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的拦截应用程序中的植入信息的设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
Claims (8)
1.一种数据传输方法,用于在客户端与服务器之间通过中间件进行数据传输,所述方法包括:
所述中间件为所述客户端和数据库分配第一线程,使所述客户端和数据库通过所述第一线程传输数据;
所述中间件在所述第一线程完成所述数据的传输后,释放该第一线程;
监听所述客户端和数据库的网络事件;
当监听到指定网络事件后,重新为所述客户端和数据库分配第二线程;
其中,所述数据包括:所述客户端向所数据库发送的第一数据,或,所述数据库向所述客户端发送的第二数据;
所述指定网络事件包括:所述数据库根据所述第一数据生成第一响应数据的网络事件,或,所述客户端根据所述第二数据生成第二响应数据的网络事件。
2.如权利要求1所述的方法,其中,当监听到指定网络事件后,重新为所述客户端和数据库分配第二线程,具体包括:
当监听到所述数据库根据所述第一数据生成所述第一响应数据的网络事件时,所述中间件重新为所述客户端和数据库分配第二线程,使所述数据库通过重新分配的第二线程将该第一响应数据传输至所述客户端;或者
当监听到所述客户端根据所述第二数据生成所述第二响应数据时,所述中间件重新为所述客户端和数据库分配第二线程,使所述客户端通过重新分配的第二线程将该第二响应数据传输至所述数据库。
3.如权利要求1所述的方法,其中,所述指定网络事件还包括:所述客户端或数据库的存储空间未饱和的网络事件;
当监听到指定网络事件后,重新为所述客户端和数据库分配第二线程,具体包括:
当监听到所述数据库根据所述第一数据生成所述第一响应数据的网络事件,以及所述客户端的存储空间未饱和的网络事件时,所述中间件重新为所述客户端和数据库分配第二线程,使所述数据库通过重新分配的第二线程将该第一响应数据传输至所述客户端;或者
当监听到所述客户端根据所述第二数据生成第二响应数据的网络事件,以及所述数据库的存储空间未饱和的网络事件时,所述中间件重新为所述客户端和数据库分配第二线程,使所述客户端通过重新分配的第二线程将该第二响应数据传输至所述数据库。
4.如权利要求1至3中任一所述的方法,其中,重新为所述客户端和数据库分配第二线程,具体包括:
将所述客户端和数据库传输所述数据所使用的第一线程作为第二线程,重新分配给所述客户端和数据库。
5.一种数据传输装置,用于在客户端和服务器之间进行数据传输,所述装置包括:第一分配模块、释放模块、监听模块以及第二分配模块,其中,
所述第一分配模块,用于为所述客户端和数据库分配第一线程,使所述客户端和数据库通过所述第一线程传输数据;
所述释放模块,用于在所述线程完成所述数据的传输后,释放该第一线程;
所述监听模块,用于监听所述客户端和数据库的网络事件;
所述第二分配模块,用于当监听到指定网络事件后,重新为所述客户端和数据库分配第二线程;
其中,所述数据包括:所述客户端向所数据库发送的第一数据,或,所述数据库向所述客户端发送的第二数据;
所述指定网络事件包括:所述数据库根据所述第一数据生成第一响应数据的网络事件,或,所述客户端根据所述第二数据生成第二响应数据的网络事件。
6.如权利要求5所述的装置,其中,所述第二分配模块,具体用于:
当监听到所述数据库根据所述第一数据生成所述第一响应数据的网络事件时,重新为所述客户端和数据库分配第二线程,使所述数据库通过重新分配的第二线程将该第一响应数据传输至所述客户端;或者
当监听到所述客户端根据所述第二数据生成所述第二响应数据时,重新为所述客户端和数据库分配第二线程,使所述客户端通过重新分配的第二线程将该第二响应数据传输至所述数据库。
7.如权利要求5所述的装置,其中,所述指定网络事件还包括:所述客户端或数据库的存储空间未饱和的网络事件;所述第二分配模块,具体用于:
当监听到所述数据库根据所述第一数据生成所述第一响应数据的网络事件,以及所述客户端的存储空间未饱和的网络事件时,重新为所述客户端和数据库分配第二线程,使所述数据库通过重新分配的第二线程将该第一响应数据传输至所述客户端;或者
当监听到所述客户端根据所述第二数据生成第二响应数据的网络事件,以及所述数据库的存储空间未饱和的网络事件时,重新为所述客户端和数据库分配第二线程,使所述客户端通过重新分配的第二线程将该第二响应数据传输至所述数据库。
8.如权利要求5至7中任一所述的装置,其中,所述第二分配模块,具体用于:
将所述客户端和数据库传输所述数据所使用的第一线程作为第二线程,重新分配给所述客户端和数据库。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410433031.6A CN105373420B (zh) | 2014-08-28 | 2014-08-28 | 数据传输方法及装置 |
PCT/CN2015/086479 WO2016029790A1 (zh) | 2014-08-28 | 2015-08-10 | 数据传输方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410433031.6A CN105373420B (zh) | 2014-08-28 | 2014-08-28 | 数据传输方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105373420A CN105373420A (zh) | 2016-03-02 |
CN105373420B true CN105373420B (zh) | 2019-12-06 |
Family
ID=55375645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410433031.6A Active CN105373420B (zh) | 2014-08-28 | 2014-08-28 | 数据传输方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105373420B (zh) |
WO (1) | WO2016029790A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105978968A (zh) * | 2016-05-11 | 2016-09-28 | 山东合天智汇信息技术有限公司 | 一种海量数据的实时传输处理方法、服务器及处理系统 |
CN106055367B (zh) * | 2016-06-01 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 一种脚本文件载入方法及装置 |
CN107391539B (zh) * | 2017-04-28 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 事务处理方法、服务器和存储介质 |
CN107256180B (zh) * | 2017-05-19 | 2019-04-26 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及终端 |
CN109977096A (zh) * | 2019-03-05 | 2019-07-05 | 中国银联股份有限公司 | 一种数据库连接管理方法及装置 |
CN110134578B (zh) * | 2019-05-23 | 2023-04-28 | 浙江齐治科技股份有限公司 | 一种数据处理方法及装置 |
CN111782367B (zh) * | 2020-06-30 | 2023-08-08 | 北京百度网讯科技有限公司 | 分布式存储方法及装置、电子设备、计算机可读介质 |
CN113296974B (zh) * | 2020-08-31 | 2022-04-26 | 阿里巴巴集团控股有限公司 | 数据库访问方法、装置、电子设备及可读存储介质 |
CN112052227A (zh) * | 2020-09-25 | 2020-12-08 | 郑州阿帕斯数云信息科技有限公司 | 数据变更日志的处理方法、装置和电子设备 |
CN113254182A (zh) * | 2021-06-08 | 2021-08-13 | 挂号网(杭州)科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814077A (zh) * | 2009-12-04 | 2010-08-25 | 四川川大智胜软件股份有限公司 | 一种基于oci 9的数据库访问中间件 |
CN102667718A (zh) * | 2009-10-30 | 2012-09-12 | 国际商业机器公司 | 处理网络事件的方法和系统 |
CN103164347A (zh) * | 2013-02-18 | 2013-06-19 | 中国农业银行股份有限公司 | 数据缓存的方法和装置 |
CN103577257A (zh) * | 2012-08-03 | 2014-02-12 | 杭州勒卡斯广告策划有限公司 | 一种rest服务方法、装置及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856460B2 (en) * | 2010-09-15 | 2014-10-07 | Oracle International Corporation | System and method for zero buffer copying in a middleware environment |
CN103365929B (zh) * | 2012-04-10 | 2016-09-28 | 阿里巴巴集团控股有限公司 | 一种数据库连接的管理方法及系统 |
CN103761240B (zh) * | 2013-12-12 | 2017-12-15 | 北京奇虎科技有限公司 | 数据库访问方法和装置 |
-
2014
- 2014-08-28 CN CN201410433031.6A patent/CN105373420B/zh active Active
-
2015
- 2015-08-10 WO PCT/CN2015/086479 patent/WO2016029790A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102667718A (zh) * | 2009-10-30 | 2012-09-12 | 国际商业机器公司 | 处理网络事件的方法和系统 |
CN101814077A (zh) * | 2009-12-04 | 2010-08-25 | 四川川大智胜软件股份有限公司 | 一种基于oci 9的数据库访问中间件 |
CN103577257A (zh) * | 2012-08-03 | 2014-02-12 | 杭州勒卡斯广告策划有限公司 | 一种rest服务方法、装置及系统 |
CN103164347A (zh) * | 2013-02-18 | 2013-06-19 | 中国农业银行股份有限公司 | 数据缓存的方法和装置 |
Non-Patent Citations (1)
Title |
---|
Intranet上数据库中间件原型的研究与构造;马松 等;《软件学报》;19990131;第10卷(第1期);第87-90页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105373420A (zh) | 2016-03-02 |
WO2016029790A1 (zh) | 2016-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105373420B (zh) | 数据传输方法及装置 | |
US9800691B2 (en) | Stream processing using a client-server architecture | |
US11275622B2 (en) | Utilizing accelerators to accelerate data analytic workloads in disaggregated systems | |
US10187445B2 (en) | System, method and browser client for enabling browser data synchronization | |
US10769212B2 (en) | Extensible and elastic data management services engine external to a storage domain | |
CN107483390B (zh) | 一种云渲染网络部署子系统、系统及云渲染平台 | |
CN107277029B (zh) | 一种远程过程调用的方法、装置及计算机设备 | |
CN110383764B (zh) | 无服务器系统中使用历史数据处理事件的系统和方法 | |
US9990306B2 (en) | Inter-manycore communications method and system | |
US9753786B2 (en) | Client server communication system | |
US8607233B2 (en) | Web service management | |
US9104501B2 (en) | Preparing parallel tasks to use a synchronization register | |
US9104486B2 (en) | Apparatuses, systems, and methods for distributed workload serialization | |
US20150195128A1 (en) | Apparatus and method for supporting configuration management of virtual machine, and apparatus and method for brokering cloud service using the configuration management supporting apparatus | |
US8606908B2 (en) | Wake-up server | |
US11228658B1 (en) | Pre-caching data for use upon execution of program code | |
KR20110083084A (ko) | 가상화를 이용한 서버 운영 장치 및 방법 | |
CN106331192B (zh) | 网络协议ip地址分配方法及装置 | |
CN113014611A (zh) | 一种负载均衡方法及相关设备 | |
CN113703997A (zh) | 集成多种消息代理的双向异步通信中间件系统及实现方法 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
CN107888700A (zh) | 一种共享云渲染系统及其处理流程 | |
CN112448977A (zh) | 分配任务的系统、方法、设备和计算机可读介质 | |
CN104754029A (zh) | 确定主管理服务器的方法、装置和系统 | |
CN104243253A (zh) | 一种客户端接入设备的控制方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220713 Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015 Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |
|
TR01 | Transfer of patent right |