首页> 中国专利> 一种数据库中间件的流量管理方法及数据库中间件节点

一种数据库中间件的流量管理方法及数据库中间件节点

摘要

本发明提供的数据库中间件的流量管理方法及数据库中间件节点中,所述数据库中间件的流量管理方法包括主节点切换逻辑和数据库访问逻辑,所述主节点切换逻辑包括:接收来自于数据库集群发送的主节点的切换通知,并根据所述切换通知修改主节点信息;所述数据库访问逻辑包括:接收客户端发送的访问请求直接与所述主节点信息所标识的所述存储节点进行交互。如此配置,所述数据库中间件中存储的主节点信息的切换均由所述数据库集群主动发起修改,解决了现有技术中数据库中间件中存储的主节点状态易出现误判,进而错误地导致数据库中间件中的主节点信息和实际的主节点不匹配的问题。

著录项

  • 公开/公告号CN112256707A

    专利类型发明专利

  • 公开/公告日2021-01-22

    原文格式PDF

  • 申请/专利权人 上海爱可生信息技术股份有限公司;

    申请/专利号CN202011504985.3

  • 申请日2020-12-18

  • 分类号G06F16/22(20190101);G06F16/242(20190101);G06F16/27(20190101);

  • 代理机构31295 上海思捷知识产权代理有限公司;

  • 代理人王宏婧

  • 地址 201203 上海市浦东新区中国(上海)自由贸易试验区郭守敬路498号浦东软件园14幢22301-190室

  • 入库时间 2023-06-19 09:40:06

说明书

技术领域

本发明涉及计算机技术领域,特别涉及一种数据库中间件的流量管理方法及数据库中间件节点。

背景技术

现有的分库分表数据库中间件系统,例如MyCat等,是基于中间件主动探测实现的后端数据库节点流量切换机制。其中典型的流程是:

1)通过分库分表中间件中定时执行任务对于后端数据库节点进行轮询探测;

2)根据探测的结果在分库分表中间件中对于后端数据库节点的状态进行标识;

3)当某个后端数据库节点状态异常,将指向其的流量发送给其他同一组级别的备用数据库节点(从库);

4)直到下一次承载当前流量的后端数据库节点探测结果异常,再从当前备用数据库节点中选择一个探测结果正常的后端数据库节点进行流量的承载

例如:

现有分库分表中间件X连接一个后端数据库集群DBGroup,集群中包含两个节点DB1、DB2初始状态下DB1为主库、DB2为从库。

有分库分表中间件X先将收到的来自业务的SQL请求发送至DB1并请求来自DB1的查询结果。X中将定时通过SQL执行探测DB1、DB2的可用状态。

当X的探测SQL无法在DB1正常执行时,则判定DB1失效,将后续的SQL请求发送给DB2。并以DB2中返回的数据信息和操作结果为准对外提供正常的软件功能。

直到X对于DB2的探测也出现异常,将后续流量切换回DB1。

这类分库分表中间件对于后端节点的主动探测并执行流量切换的方式存在以下缺点:

1)主动探测易受网络等传输环节的影响,在网络设备出现偶发异常或出现其他原因的网络抖动容易出现误判。

2)主动探测易受分库分表中间件本身压力承载的影响,探测后端数据库节点可用性的操作会因为分库分表中间件本身承压过大而出现异常失败(机器内存、CPU资源、进程内部网络资源调度失败)。

3)流量切换(发送给其他同一组级别备用数据库节点)的决策由分库分表中间件做出,和真实的后端数据库主从复制关系无法达成时间上的一致,从而必有部分流量发送到从库上,从而导致后端数据库节点的数据无法达成主从一致。

综上,现有技术中,数据库中间件中存储的主节点状态易出现误判,进而错误地导致数据库中间件中的主节点信息和实际的主节点不匹配的问题。

发明内容

本发明提供了一种数据库中间件的流量管理方法及数据库中间件节点,用以解决现有技术中数据库中间件中存储的主节点状态易出现误判,进而错误地导致数据库中间件中的主节点信息和实际的主节点不匹配的问题。

