基于中间件的数据库集群通信方法及数据库集群中间件技术

技术编号:38267595 阅读:15 留言:0更新日期:2023-07-27 10:24
本发明专利技术公开了一种基于中间件的数据库集群通信方法及数据库集群中间件,用以解决目前数据库中间件采用进程通信模式在面向IO频繁时性能降低的问题。基于中间件的数据库集群通信方法包括:基于前端应用的通信连接请求与前端应用建立连接并为其创建一个具有独立协程缓冲区的协程;接收前端应用第一次发送的第一协议包并确定其要发往的目标后端,将第一协议包缓冲至协程缓冲区;接收前端应用当前发送的当前协议包并确定其要发往的目标后端;判断当前协议包与协程缓冲区中的协议包要发往的目标后端是否一致,若是,将当前协议包缓冲至协程缓冲区,否则,将协程缓冲区中存储的所有协议包一次性发送至对应的目标后端,并将当前协议包缓冲至协程缓冲区。议包缓冲至协程缓冲区。议包缓冲至协程缓冲区。

【技术实现步骤摘要】
基于中间件的数据库集群通信方法及数据库集群中间件


[0001]本专利技术涉及数据库集群
,尤其涉及一种基于中间件的数据库集群通信方法及数据库集群中间件。

技术介绍

[0002]当在数据库集群中使用中间件时,一般会使用读写分离技术。根据数据库通信协议的协议包的不同而发送至集群中不同的数据库节点,以提高数据库集群的整体性能。而数据库中间件的一个最基本的功能就是与前端和后端建立连接,并及时转发获取的消息至目标端。
[0003]目前的数据库中间件(如pgpool)是采用多进程实现的通信工具。多进程间所有资源皆独立,并不会相互干扰。其通信方法是读取到前后端消息后直接转发,扩展协议场景下也能缓冲2~3个特定的协议包后即做转发。但该方案存在以下缺陷:当处于等待读写状态时,则进程阻塞,从而使进程处于暂停状态;当并发量较大时,内核会不断的做进程切换,从而导致切换过程本身耗费了大量时间。导致在高并发,读写IO频繁的情况下,pgpool并不会对性能有明显的提升。

技术实现思路

