一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种流复制集群节点转发数据的方法及设备与流程

2021-12-07 21:41:00 来源:中国专利 TAG:


1.本发明涉及通信技术领域,尤其涉及一种流复制集群节点转发数据的方法及设备。


背景技术:

2.目前数据库流复制集群中,通过让备节点具有dml转发dml操作到主节点的能力,实现了集群所有节点的全功能特性,避免了前置读写分离节点的性能瓶颈和复杂的网络部署。传统备节点转发方案中,备节点判断如果是dml语句,就转发给主节点,如果是查询语句就在备节点本地执行,通常要判断要查询的表的数据是否最新版本,如果不是最新,要等到新的数据从主节点同步完成之后,再返回给用户。
3.传统流复制集群中存在主备角色,所有数据的写操作都发生在主节点,且数据的最新版本都首先发生在主节点,主节点通过流复制功能把数据同步给所有的备节点。那么在传统转发方案中,备节点的数据查询操作都要等待查询的表的最新数据都已经从主节点同步过来,这是一种非常耗时的操作,特别是在写入量比较大的时候,流复制通常存在比较大的时间延迟,那么备节点的等待操作也同样存在较大延迟,集群的性能会因此大幅度的下降。


技术实现要素:

4.本发明实施例提供一种流复制集群节点转发数据的方法及设备,实现备节点提供数据一致性的同时,避免拥塞操作,大幅度提升集群节点的性能。
5.本发明实施例提供一种流复制集群节点转发数据的方法,应用于主节点,包括:
6.获取dml操作请求消息;
7.基于所述dml请求消息进行数据更新操作,并记录被操作的表的标识信息;
8.将携带所述标识信息的用户数据发送至备用节点,以供备用节点根据数据查询请求将对应的用户数据发送给客户端。
9.在一些实施例中,所述流复制集群节点转发数据的方法,还包括:
10.获取备用节点转发的查询请求,其中所述查询请求用于请求在先执行了dml操作的表的用户数据;
11.基于所述查询请求执行数据查询,并将查询到的用户数据发送给备用节点,以供备用节点将所查询的用户数据发送给客户端。
12.在一些实施例中,将携带所述标识信息的数据发送至备用节点包括:
13.基于数据传输协议,在向备用节点发送的用户数据中,添加对应的dirtyoid参数,以实现携带所述标识信息。
14.本发明实施例还提供一种流复制集群节点转发数据的方法,应用于备用节点,包括:
15.获取dml操作请求消息;
16.将所述dml操作请求消息转发至主节点,以供主节点进行数据更新;
17.接收主节点发送的携带有被操作的表的标识信息的用户数据;
18.解析所述标识信息,在本地维护被操作的表,并将用户数据发送给客户端。
19.在一些实施例中,获取客户端发出的查询请求,基于本地维护信息确定所述查询请求是否请求在先被操作的表的数据;
20.若请求被操作的表的数据,则进一步判断被操作的表的标记是否失效;
21.若未失效,则将所述查询请求转发至主节点。
22.在一些实施例中,被操作的表的标记是预设的超时时延,在经过所述超时时延之后,判定被操作的表的标记失效。
23.在一些实施例中,在判定被操作的表的标记失效的情况下,在所述备用节点本地执行数据查询,并将查询到的用户数据发送给客户端。
24.本发明实施例还提供一种节点设备,包括处理器、存储器及通信总线;
25.所述通信总线用于实现处理器和存储器之间的连接通信;
26.所述处理器用于执行存储器中存储的一个或者多个计算机程序,以实现本公开各实施例所述的流复制集群节点转发数据的方法。
27.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本公开各实施例所述的流复制集群节点转发数据的方法的步骤。
28.本发明实施例通过主节点记录被操作的表的标识信息,从而备用节点能够通过标识信息,在本地维护被操作的表,进而实现有条件地进行数据转发或者数据查询,保证节点一致性的同时降低拥塞等不稳定因素。
29.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
30.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
31.图1为本公开实施例流复制集群节点转发数据的方法应用于主节点侧的基本流程图;
32.图2为本公开实施例流复制集群节点转发数据的方法应用于备节点侧的基本流程图;
33.图3为本公开实施例流复制集群节点转发数据的方法总流程图。
具体实施方式
34.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围
完整的传达给本领域的技术人员。
35.数据库流复制集群节点中,拥有两种角色,一种是主节点,全网同一时刻只能有一个主节点,而另一种是备节点,除了主节点之外的节点都应该是备节点。为了保证集群系统的数据一致性,所有写入的操作都要交给一个节点来处理,这就是主节点,其他的节点都只能做数据得读取操作,当然主节点也可以提供数据读取服务。由于数据库集群这样的特性,应用端(客户端)就要有能力去区分要发送的每一种消息的读写属性,然后根据读写属性决定发送给哪一个类型的节点。
36.本发明实施例提供一种流复制集群节点转发数据的方法,应用于主节点,如图1所示,包括:
37.步骤s101、获取dml操作请求消息。dml操作请求消息用于执行具体的dml操作,例如dml操作请求消息请求对表a进行数据修改。
38.步骤s102、基于所述dml请求消息进行数据更新操作,并记录被操作的表的标识信息。具体的可以依据dml操作请求消息对表a进行数据修改,本实施例中将有被dml操作过的表(表a)称为脏表,主节点每一次dml操作都可以自动对本次要进行数据修改所涉及的表进行脏表标记,脏表标记表示这个表存在数据改动。
39.步骤s103、将携带所述标识信息的用户数据发送至备用节点,以供备用节点根据数据查询请求将对应的用户数据发送给客户端。在添加标记之后,返回携带脏表标识的消息给备节点,返回的消息中也包含被dml操作过的表a。在备节点收到返回的数据之后,根据数据查询请求将对应的用户数据发送给客户端,本次dml操作流程即结束。对于转发流复制集群,备节点通过自己的转发模块,把写类型的消息转发给主节点,那么对于客户端一侧来说,就不用再区分消息的读写属性,而是轮询发给任何一个集群节点(主节点或备节点)均可。后续在请求查询表a的情况下,备用节点能够通过标识信息,在本地维护被操作的表,进而实现有条件地进行数据转发或者数据查询,保证节点一致性的同时降低拥塞等不稳定因素。
40.在一些实施例中,将携带所述标识信息的数据发送至备用节点包括:基于数据传输协议,在向备用节点发送的用户数据中,添加对应的dirtyoid参数,以实现携带所述标识信息。例如主节点根据dml操作执行数据更新操作,再进行更新的同时记录当前更新的操作的表的标识,并且在做数据返回的时候,可以修改数据传输协议,添加一个dirtyoid的参数,携带脏表标识信息,如果本次操作存在多个表的更新操作,那么参数可以携带多个dirtyoid的信息。
41.在前述进行了表a的dml操作的情况下,客户端给备节点发送了关于表a的查询语句。备节点进行判定是否进行转发,具体的判断方式可以是对脏表设置一个超时时间,超过这个时间,可以取消脏表标记。每一次脏表的标记操作都会重新设置超时时间。脏表的事务标记,对于同一个事务中的查询语句,如果发现访问的是脏表的数据,可以忽略掉超时时间,无条件的进行转发主节点操作,如果超时则可以不进行转发。在备节点转发了关于表a的查询请求的情况下,所述流复制集群节点转发数据的方法,还包括:获取备用节点转发的查询请求,其中所述查询请求用于请求在先执行了dml操作的表的用户数据。主节点基于所述查询请求执行数据查询,并将查询到的用户数据发送给备用节点,以供备用节点将所查询的用户数据发送给客户端。
42.数据一致性要求在任何一个链接中,每一个操作要能够获取到前面操作的最新版本的数据,如果最新的数据发生在主节点,那么就要想办法判断到这种情况,并且把后续的操作也发送给主节点执行。本实施例通过在备节点设置超时时间的方式,实现了不用等待改动的数据流复制回到的备节点,从而减少了等待时间,大幅提升节点性能。
43.本发明实施例还提供一种流复制集群节点转发数据的方法,应用于备用节点,如图2所示,包括:
44.步骤s201、获取dml操作请求消息,具体的备用节点可以获取客户端发送的dml操作请求消息,例如客户端发送的dml操作请求消息请求对表a进行数据修改。
45.步骤s202、将所述dml操作请求消息转发至主节点,以供主节点进行数据更新。主节点可以依据dml操作请求消息对表a进行数据修改,本实施例中将有被dml操作过的表(表a)称为脏表,主节点每一次dml操作都会自动对本次要进行数据修改所涉及的表进行脏表标记,脏表标记表示这个表存在数据改动。
46.步骤s203、接收主节点发送的携带有被操作的表的标识信息的用户数据。
47.步骤s204、解析所述标识信息,在本地维护被操作的表,并将用户数据发送给客户端。备节点解析主节点发送的消息,识别主节点所添加的dirtyoid参数,提取出来本次dml操作涉及的脏表标识,把脏表(表a)写入到本地维护的脏表列表结构中,方便未来进行查询。对于本次客户端请求的数据,备节点把主节点返回的用户数据返回给客户端。
48.本公开的流复制集群节点转发数据的方法实现了有条件地进行数据转发或者数据查询,保证了节点一致性的同时降低了拥塞等不稳定因素。
49.在一些实施例中,获取客户端发出的查询请求,基于本地维护信息确定所述查询请求是否请求在先被操作的表的数据;若请求被操作的表的数据,则进一步判断被操作的表的标记是否失效;若未失效,则将所述查询请求转发至主节点。备用节点根据本地维护的脏表列表结构,对脏表(例如表a)设置一个超时时间,超过这个时间,可以取消脏表标记,对于取消脏表标记的数据(已超时),可以不再进行转发。每一次脏表的标记操作都会重新设置超时时间。脏表的事务标记,对于同一个事务中的查询语句,如果发现访问的是脏表的数据,可以忽略掉超时时间,无条件的进行转发主节点操作,当然如果超时则可以不进行转发。
50.在一些实施例中,被操作的表的标记是预设的超时时延,在经过所述超时时延之后,判定被操作的表的标记失效。在一些实施例中,在判定被操作的表的标记失效的情况下,在所述备用节点本地执行数据查询,并将查询到的用户数据发送给客户端。通过这种数据查询和转发的方式能够极大减少等待时间,大幅度提升性能,并且保持节点的数据的一致性。
51.图3示出了一种流复制集群节点转发数据的方法的具体流程图,本示例中流复制集群节点转发数据的方法,包括如下步骤:
52.步骤s301、客户端发送了一个dml消息请求,申请数据更改。
53.步骤s302、备节点通过解析sql语句,发现是dml类型的语句,就转发到主节点。
54.步骤s303、主节点执行数据更新操作,再进行更新的同事记录当前更新的操作的表的标识,并且在做数据返回的时候,修改数据传输协议,添加一个dirtyoid的参数,携带脏表标识信息,如果本次操作存在多个表的更新操作,那么参数携带多个oid的信息。
55.步骤s304、返回携带脏表标识的消息给备节点。
56.步骤s305、备节点解析主节点返回的消息,识别新添加的dirtyoid参数,提取出来本次dml操作涉及的脏表标识,把脏表写入到本地维护的脏表列表结构里面去,方便未来进行查询。
57.步骤s306、备节点把主节点返回的用户数据返回给客户端。
58.步骤s307、接着客户端给备节点发送了关于表a的查询语句。
59.步骤s308、发现是查询语句之后,再查询维护的脏表信息,发现查询的是一个脏表的数据,且没有超时。此种情况会触发主节点转发。
60.步骤s309、转发查询消息给主节点,获取刚刚dml操作在主节点的最新的数据版本。
61.步骤s310、主节点执行查询操作,本地扫描数据。
62.步骤s311、主节点返回查询到的数据,返回给备节点。
63.步骤s312、备节点直接转发主节点的数据给客户端。
64.步骤s313、经过设置的超时时间以后,脏表的标记已经失效,此时继续接收到客户端关于表a的查询操作。
65.步骤s314、备节点判断是查询操作,发现表a是脏表,且已经超时,不再进行转发。
66.步骤s315、备节点本地执行查询操作,本地扫描数据。
67.步骤s316、备节点返回数据给客户端。
68.通过本公开的数据库流复制集群备节点转发方法,可以保证所有备节点数据的一致性,同时保证系统对消息的处理性能,避免因为保证一致性而发生的拥塞等不稳定因素,有效减少查询等待时间,大幅度提升集群性能。
69.本发明实施例还提供一种节点设备,包括处理器、存储器及通信总线;所述通信总线用于实现处理器和存储器之间的连接通信;所述处理器用于执行存储器中存储的一个或者多个计算机程序,以实现本公开各实施例所述的流复制集群节点转发数据的方法。
70.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本公开各实施例所述的流复制集群节点转发数据的方法的步骤。
71.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
72.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
73.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
74.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献