为了解决上述技术问题,根据本发明的第一个方面,提供了一种数据库中间件的流量管理方法,其特征在于,用于辅助访问数据库集群,所述数据库集群包括至少两个存储节点,所述存储节点中的一个被配置为主节点,组成所述数据库集群的每一个物理节点均通过专用网络进行通讯;所述数据库中间件的流量管理方法包括主节点切换逻辑和数据库访问逻辑;所述主节点切换逻辑包括:接收来自于数据库集群发送的主节点的切换通知,并根据所述切换通知修改主节点信息;所述主节点信息用于定位所述主节点;所述数据库访问逻辑包括:接收客户端发送的访问请求;根据预设逻辑直接与所述主节点信息所标识的所述存储节点进行交互;所述访问请求包括读请求和写请求。

可选的,所述主节点切换逻辑还包括,接收来自于所述数据库集群发送的停止流量通知,并将可用状态设置为暂停。

可选的,所述主节点切换逻辑还包括,接收来自于所述数据库集群发送的开启流量通知,并将所述可用状态设置为可用。

可选的,所述预设逻辑包括,若所述可用状态为可用,则将所述访问请求发送至所述主节点信息所标识的所述存储节点。

可选的,所述预设逻辑包括,若所述可用状态为暂停,则将该访问请求丢弃。

可选的,所述预设逻辑包括,若所述可用状态为暂停,则在将该访问请求丢弃后,发送标识当前数据库无法访问的反馈信息给所述客户端。

可选的,所述预设逻辑包括,若所述可用状态为暂停,则将所述访问请求加入待处理消息队列。

可选的,所述主节点切换逻辑还包括,当所述可用状态从暂停切换至可用时,依次将待处理消息队列中的所述访问请求发送至所述主节点信息所标识的所述存储节点。

为了解决上述技术问题,根据本发明的第二个方面,提供了一种可读存储介质,所述可读存储介质上存储有程序,所述程序被执行时,实现如上述的数据库中间件的流量管理方法。

为了解决上述技术问题,根据本发明的第三个方面,提供了一种数据库中间件节点,所述数据库中间件节点包括上述的可读存储介质以及与所述可读存储介质通信连接的处理器,当所述第一处理器执行所述程序时,实现上述的数据库中间件的流量管理方法。

综上,在本发明提供的数据库中间件的流量管理方法及数据库中间件节点中,所述数据库中间件的流量管理方法包括主节点切换逻辑和数据库访问逻辑,所述主节点切换逻辑包括:接收来自于数据库集群发送的主节点的切换通知,并根据所述切换通知修改主节点信息;所述数据库访问逻辑包括:接收客户端发送的访问请求直接与所述主节点信息所标识的所述存储节点进行交互。如此配置,所述数据库中间件中存储的主节点信息的切换均由所述数据库集群主动发起修改,解决了现有技术中数据库中间件中存储的主节点状态易出现误判,进而错误地导致数据库中间件中的主节点信息和实际的主节点不匹配的问题。

附图说明

本领域的普通技术人员将会理解,提供的附图用于更好地理解本发明,而不对本发明的范围构成任何限定。其中:

图1是本发明一实施例中主节点切换的流程示意图。

具体实施方式

为使本发明的目的、优点和特征更加清楚,以下结合附图和具体实施例对本发明作进一步详细说明。需说明的是,附图均采用非常简化的形式且未按比例绘制,仅用以方便、明晰地辅助说明本发明实施例的目的。此外,附图所展示的结构往往是实际结构的一部分。特别的,各附图需要展示的侧重点不同,有时会采用不同的比例。

如在本发明中所使用的,单数形式“一”、“一个”以及“该”包括复数对象,术语“或”通常是以包括“和/或”的含义而进行使用的,术语“若干”通常是以包括“至少一个”的含义而进行使用的,术语“至少两个”通常是以包括“两个或两个以上”的含义而进行使用的,此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者至少两个该特征,“一端”与“另一端”以及“近端”与“远端”通常是指相对应的两部分,其不仅包括端点,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。此外,如在本发明中所使用的,一元件设置于另一元件,通常仅表示两元件之间存在连接、耦合、配合或传动关系,且两元件之间可以是直接的或通过中间元件间接的连接、耦合、配合或传动,而不能理解为指示或暗示两元件之间的空间位置关系,即一元件可以在另一元件的内部、外部、上方、下方或一侧等任意方位,除非内容另外明确指出外。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