[0004]本专利技术实施例提供一种基于中间件的数据库集群通信方法及数据库集群中间件,用以解决现有技术中数据库中间件面向IO频繁时性能降低的问题。
[0005]一方面,本专利技术实施例提出一种基于中间件的数据库集群通信方法,包括:
[0006]接收前端应用发起的通信连接请求,并基于所述通信连接请求与所述前端应用建立连接、为所述前端应用创建一个对应的协程,所述协程具有一个独立的协程缓冲区;
[0007]接收所述前端应用第一次发送的第一协议包,通过对所述第一协议包进行协议分析确定所述第一协议包要发往的目标后端,并将所述第一协议包缓冲至所述协程缓冲区;
[0008]接收所述前端应用当前发送的当前协议包,通过对所述当前协议包进行协议分析确定所述当前协议包要发往的目标后端;
[0009]判断所述当前协议包要发往的目标后端与所述协程缓冲区中存储的协议包对应的目标后端是否一致,若是,则将所述当前协议包缓冲至所述协程缓冲区,否则,将所述协程缓冲区中存储的所有协议包一次性发送至对应的目标后端,并将所述当前协议包缓冲至所述协程缓冲区。
[0010]又一方面,本专利技术实施例提出一种数据库集群中间件,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的方法。
[0011]本专利技术实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有信息传递的实现程序,所述程序被处理器执行时实现如上所述的方法。
[0012]采用本专利技术实施例,利用协程实现中间件通信,并为协程创建独立的数据存储空
间,可以在一个进程中建立非常多的通信,且当一个协程阻塞时,可以立刻切换到其它连接,极大的减少了读写阻塞等待时间,而且各协程拥有自己的资源,运行过程中,互不干扰。通过协程缓冲区的设计与数据库中间件通信场景的结合,使得原本的IO读写,尽可能的转为对内存的操作,使得数据库中间件的性能进一步的提高。
[0013]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。
附图说明
[0014]通过阅读下文实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。在附图中:
[0015]图1是本专利技术实施例中基于中间件的数据库集群通信方法流程图;
[0016]图2是本专利技术实施例中基于中间件的数据库集群通信方法流程图;
[0017]图3是本专利技术实施例中基于中间件的数据库集群通信方法流程图;
[0018]图4是本专利技术实施例中基于中间件的数据库集群通信方法流程图;
[0019]图5是本专利技术实施例中基于中间件的数据库集群通信方法流程图。
具体实施方式
[0020]下面将参照附图更详细地描述本专利技术的示例性实施例。虽然附图中显示了本专利技术的示例性实施例,然而应当理解,可以以各种形式实现本专利技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本专利技术,并且能够将本专利技术的范围完整的传达给本领域的技术人员。另外,在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0021]一方面,如图1所示,本专利技术实施例提出一种基于中间件的数据库集群通信方法,包括:
[0022]S1,接收前端应用发起的通信连接请求,并基于所述通信连接请求与所述前端应用建立连接、为所述前端应用创建一个对应的协程,所述协程具有一个独立的协程缓冲区;
[0023]S2,接收所述前端应用第一次发送的第一协议包,通过对所述第一协议包进行协议分析确定所述第一协议包要发往的目标后端,并将所述第一协议包缓冲至所述协程缓冲区;
[0024]S3,接收所述前端应用当前发送的当前协议包,通过对所述当前协议包进行协议分析确定所述当前协议包要发往的目标后端;
[0025]S4,判断所述当前协议包要发往的目标后端与所述协程缓冲区中存储的协议包对应的目标后端是否一致,若是,则将所述当前协议包缓冲至所述协程缓冲区,否则,将所述协程缓冲区中存储的所有协议包一次性发送至对应的目标后端,并将所述当前协议包缓冲至所述协程缓冲区。
[0026]可以理解,协程缓冲区中可以存储一个或多个协议包,协程缓冲区中存储的协议包的目标后端都一致。当前接收的协议包(即当前协议包)要发往的目标后端如果与协程缓
冲区中协议包的目标后端不一致时,就将协程缓冲区中的所有协议包打包一次性发送出去,然后将当前的协议包缓冲至协程缓冲区。
[0027]在本专利技术实施例中,首先利用协程实现中间件通信,可以在一个进程中建立非常多的通信,且当一个协程阻塞时,可以立刻切换到其它连接,极大的减少了读写阻塞等待时间,而且创建协程私有的本地的缓存区,用于通信中存放协议包,各协程拥有自己的资源,运行过程中,互不干扰,可以大量减少IO读写的次数,从而提高协程的运行效率,更进一步提高数据库中间件的性能。
[0028]在上述实施例的基础上,进一步提出各变型实施例,在此需要说明的是,为了使描述简要,在各变型实施例中仅描述与上述实施例的不同之处。
[0029]根据本专利技术的一些实施例,所述协程本地缓冲区的实现方法还包括:
[0030]当所述当前协议包要发往的目标后端与所述协程缓冲区中存储的协议包对应的目标后端一致时,先不直接将当前协议包缓冲至协程缓冲区,而是先检查协程缓冲区是否已满;若所述协程缓冲区中协议包的个数没有超过预设阈值,则将所述当前协议包缓冲至所述协程缓冲区,否则,将所述当前协议包连同所述协程缓冲区中存储的所有协议包一次性发送至对应的目标后端。
[0031]这里的预设阈值可以根据实际应用需求进行设置。...

【技术保护点】

【技术特征摘要】
1.一种基于中间件的数据库集群通信方法,其特征在于,包括:接收前端应用发起的通信连接请求,并基于所述通信连接请求与所述前端应用建立连接、为所述前端应用创建一个对应的协程,所述协程具有一个独立的协程缓冲区;接收所述前端应用第一次发送的第一协议包,通过对所述第一协议包进行协议分析确定所述第一协议包要发往的目标后端,并将所述第一协议包缓冲至所述协程缓冲区;接收所述前端应用当前发送的当前协议包,通过对所述当前协议包进行协议分析确定所述当前协议包要发往的目标后端;判断所述当前协议包要发往的目标后端与所述协程缓冲区中存储的协议包对应的目标后端是否一致,若是,则将所述当前协议包缓冲至所述协程缓冲区,否则,将所述协程缓冲区中存储的所有协议包一次性发送至对应的目标后端,并将所述当前协议包缓冲至所述协程缓冲区。2.如权利要求1所述的方法,其特征在于,所述协程本地缓冲区的实现方法还包括:当所述当前协议包要发往的目标后端与所述协程缓冲区中存储的协议包对应的目标后端一致时,统计所述协程缓冲区中协议包的个数;若所述协程缓冲区中协议包的个数没有超过预设阈值,则将所述当前协议包缓冲至所述协程缓冲区,否则,将所述当前协议包连同所述协程缓冲区中存储的所有协议包一次性发送至对应的目标后端。3.如权利要求1所述的方法,其特征在于,所述协程本地缓冲区的实现方法还包括:根据数据库通信协议,将协议包分为立刻处理类型和非立刻处理类型...

【专利技术属性】
技术研发人员:谭洋苗健吕新杰
申请(专利权)人:瀚高基础软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1