发明内容
本发明针对现有技术中的缺点,提供了一种基于MySQL协议的网关执行方法。
本发明的技术方案如下:
基于MySQL协议的网关执行方法,包括如下步骤:
每次建立连接时,执行Session和SessionContext的初始化;
每次接收请求时执行ReqContext对象和Listener对象初始化,并在SessionContext对象中根据connID进行ReqId和ReqContext、Listener对象实例的绑定;通过派发器将同一connID绑定的请求压入请求队列,生成顺序递增ID;当接收的两个以上请求不存在上下文关系,则并发执行SQL,取得执行结果。
优选地,方法还包括回写方法,根据请求到达时间顺序回写,执行结果缓存入派发器响应队列,按请求队列顺序逐个响应。
优选地,其中,Listener对象包括相互独立的连接监听对象、Session监听对象和请求监听对象。
优选地,方法还包括串行执行,当接收的两个以上请求存在上下文关系,则在SessionContext对象中标记为串行执行。
本发明还提出一种基于MySQL协议的网关执行装置,包括如下结构:
连接初始化单元,其用于客户端连接,并在每次建立连接时,执行Session和SessionContext的初始化;
请求初始化单元,其用于用户请求的接收,并在每次接收请求时执行ReqContext对象和Listener对象初始化,并在SessionContext对象中根据connID进行ReqId和ReqContext、Listener实例的绑定;
派发器单元,其用于将绑定后的请求压入请求队列,生成顺序递增ID;
执行单元,其用于顺序递增ID执行对应SQL。
优选地,其中,所述Listener对象包括相互独立的连接监听对象、Session监听对象和请求监听对象。
优选地,所述执行单元包括并发执行单元和串行执行单元,串行执行单元,用于当接收的两个以上请求存在数据依赖关系,根据SessionContext对象中的串行执行标记串行执行对应SQL。
优选地,装置还包括回写单元,其用于执行顺序回写程序,顺序回写程序包括根据请求到达时间顺序回写,执行结果缓存入派发器响应队列,按请求队列顺序逐个响应。
本发明还提出一种计算机存储介质,其存储有计算机程序,所述计算机程序被处理器调用实现基于MySQL协议的网关并发执行方法。
本发明还提出一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现基于MySQL协议的网关并发执行方法。
本发明的有益效果:通过配置***参数,允许连接Connection与请求Req可以存在1:N(N≥1)的关系,并对每个请求配置监听,即支持并发执行,提高了执行效率, 又保证了请求的正确性和数据的准确性。
具体实施方式
下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。
名词解释:
ConnId,连接标识符,每次建立新连接时都会产生全局的唯一标识ID
ReqContext,请求上下文,用于存储请求的上下文;
Session,会话,即从客户端连接服务器开始,到客户端与服务器断开结束为一个会话;
SessionContext,会话上下文,用于存储Session上下文;
ConnectionContext,连接上下文;
Listener对象,监听对象。
需要说明的是,由于翻译的如“会话”、“会话上下文”等在实际操作时对于专业名词的指代可能会存在歧义,故下文为了更好地阐述本申请的方案,仍然会存在以英文作为描述对象。
实施例1
公开一种基于MySQL协议的网关并发执行方法,参考图1和图2所示,包括如下步骤:
每次建立连接时,执行会话和会话上下文的初始化;
每次接收请求时执行请求上下文对象和监听对象初始化,并在会话上下文对象中根据连接ID进行请求ID和请求上下文、监听对象实例的绑定;
通过派发器将同一连接ID绑定的请求压入请求队列,生成顺序递增ID;以上流程均在连接层面,即在协议层完成;
经过上述初始化之后,当接收的两个以上请求不存在数据依赖关系,则并发执行SQL。
更为准确的描述为,包括如下步骤:
通过配置***参数,允许连接Connection与请求Req可以存在1:N(N≥1)的关系;
每次建立连接时,执行Session和SessionContext的初始化;
每次接收请求时执行ReqContext对象和监听对象初始化,并在SessionContext对象中根据connID进行ReqId和ReqContext、Listener对象实例的绑定;
通过派发器将同一connID绑定的请求压入请求队列,生成顺序递增ID;以上流程均在连接层面,即在协议层完成;
经过上述初始化之后,当接收的两个以上请求不存在数据依赖关系,或上下文关系,则并发执行SQL。
其中,如图3所示,还包括配置回写程序,回写程序包括根据请求到达时间顺序回写,执行结果缓存入派发器响应队列,按请求队列顺序逐个响应。
例如:用户建立的一个连接中通过上述并发手段进行的Select,Insert操作,但在响应阶段即回写packet时仍会按照请求顺序串行回写。
所述执行对应SQL的方法包括并发执行和串行执行,当接收的两个以上请求存在数据依赖关系,则在SessionContext对象中标记为串行执行。
其中,Listener对象实例包括相互独立的连接监听对象实例、Session监听对象实例和请求监听对象实例。即每个阶段均有独立的专有Listener对象,如图2所示的,ConnectionContext配置有感知连接相关的ConnectionContext Listener;SessionContext配置有Session变化相关的SessionContext Listener;ReqContext配置有感知请求数据相关的 Req Listener 。
每个请求均有独立的专有Listener对象;具体的,在每一次连接建立的时候同步进行Session和SessionContext的初始化,维护每个连接的私有属性和数据,在每次请求时进行ReqContext对象和Listener对象的初始化,具体包括每个请求的专有Listener对象的初始化,并在 SessionContext对象中根据connId进行ReqId和ReqContext、Listener 实例(每个请求的专有Listener对象)的binding(绑定关系)。
实施例2:公开一种基于MySQL协议的网关并发执行装置,包括如下结构:
连接初始化单元,其用于客户端连接,并在每次建立连接时,执行Session和SessionContext的初始化;
请求初始化单元,其用于用户请求的接收,并在每次接收请求时执行ReqContext对象和监听对象初始化,并在SessionContext对象中根据connID进行ReqId和ReqContext、Listener实例的绑定;
派发器单元,其用于将绑定后的请求压入请求队列,生成顺序递增ID;
执行单元,其用于顺序递增ID执行对应SQL。
其中,所述监听对象包括相互独立的连接监听、Session监听和请求监听
所述执行单元包括并发执行单元和串行执行单元,串行执行单元,用于当接收的两个以上请求存在数据依赖关系,根据SessionContext对象中的串行执行标记串行执行对应SQL。
装置还包括回写单元,其用于执行顺序回写程序,顺序回写程序包括根据请求到达时间顺序回写,执行结果缓存入派发器响应队列,按请求队列顺序逐个响应。
本发明还提出一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现基于MySQL协议的网关并发执行方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。
所述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。
基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,本发明提出一种计算机存储介质,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行基于MySQL协议的网关并发执行方法。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。