本发明的核心思想在于提供一种数据库中间件的流量管理方法、可读存储介质及数据库中间件节点,用以解决现有技术中数据库中间件存储的主节点状态易出现误判,进而错误地导致数据库中间件中的主节点信息和实际的主节点不匹配的问题。

以下参考附图进行描述。

本实施例提供了一种数据库中间件节点,所述数据库中间件节点包括可读存储介质以及与所述可读存储介质通信连接的处理器,当所述处理器执行存储于所述可读存储介质上的程序时,实现数据库中间件的流量管理方法;所述数据库中间件节点用于辅助访问数据库集群;所述数据库集群包括至少两个存储节点,所述存储节点中的一个被设置为主节点,组成所述数据库集群的每一个物理节点均通过专用网络进行通讯。

所述数据库集群可包括一数据库管理节点,所述数据库管理节点用于切换所述数据库集群的主节点。所述数据库集群也可以不包括上述的数据库管理节点,其主节点的切换过程可通过其他方案实现。为了便于理解,以下按照所述数据库集群包括了数据库管理节点的方案进行描述,不包括所述数据库管理节点的方案,可以根据本实施例的设计思路进行理解,在此不做详细地描述。

需理解,所述数据库中间件节点、所述数据库管理节点和所述存储节点,既可以独立地设置,也可以设置于同一个物理的服务器中,例如,所述数据库管理节点设置于一个服务器,所述数据库管理节点和一个所述存储节点设置于另一个服务器,其余所述存储节点各设置于一个其他的服务器中。其具体设置方案,本领域技术人员可根据实际情况进行合理地设置。所述数据库集群,是指具有一个主节点的数据库集群,其数据的具体存储方式可以根据实际情况进行合理地设置,例如在每个所述存储节点保存一份完整的全局数据,或者每个所述存储节点冗余地保存部分的全局数据。各所述存储节点之间交互的方式也可以根据实际情况进行合理地设置,例如,各所述存储节点之间独立地交互或者各所述存储节点之间通过所述主节点交互。所述主节点,是指当所述数据库集群接收到客户端的访问请求时,对该请求直接进行响应的所述存储节点,所述主节点在响应所述访问请求的同时,也会对其他的所述存储节点发送相应的控制指令,使得所有所述存储节点按照预定逻辑实现数据的同步,所述控制指令以及数据的同步过程,可以根据实际情况进行合理地设置,例如,主节点将自身的修改操作发送给其他的所述存储节点,其他的所述存储节点也进行同样的修改,等等。上述技术细节,以及为了保证所述数据库集群能够正常工作需要的其他必要逻辑,技术人员可根据本领域的公知常识进行合理地配置,在此不做详细地描述。

所述数据库中间件节点中设置有数据库中间件的流量管理方法,所述数据库中间件的流量管理方法包括主节点切换逻辑和数据库访问逻辑;所述主节点切换逻辑包括:接收来自于数据库集群(具体地,可以是所述数据库管理节点)发送的主节点的切换通知,并根据所述切换通知修改主节点信息;所述主节点信息用于定位所述主节点;所述数据库访问逻辑包括:接收客户端发送的访问请求;根据预设逻辑直接与所述主节点信息所标识的所述存储节点进行交互;所述访问请求包括读请求和写请求。

所述数据库管理节点中设置有数据库管理方法,所述数据库管理方法包括:间歇性地向每个所述存储节点依次发送探测指令;将反馈异常信号的所述存储节点设置为异常;当异常的所述存储节点为主节点时,向数据库中间件节点和所述存储节点发送主节点的切换通知,驱使所述数据库中间件节点修改主节点信息以及驱使所述存储节点切换所述主节点。

如背景技术中提到的,现有技术中,通过分库分表中间件(即所述数据库中间件节点)对于所述的存储节点进行轮询探测;主动探测易受网络等传输环节的影响,在网络设备出现偶发异常或出现其他原因的网络抖动容易出现误判,而且主动探测易受所述数据库中间件节点压力承载的影响,探测后端数据库节点可用性的操作会因为所述数据库中间件节点本身承压过大而出现异常失败(机器内存、CPU资源、进程内部网络资源调度失败)。现在将轮询的任务从所述数据库中间件节点转移至所述数据库管理节点,从而减少了误判出现的概率,解决了现有技术中数据库的节点状态易出现误判,进而错误地导致主节点切换的问题。

