CN110300153A - 与MySQL建立链接的方法、装置、代理服务器及存储介质 - Google Patents

与MySQL建立链接的方法、装置、代理服务器及存储介质 Download PDF

Info

Publication number
CN110300153A
CN110300153A CN201910445999.3A CN201910445999A CN110300153A CN 110300153 A CN110300153 A CN 110300153A CN 201910445999 A CN201910445999 A CN 201910445999A CN 110300153 A CN110300153 A CN 110300153A
Authority
CN
China
Prior art keywords
tcp
link
mysql
service request
current
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.)
Granted
Application number
CN201910445999.3A
Other languages
English (en)
Other versions
CN110300153B (zh
Inventor
燕馨瑞
胡林森
高佳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201910445999.3A priority Critical patent/CN110300153B/zh
Publication of CN110300153A publication Critical patent/CN110300153A/zh
Application granted granted Critical
Publication of CN110300153B publication Critical patent/CN110300153B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及数据库技术领域,公开了一种与MySQL建立链接的方法、装置、代理服务器及存储介质,解决了现有技术中TCP超时建链导致DBProxy阻塞的问题。所述方法包括:接收当前业务请求;根据所述当前业务请求,与当前MySQL建立TCP链接时,将所述TCP链接的信息记入监听队列;暂停处理所述当前业务请求,并处理下一个业务请求;当监听到与所述TCP链接相关联的网络事件时,继续处理所述当前业务请求。本发明实施例适用于DBProxy与MySQL之间建立TCP链接的过程。

Description

与MySQL建立链接的方法、装置、代理服务器及存储介质
技术领域
本发明涉及数据库技术领域,具体地,涉及一种与MySQL建立链接的方法、装置、代理服务器及存储介质。
背景技术
代理服务器DBProxy作为客户端与MySQL(关系型数据库管理系统)之间的中间件,既要模拟MySQL,与前端业务进行通信,又要模拟客户端,与MySQL进行通信。因此,对客户端来说,DBProxy是透明的,其直接与客户端连接,并负责将SQL(Structured QueryLanguage,结构化查询语言)转发到MySQL。
DBProxy与MySQL建立链接时,在传输层需要进行TCP(Transmission ControlProtocol,传输控制协议)的三次握手,在应用层需要进行MySQL协议的三次握手。其中建立TCP链接的流程图如图1所示,在根据负载均衡情况选择MySQL之后,通过建立链接操作发出第一个TCP握手包之后,DBPrxy会在原地阻塞等待链接结果。如果在超时时间(可调,一般为200ms)内获取到了正确的TCP结果包,则结束阻塞,TCP建立链接成功。但是如果在超时时间内收到了错误包,或者等待时间大于设定的超时时间,则此次TCP建立链接失败,DBProxy开始进行失败重连,重复执行上述TCP建立链接的流程。如果重连次数超过三次,仍然建立链接失败,则认为当前MySQL故障,重新选择MySQL。
在正常情况下,如图2所示,MySQL可以立即返回TCP建立链接的结果包,不会对业务有影响。但是如图3所示,在网络抖动、MySQL宕机、MySQL端机器压力较大或者MySQL部署在异地机房,导致网络延时较大时,MySQL无法立即返回结果包,那么DBProxy就会一直阻塞在原地等待结果。当前所有要访问DBProxy的客户都要同步等待,响应时间被拉长,极大影响DBProxy的性能。另外,由于DBProxy是单进程单线程模型,单进程是为了避免惊群现象,单线程是由于CPU的处理能力是恒定的,因此在发生网络阻塞情况时,DBProxy会一直在原地阻塞等待TCP结果包,直到超过最长等待时间,对于每一个业务请求,其阻塞的时间可能是呈线性增长的。如图4所示,由于设定的建立链接超时时间是200ms,且失败有重连机制,最多重连3次,因此每个请求都会导致DBProxy在原地阻塞600ms。在极端情况下,排在队列靠后的请求,等待时间线性增加,甚至可能达到秒级,导致业务主动断链,甚至是业务雪崩。
发明内容
本发明的目的是为了解决现有技术中TCP超时建链导致DBProxy阻塞的问题,提供一种与MySQL建立链接的方法、装置、代理服务器及存储介质,当DBProxy与MySQL建立TCP链接时,不再阻塞在原地等待TCP建链的结果包,而是处理其他业务请求,直到收到之前业务请求的TCP结果包之后,再继续处理之前的业务请求,该异步建链的过程相对现有技术中的同步建链,处理速度更快,高并发建链响应时间较快,对于阻塞问题,只会影响到阻塞对应的建链用户的业务请求,而其他用户的业务请求可不受影响,无需等待,被正常处理。
为了实现上述目的,本发明实施例第一方面提供一种与MySQL建立链接的方法,所述方法包括:接收当前业务请求;根据所述当前业务请求,与当前MySQL建立TCP链接时,将所述TCP链接的信息记入监听队列;暂停处理所述当前业务请求,并处理下一个业务请求;当监听到与所述TCP链接相关联的网络事件时,继续处理所述当前业务请求。
进一步地,在所述根据所述当前业务请求,与当前MySQL建立TCP链接之后,所述方法还包括:针对所述TCP链接开始计时。
进一步地,所述与当前MySQL建立TCP链接时,将所述TCP链接的信息记入监听队列包括:向所述当前MySQL发出第一个TCP握手包,并将所述TCP链接的标识记入所述监听队列中。
进一步地,在所述根据所述当前业务请求,与当前MySQL建立TCP链接时,所述方法还包括:将所述TCP链接的标识以及开始时间记入异步建链表,所述异步建链表包括所有正在建立的TCP链接。
进一步地,所述当监听到与所述TCP链接相关联的网络事件时,继续处理所述当前业务请求包括:间隔设定时间,查询是否接收到与所述TCP链接相关联的网络事件;当接收到所述TCP链接的结果包时,根据所述结果包中的结果标识,确定对所述TCP链接的处理。
进一步地,所述根据所述结果包中的结果标识,确定对所述TCP链接的处理包括:当所述结果标识为成功标识时,确定所述TCP链接建立成功;将所述TCP链接从所述监听队列以及所述异步建链表中删除,并执行所述当前业务请求的MySQL协议的握手。
进一步地,所述根据所述结果包中的结果标识,确定对所述TCP链接的处理包括:当所述结果标识为失败标识时,确定所述TCP链接建立失败;将所述TCP链接从所述监听队列以及所述异步建链表中删除,并重新与所述当前MySQL建立TCP链接。
进一步地,所述方法还包括:间隔规定时间,根据所述异步建链表中TCP链接的开始时间,查找超时的TCP链接;当查找到超时的TCP链接时,确定所述超时的TCP链接建立失败;将所述超时的TCP链接从所述监听队列以及所述异步建链表中删除,并重新与其对应的MySQL建立TCP链接。
进一步地,所述方法还包括:当与其对应的MySQL建立TCP链接的次数超过特定次数,重新选择MySQL建立TCP链接。
本发明实施例第二方面提供一种与MySQL建立链接的装置,所述装置包括:接收单元,用于接收当前业务请求;记录单元,用于根据所述当前业务请求,与当前MySQL建立TCP链接时,将所述TCP链接的信息记入监听队列;处理单元,用于暂停处理所述当前业务请求,并处理下一个业务请求;当监听到与所述TCP链接相关联的网络事件时,继续处理所述当前业务请求。
进一步地,所述装置还包括:计时单元,用于在根据所述当前业务请求,与当前MySQL建立TCP链接之后,针对所述TCP链接开始计时。
进一步地,所述装置还包括:发送单元,用于向所述当前MySQL发出第一个TCP握手包;所述记录单元还用于将所述TCP链接的标识记入所述监听队列中。
进一步地,所述记录单元还用于将所述TCP链接的标识以及开始时间记入异步建链表,所述异步建链表包括所有正在建立的TCP链接。
进一步地,所述处理单元还用于间隔设定时间,查询是否接收到与所述TCP链接相关联的网络事件;当接收到所述TCP链接的结果包时,根据所述结果包中的结果标识,确定对所述TCP链接的处理。
进一步地,所述处理单元还用于当所述结果标识为成功标识时,确定所述TCP链接建立成功;将所述TCP链接从所述监听队列以及所述异步建链表中删除,并执行所述当前业务请求的MySQL协议的握手。
进一步地,所述处理单元还用于当所述结果标识为失败标识时,确定所述TCP链接建立失败;将所述TCP链接从所述监听队列以及所述异步建链表中删除,并重新与所述当前MySQL建立TCP链接。
进一步地,所述处理单元还用于间隔规定时间,根据所述异步建链表中TCP链接的开始时间,查找超时的TCP链接;当查找到超时的TCP链接时,确定所述超时的TCP链接建立失败;将所述超时的TCP链接从所述监听队列以及所述异步建链表中删除,并重新与其对应的MySQL建立TCP链接。
进一步地,所述处理单元还用于当与其对应的MySQL建立TCP链接的次数超过特定次数,重新选择MySQL建立TCP链接。
本发明实施例第三方面提供一种代理服务器,所述代理服务器用于执行如上所述的与MySQL建立链接的方法。
本发明实施例第四方面提供一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如上所述的与MySQL建立链接的方法。
通过上述技术方案,当接收到当前业务请求后,根据所述当前业务请求,与当前MySQL建立TCP链接时,并将所述TCP链接的信息记入监听队列,然后暂停处理所述当前业务请求,并处理下一个业务请求,直到监听到到与所述TCP链接相关联的网络事件时,继续处理所述当前业务请求。本发明实施例解决了现有技术中TCP超时建链导致DBProxy阻塞的问题,通过异步建链,提高了处理速度,高并发建链响应时间较快,对于阻塞问题,只会影响到阻塞对应的建链用户的业务请求,而其他用户的业务请求可不受影响,无需等待,被正常处理。
本发明的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:
图1是现有技术中建立TCP链接的流程图;
图2是现有技术中建立TCP链接的正常情况示意图;
图3是现有技术中建立TCP链接的异常情况示意图;
图4是现有技术中建立链接超时的示意图;
图5是本发明实施例提供的一种与MySQL建立链接的方法的流程示意图;
图6是本发明实施例提供的另一种与MySQL建立链接的方法的流程示意图;
图7是本发明实施例提供的现有技术中的同步建链与本发明实施例的异步建链的响应时间对比图;
图8是本发明实施例提供的一种与MySQL建立链接的装置的结构示意图;
图9是本发明实施例提供的另一种与MySQL建立链接的装置的结构示意图;
图10是本发明实施例提供的又一种与MySQL建立链接的装置的结构示意图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
图5是本发明实施例提供的一种与MySQL建立链接的方法的流程示意图。如图1所示,所述方法应用于DBProxy,包括如下步骤:
步骤501,接收当前业务请求;
步骤502,根据所述当前业务请求,与当前MySQL建立TCP链接时,将所述TCP链接的信息记入监听队列;
步骤503,暂停处理所述当前业务请求,并处理下一个业务请求;
步骤504,当监听到与所述TCP链接相关联的网络事件时,继续处理所述当前业务请求。
其中,当DBProxy从客户端接收到当前业务请求后,根据所述当前业务请求,以及负载均衡情况选择即将建立TCP连接的MySQL。在与当前MySQL建立TCP链接的时候,即向当前MySQL发出第一个TCP握手包之后,开始计时,并将所述TCP链接的标识记入所述监听队列中。同时将所述TCP链接的标识以及开始时间记入异步建链表,所述异步建链表包括所有正在建立的TCP链接,每一个开始建立TCP链接的链接都会存储在所述异步建链表中。其中,所述监听队列可以是由Epoll维护。
当所述监听队列是由Epoll维护时,Epoll会将接收到的网络事件记录下来,DBProxy间隔设定时间轮询Epoll,查询是否接收到与所述TCP链接相关联的网络事件。若接收到所述TCP链接的结果包时,则根据所述结果包中的结果标识,确定对所述TCP链接的处理。其中,所述结果包中包括了成功标识、失败标识。
当接收到的结果包中包括成功标识时,确定所述TCP链接建立成功,将所述TCP链接从所述监听队列以及所述异步建链表中删除,并开始执行之后的所述当前业务请求的MySQL协议的握手。
若是所接收的结果包中的结果标识为失败标识时,确定所述TCP链接建立失败,并将所述TCP链接从所述监听队列以及所述异步建链表中删除,并重新与所述当前MySQL建立TCP链接。
另一种情况,对于所述异步建链表中的TCP链接,会间隔规定时间(所述规定时间小于所述链接超时的设定时间),根据所述异步建链表中TCP链接的开始时间,查找超时的TCP链接,即根据表中TCP链接的开始时间与当前时间的时间差值,与链接超时的设定时间进行比较,若是时间差值大于所述设定时间,则确定TCP链接超时。当查找到超时的TCP链接时,确定所述超时的TCP链接建立失败,同时将所述超时的TCP链接从所述监听队列以及所述异步建链表中删除,并重新与其对应的MySQL建立TCP链接。
对于上述建立TCP链接失败并进行重连的情况,如果按照上述实施例建立TCP链接失败的次数超过特定次数(例如,3次),则证明其建立TCP链接的MySQL异常,需要重新选择MySQL,重新建立TCP链接。
为了更加清楚的理解本发明实施例,图6是本发明实施例提供的另一种与MySQL建立链接的方法的流程示意图。如图6所示,包括如下步骤:
步骤601,DBProxy从客户端接收当前业务请求;
步骤602,根据负载均衡选择当前MySQL,向所述当前MySQL发出第一个TCP握手包,并开始计时;
步骤603,将所述TCP链接的标识记入所述监听队列中,同时将所述TCP链接的标识以及开始时间记入异步建链表中;
步骤604,间隔设定时间,查询是否接收到与所述TCP链接相关联的网络事件,若是,则执行步骤605或步骤607,否则继续执行步骤604;
步骤605,当接收到包含有成功标识的所述TCP链接的结果包时,确定所述TCP链接建立成功;
步骤606,将所述TCP链接从所述监听队列以及所述异步建链表中删除,并执行所述当前业务请求的MySQL协议的握手;
步骤607,当接收到包含有失败标识的所述TCP链接的结果包时,确定所述TCP链接建立失败;
步骤608,将所述TCP链接从所述监听队列以及所述异步建链表中删除,并重新与所述当前MySQL建立TCP链接,并执行步骤612;
步骤609,间隔规定时间,根据所述异步建链表中TCP链接的开始时间,查找超时的TCP链接;
步骤610,当查找到超时的TCP链接时,确定所述超时的TCP链接建立失败;
步骤611,将所述超时的TCP链接从所述监听队列以及所述异步建链表中删除,并重新与其对应的MySQL建立TCP链接,并执行步骤612;
步骤612,判断TCP重连的次数是否超过预定次数,是则执行步骤613,否则执行步骤614;
步骤613,继续重新与其对应的MySQL建立TCP链接;
步骤614,与其对应的MySQL建立TCP链接失败,重新选择MySQL建立TCP链接。
可见,通过上述实施例,当频繁建立TCP链接时,与现有技术中的同步建链相比,本发明实施例中的异步建链的响应时间更短。如图7所示的同步/异步建链响应时间对比,同步建链时,响应时间随建链并发数增加,是线性增长;异步建链时,响应时间随建链并发数略有增加,由此得出,异步建链相对串行的同步建链,处理速度更快,高并发建链响应时间较快。另外,当前端高并发业务请求向无法响应或网络延时过长的MySQL建立TCP链接,同步建链时,所有客户的正常请求均被阻塞,异步建链时,只影响到与该MySQL建链的客户请求,其他正常的读请求无感知,可以正常处理。
相应的,图8是本发明实施例提供的一种与MySQL建立链接的装置的结构示意图,如图8所示,所述装置80包括:接收单元81,用于接收当前业务请求;记录单元82,用于根据所述当前业务请求,与当前MySQL建立TCP链接时,将所述TCP链接的信息记入监听队列;处理单元83,用于暂停处理所述当前业务请求,并处理下一个业务请求;当监听到与所述TCP链接相关联的网络事件时,继续处理所述当前业务请求。
进一步地,如图9所示,所述装置还包括:计时单元84,用于在根据所述当前业务请求,与当前MySQL建立TCP链接之后,针对所述TCP链接开始计时。
进一步地,如图10所示,所述装置还包括:发送单元85,用于向所述当前MySQL发出第一个TCP握手包;所述记录单元还用于将所述TCP链接的标识记入所述监听队列中。
进一步地,所述记录单元还用于将所述TCP链接的标识以及开始时间记入异步建链表,所述异步建链表包括所有正在建立的TCP链接。
进一步地,所述处理单元还用于间隔设定时间,查询是否接收到与所述TCP链接相关联的网络事件;当接收到所述TCP链接的结果包时,根据所述结果包中的结果标识,确定对所述TCP链接的处理。
进一步地,所述处理单元还用于当所述结果标识为成功标识时,确定所述TCP链接建立成功;将所述TCP链接从所述监听队列以及所述异步建链表中删除,并执行所述当前业务请求的MySQL协议的握手。
进一步地,所述处理单元还用于当所述结果标识为失败标识时,确定所述TCP链接建立失败;将所述TCP链接从所述监听队列以及所述异步建链表中删除,并重新与所述当前MySQL建立TCP链接。
进一步地,所述处理单元还用于间隔规定时间,根据所述异步建链表中TCP链接的开始时间,查找超时的TCP链接;当查找到超时的TCP链接时,确定所述超时的TCP链接建立失败;将所述超时的TCP链接从所述监听队列以及所述异步建链表中删除,并重新与其对应的MySQL建立TCP链接。
进一步地,所述处理单元还用于当与其对应的MySQL建立TCP链接的次数超过特定次数,重新选择MySQL建立TCP链接。
该装置的具体执行过程参加上述与MySQL建立链接的方法的实施过程。
相应的,本发明实施例还提供一种代理服务器,所述代理服务器用于执行上述实施例所述的与MySQL建立链接的方法。例如,本发明实施例所述的DBProxy。
相应的,本发明实施例还提供一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例所述的与MySQL建立链接的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (20)

1.一种与MySQL建立链接的方法,其特征在于,所述方法包括:
接收当前业务请求;
根据所述当前业务请求,与当前MySQL建立TCP链接时,将所述TCP链接的信息记入监听队列;
暂停处理所述当前业务请求,并处理下一个业务请求;
当监听到与所述TCP链接相关联的网络事件时,继续处理所述当前业务请求。
2.根据权利要求1所述的方法,其特征在于,在所述根据所述当前业务请求,与当前MySQL建立TCP链接之后,所述方法还包括:
针对所述TCP链接开始计时。
3.根据权利要求2所述的方法,其特征在于,所述与当前MySQL建立TCP链接时,将所述TCP链接的信息记入监听队列包括:
向所述当前MySQL发出第一个TCP握手包,并将所述TCP链接的标识记入所述监听队列中。
4.根据权利要求3所述的方法,其特征在于,在所述根据所述当前业务请求,与当前MySQL建立TCP链接时,所述方法还包括:
将所述TCP链接的标识以及开始时间记入异步建链表,所述异步建链表包括所有正在建立的TCP链接。
5.根据权利要求4所述的方法,其特征在于,所述当监听到与所述TCP链接相关联的网络事件时,继续处理所述当前业务请求包括:
间隔设定时间,查询是否接收到与所述TCP链接相关联的网络事件;
当接收到所述TCP链接的结果包时,根据所述结果包中的结果标识,确定对所述TCP链接的处理。
6.根据权利要求5所述的方法,其特征在于,所述根据所述结果包中的结果标识,确定对所述TCP链接的处理包括:
当所述结果标识为成功标识时,确定所述TCP链接建立成功;
将所述TCP链接从所述监听队列以及所述异步建链表中删除,并执行所述当前业务请求的MySQL协议的握手。
7.根据权利要求5所述的方法,其特征在于,所述根据所述结果包中的结果标识,确定对所述TCP链接的处理包括:
当所述结果标识为失败标识时,确定所述TCP链接建立失败;
将所述TCP链接从所述监听队列以及所述异步建链表中删除,并重新与所述当前MySQL建立TCP链接。
8.根据权利要求4所述的方法,其特征在于,所述方法还包括:
间隔规定时间,根据所述异步建链表中TCP链接的开始时间,查找超时的TCP链接;
当查找到超时的TCP链接时,确定所述超时的TCP链接建立失败;
将所述超时的TCP链接从所述监听队列以及所述异步建链表中删除,并重新与其对应的MySQL建立TCP链接。
9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:
当与其对应的MySQL建立TCP链接的次数超过特定次数,重新选择MySQL建立TCP链接。
10.一种与MySQL建立链接的装置,其特征在于,所述装置包括:
接收单元,用于接收当前业务请求;
记录单元,用于根据所述当前业务请求,与当前MySQL建立TCP链接时,将所述TCP链接的信息记入监听队列;
处理单元,用于暂停处理所述当前业务请求,并处理下一个业务请求;当监听到与所述TCP链接相关联的网络事件时,继续处理所述当前业务请求。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
计时单元,用于在根据所述当前业务请求,与当前MySQL建立TCP链接之后,针对所述TCP链接开始计时。
12.根据权利要求11所述的装置,其特征在于,
所述装置还包括:发送单元,用于向所述当前MySQL发出第一个TCP握手包;
所述记录单元还用于将所述TCP链接的标识记入所述监听队列中。
13.根据权利要求12所述的装置,其特征在于,所述记录单元还用于将所述TCP链接的标识以及开始时间记入异步建链表,所述异步建链表包括所有正在建立的TCP链接。
14.根据权利要求13所述的装置,其特征在于,所述处理单元还用于间隔设定时间,查询是否接收到与所述TCP链接相关联的网络事件;当接收到所述TCP链接的结果包时,根据所述结果包中的结果标识,确定对所述TCP链接的处理。
15.根据权利要求14所述的装置,其特征在于,所述处理单元还用于当所述结果标识为成功标识时,确定所述TCP链接建立成功;将所述TCP链接从所述监听队列以及所述异步建链表中删除,并执行所述当前业务请求的MySQL协议的握手。
16.根据权利要求14所述的装置,其特征在于,所述处理单元还用于当所述结果标识为失败标识时,确定所述TCP链接建立失败;将所述TCP链接从所述监听队列以及所述异步建链表中删除,并重新与所述当前MySQL建立TCP链接。
17.根据权利要求13所述的装置,其特征在于,所述处理单元还用于间隔规定时间,根据所述异步建链表中TCP链接的开始时间,查找超时的TCP链接;当查找到超时的TCP链接时,确定所述超时的TCP链接建立失败;将所述超时的TCP链接从所述监听队列以及所述异步建链表中删除,并重新与其对应的MySQL建立TCP链接。
18.根据权利要求16或17所述的装置,其特征在于,所述处理单元还用于当与其对应的MySQL建立TCP链接的次数超过特定次数,重新选择MySQL建立TCP链接。
19.一种代理服务器,其特征在于,所述代理服务器用于执行上述权利要求1-9任一项所述的与MySQL建立链接的方法。
20.一种存储介质,其特征在于,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述权利要求1-9任一项所述的与MySQL建立链接的方法。
CN201910445999.3A 2019-05-27 2019-05-27 与MySQL建立链接的方法、装置、代理服务器及存储介质 Active CN110300153B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910445999.3A CN110300153B (zh) 2019-05-27 2019-05-27 与MySQL建立链接的方法、装置、代理服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910445999.3A CN110300153B (zh) 2019-05-27 2019-05-27 与MySQL建立链接的方法、装置、代理服务器及存储介质

Publications (2)

Publication Number Publication Date
CN110300153A true CN110300153A (zh) 2019-10-01
CN110300153B CN110300153B (zh) 2021-11-30

Family

ID=68027234

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910445999.3A Active CN110300153B (zh) 2019-05-27 2019-05-27 与MySQL建立链接的方法、装置、代理服务器及存储介质

Country Status (1)

Country Link
CN (1) CN110300153B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750313A (zh) * 2019-10-21 2020-02-04 北京百度网讯科技有限公司 一种中间件的热加载方法、装置、电子设备及存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100185645A1 (en) * 2009-01-13 2010-07-22 Jan Pazdziora Structured query language syntax rewriting
US20130223426A1 (en) * 2004-09-09 2013-08-29 Parkervision, Inc. Wireless protocol converter
CN103870377A (zh) * 2012-12-11 2014-06-18 深圳市腾讯计算机系统有限公司 探测MySQL运行信息的方法与装置
CN104408071A (zh) * 2014-10-30 2015-03-11 北京思特奇信息技术股份有限公司 一种基于集群管理器的分布式数据库高可用方法及系统
CN105991416A (zh) * 2015-02-15 2016-10-05 无锡北邮感知技术产业研究院有限公司 一种消息传递方法及消息传递中间件
CN106657092A (zh) * 2016-12-28 2017-05-10 北京神州绿盟信息安全科技股份有限公司 一种基于ssl/tls的业务处理方法及装置
CN108243222A (zh) * 2016-12-26 2018-07-03 航天信息股份有限公司 服务器网络架构方法及装置
CN108683697A (zh) * 2018-03-28 2018-10-19 青岛海尔科技有限公司 连接Redis内存数据库的方法、系统、选择器和服务器
US20180332064A1 (en) * 2016-02-25 2018-11-15 Sas Institute Inc. Cybersecurity system
CN108897854A (zh) * 2018-06-29 2018-11-27 北京京东金融科技控股有限公司 一种超时任务的监控方法和装置
CN109547261A (zh) * 2018-12-12 2019-03-29 平安科技(深圳)有限公司 业务线切换方法、装置、电子设备及存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130223426A1 (en) * 2004-09-09 2013-08-29 Parkervision, Inc. Wireless protocol converter
US20100185645A1 (en) * 2009-01-13 2010-07-22 Jan Pazdziora Structured query language syntax rewriting
CN103870377A (zh) * 2012-12-11 2014-06-18 深圳市腾讯计算机系统有限公司 探测MySQL运行信息的方法与装置
CN104408071A (zh) * 2014-10-30 2015-03-11 北京思特奇信息技术股份有限公司 一种基于集群管理器的分布式数据库高可用方法及系统
CN105991416A (zh) * 2015-02-15 2016-10-05 无锡北邮感知技术产业研究院有限公司 一种消息传递方法及消息传递中间件
US20180332064A1 (en) * 2016-02-25 2018-11-15 Sas Institute Inc. Cybersecurity system
CN108243222A (zh) * 2016-12-26 2018-07-03 航天信息股份有限公司 服务器网络架构方法及装置
CN106657092A (zh) * 2016-12-28 2017-05-10 北京神州绿盟信息安全科技股份有限公司 一种基于ssl/tls的业务处理方法及装置
CN108683697A (zh) * 2018-03-28 2018-10-19 青岛海尔科技有限公司 连接Redis内存数据库的方法、系统、选择器和服务器
CN108897854A (zh) * 2018-06-29 2018-11-27 北京京东金融科技控股有限公司 一种超时任务的监控方法和装置
CN109547261A (zh) * 2018-12-12 2019-03-29 平安科技(深圳)有限公司 业务线切换方法、装置、电子设备及存储介质

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
RADOVAN CHYTRACEK: "Distributed database access in the LHC computing grid with CORAL", 《IEEE》 *
佚名: "mysql-proxy数据库中间件架构", 《HTTPS://WWW.W3CSCHOOL.CN/ARCHITECTROAD/ARCHITECTROAD-MYSQL-PROXY.HTML》 *
梁翠: "基于OpenStack的高可用云计算平台的研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
王炳举: "利用开源数据库中间件构建高性能Sakai系统", 《计算机产品与流通》 *
许龙铭等: "基于OpenMV的商店客流量监测系统的设计", 《电子世界》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750313A (zh) * 2019-10-21 2020-02-04 北京百度网讯科技有限公司 一种中间件的热加载方法、装置、电子设备及存储介质
CN110750313B (zh) * 2019-10-21 2023-07-25 北京百度网讯科技有限公司 一种中间件的热加载方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN110300153B (zh) 2021-11-30

Similar Documents

Publication Publication Date Title
US11310313B2 (en) Multi-threaded processing of search responses returned by search peers
KR101503202B1 (ko) 데이터 동기화
CN111459418B (zh) 一种基于rdma的键值存储系统传输方法
US20160140235A1 (en) Real-time distributed in memory search architecture
US20160036716A1 (en) Priority-based processing of messages from multiple servers
US9805093B2 (en) Executing stored procedures at parallel databases
JP6692000B2 (ja) リスク識別方法、リスク識別装置、クラウドリスク識別装置及びシステム
JP2010531481A (ja) 表形式データストリームプロトコルによる表値パラメータの転送
EP3779692B1 (en) Blockchain data processing
US9600567B2 (en) Local context search results improvements
CN109951546A (zh) 基于智能合约的事务请求处理方法、装置、设备和介质
CN107612950A (zh) 一种提供服务的方法、装置、系统、电子设备
WO2017080386A1 (zh) 一种报文处理方法和装置
US9003054B2 (en) Compressing null columns in rows of the tabular data stream protocol
CN110300153A (zh) 与MySQL建立链接的方法、装置、代理服务器及存储介质
US20140172942A1 (en) Decoupling cluster data from cloud deployment
US20140040479A1 (en) Method for a self organizing load balance in a cloud file server network
CN109032779A (zh) 任务处理方法、装置、计算机设备及可读存储介质
US9626444B2 (en) Continuously blocking query result data for a remote query
EP3779691A1 (en) Data processing method and apparatus, and server
KR102571783B1 (ko) 대용량 검색 처리를 수행하는 검색 처리 시스템 및 그 제어방법
US11675812B1 (en) Synchronization of metadata between databases in a cloud computing environment
CN116804938A (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