需理解,所述异常信号,应广义地理解为,解析后的内容指示异常的信号,或者没有信号,因为当所述存储节点发生异常时,很可能处于一种无法发送信号的状态。需理解,所述存储节点在收到所述切换通知时,会进行主节点的切换,其过程包括:例如,切换主节点,将binlog复制补齐,切换复制关系等。该切换过程的具体实现,技术人员可根据本领域的公知常识进行合理地配置,在此不做详细地描述。需理解,当某个所述存储节点出现异常时,所述数据库管理节点还设置有恢复该所述存储节点的相关方法,例如,重启该节点,或者向管理人员的手机发送报警短信等,该流程并非本说明书的说明重点,因此不在此进行详细描述。

在一个优选的实施例中,所述数据库管理节点和一个所述存储节点设置于同一个物理服务器,可以进一步减少因网络原因导致的误判出现。

进一步地,所述数据库管理方法还包括:在向所述数据库中间件节点发送主节点的切换通知之前,先向所述数据库中间件节点发送停止流量通知。所述主节点切换逻辑还包括,接收来自于所述数据库集群(在本实施例中,为所述数据库管理节点)发送的停止流量通知,并将可用状态设置为暂停。在主节点切换过程中,客户端仍然有可能发送访问请求,若不对主节点的切换过程进行保护,则该访问可能造成的较轻的后果是,令客户端的显示出错;而可能造成的较重的后果是,导致所述数据库集群的某条数据出现错误,甚至可能导致整个所述数据库集群的宕机。但是通过上述配置,可以避免在主节点切换过程中受到访问的影响,确保切换过程安全运行。

进一步地,所述数据库管理方法还包括:在向所述数据库中间件节点发送停止流量通知之后,选择当前状态为正常的一个所述存储节点为主节点,并将该存储节点设置为所述切换通知的主节点。在向所述数据库中间件节点和所述存储节点发送主节点的切换通知之后,等待所述存储节点完成主节点的切换,然后向所述数据库中间件节点发送开启流量通知。所述主节点切换逻辑还包括,接收来自于所述数据库集群(在本实施例中,为所述数据库管理节点)发送的开启流量通知,并将所述可用状态设置为可用。如此配置,完善了主节点的切换过程,并保证了所述数据库中间件的主节点切换过程和所述数据库集群的主节点切换过程在时间上的一致性,保证了数据的准确性和所述数据库集群运行时不易出错。需理解,所述选择当前状态为正常的一个所述存储节点为主节点的逻辑,可以为随机选择一个或者按照排序选择一个,具体的方案本领域技术人员可以根据公知常识和具体实际情况进行配置,在此不做详细描述。

优选地,所述预设逻辑包括,若所述可用状态为可用,则将所述访问请求发送至所述主节点信息所标识的所述存储节点。

需理解,当所述可用状态为暂停时,所述数据库中间件可根据实际情况进行反馈,例如,在一实施例中,所述预设逻辑还包括,若所述可用状态为暂停,则将该访问请求丢弃,在将该访问请求丢弃后,发送标识当前数据库无法访问的反馈信息给所述客户端。

在另一实施例中,所述预设逻辑包括,若所述可用状态为暂停,则将所述访问请求加入待处理消息队列。所述主节点切换逻辑还包括,当所述可用状态从暂停切换至可用时,依次将待处理消息队列中的所述访问请求发送至所述主节点信息所标识的所述存储节点。较优地,在将所述访问请求加入待处理消息队列时,可以同时向所述客户端发送请等待的反馈信息给所述客户端。

需理解,当所述存储节点接收到所述数据库中间件节点转发的访问请求时,可以根据实际情况进行响应,例如,直接向发送访问请求的客户端发送反馈信息,或者向所述数据库中间件节点发送反馈信息,再由所述数据库中间件节点向所述客户端转发反馈信息。上述技术细节,本领域技术人员可以根据公知常识和实际的需求进行配置,在此不进行详细描述。

请参考图1,图1是本发明一实施例中主节点切换的流程示意图。在一示范性的实施例中,上述主节点切换过程如下:

所述数据库管理节点使用MHA (Master High Availability, 高可用组件)模块监控并维护所述数据库集群,所述数据库集群当前包括两个存储节点,分别为M和S,其中M为主节点,并且有所述数据库中间件节点X将M和S作为所述数据库集群进行使用,初始状态下将M作为主节点进行读写。运行过程中发生M故障时:

1)所述MHA模块调用通知脚本向所述数据库中间件节点X发送停止流量通知,暂停所述数据库中间件节点X中对于M和S的数据流量;

2)所述MHA模块对于正常的所述存储节点进行决策,选择一个适合成为主节点的所述存储节点,在本实施例中即S,选择完毕之后,所述MHA模块调用脚本向所述数据库中间件节点X发送主节点的切换通知,所述切换通知的内容是新的主节点为S;

3)所述MHA模块调用脚本向所述存储节点发送主节点的切换通知,所述切换通知的内容是新的主节点为S;

4)所述MHA模块协助所述数据库集群进行主从切换的正常流程操作,将binlog复制补齐,将复制关系从M->S调整为S->M;

5)所述MHA模块在所述数据库集群完成主从切换之后,调用通知脚本向所述数据库中间件节点X发送开启流量通知,打开M和S两个所述存储节点的流量。

在本实施例中,所述数据库中间件节点X对于M和S两个所述存储节点的状态,完全来自于所述MHA模块的通知,从而达成流量入口(所述数据库中间件节点X)对于所述存储节点的状态和所述数据库集群真实的状态一致的效果,最终达成对外(所述数据库中间件节点X中收到的SQL查询请求)提供的数据拥有一致和完整的效果。

本实施例还提供了一种数据库中间件的流量管理方法,用于辅助访问数据库集群,所述数据库集群包括至少两个存储节点,所述存储节点中的一个被配置为主节点;所述数据库中间件的流量管理方法包括主节点切换逻辑和数据库访问逻辑;所述主节点切换逻辑包括:接收来自于数据库集群发送的主节点的切换通知,并根据所述切换通知修改主节点信息;所述主节点信息用于定位所述主节点;所述数据库访问逻辑包括:接收客户端发送的访问请求;根据预设逻辑直接与所述主节点信息所标识的所述存储节点进行交互;所述访问请求包括读请求和写请求。

所述主节点切换逻辑还包括,接收来自于所述数据库集群发送的停止流量通知,并将可用状态设置为暂停。

所述主节点切换逻辑还包括,接收来自于所述数据库集群发送的开启流量通知,并将所述可用状态设置为可用。

所述预设逻辑包括,若所述可用状态为可用,则将所述访问请求发送至所述主节点信息所标识的所述存储节点。

在一实施例中,所述预设逻辑包括,若所述可用状态为暂停,则将该访问请求丢弃,在将该访问请求丢弃后,发送标识当前数据库无法访问的反馈信息给所述客户端。

在另一实施例中,所述预设逻辑包括,若所述可用状态为暂停,则将所述访问请求加入待处理消息队列。所述主节点切换逻辑还包括,当所述可用状态从暂停切换至可用时,依次将待处理消息队列中的所述访问请求发送至所述主节点信息所标识的所述存储节点。

本实施例还提供了一种可读存储介质,所述可读存储介质上存储有程序,所述程序被执行时,实现如上述的数据库中间件的流量管理方法。

上述数据库中间件的流量管理方法以及可读存储介质的设计思路和所述数据库中间件节点的设计思路相同,同样具有避免主节点信息不匹配的有益效果。

综上,在本实施例提供的数据库中间件的流量管理方法及数据库中间件节点中,所述数据库中间件的流量管理方法包括主节点切换逻辑和数据库访问逻辑,所述主节点切换逻辑包括:接收来自于数据库集群发送的主节点的切换通知,并根据所述切换通知修改主节点信息;所述数据库访问逻辑包括:接收客户端发送的访问请求直接与所述主节点信息所标识的所述存储节点进行交互。如此配置,所述数据库中间件中存储的主节点信息的切换均由所述数据库集群主动发起修改,解决了现有技术中数据库中间件中存储的主节点状态易出现误判,进而错误地导致数据库中间件中的主节点信息和实际的主节点不匹配的问题

上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于本发明技术方案的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号