名单同步方法和集群系统与流程

文档序号:21000789发布日期:2020-06-05 22:39阅读:161来源:国知局
名单同步方法和集群系统与流程

本申请涉及网络技术领域,尤其涉及一种名单同步方法和集群系统。



背景技术:

集群系统是通过集群技术,在付出较低成本的情况下,获得性能、可靠性、灵活性方面相对较高的系统。参见图1,集群系统一般包括作为主节点的第一服务11和第一服务器11管理的作为子节点的多个第二服务器12。

目前,集群系统通常采用主节点主动将上层应用系统发送的名单更新消息推送给各个子节点,以实现主节点和子节点间的名单同步。该方法中,名单同步过程中不允许中断,即需要所有的子节点都与主节点的名单同步后,才能进行下一步的操作,因此等待时间较长,对于新加入的子节点,必须等待该子节点同步所有名单后主节点才能再进行更新操作,否则会导致该子节点上的名单冗余或是缺失。综上,目前集群系统中主节点和子节点间的名单同步速度较慢,造成系统的运行效率较低。



技术实现要素:

有鉴于此,本申请提供一种名单同步方法和集群系统,用以加快主节点和子节点间的名单同步速度,从而提高系统的运行效率。

第一方面,本申请实施例提供了一种名单同步方法,所述方法应用于集群系统中作为主节点的第一服务器,包括:

接收更新消息,根据所述更新消息执行以下操作:在第一服务器已有的名单操作类型列表中增加包含所述更新操作类型的名单操作类型表项,并根据所述更新消息携带的更新操作类型对第一服务器内的名单索引表进行更新;

在完成所述操作后,针对所述第一服务器管理的作为子节点的每一第二服务器,通知该第二服务器从指定名单操作类型表项开始读取名单操作类型表项,以由该第二服务器根据读取的名单操作类型表项对本第二服务器已有的名单索引表进行更新以实现与第一服务器已有的名单索引表同步,所述指定名单操作类型表项为所述第一服务器已记录的所述名单操作类型列表中与第二服务器对应的名单操作类型表项。

上述方法,主节点中保存有名单操作类型列表和名单索引表,在名单同步过程中,作为主节点的第一服务器根据接收到的更新消息执行以下操作:在第一服务器已有的名单操作类型列表中增加包含所述更新操作类型的名单操作类型表项,并根据所述更新消息携带的更新操作类型对第一服务器内的名单索引表进行更新;在完成上述操作后,针对第一服务器管理的作为子节点的每一第二服务器,第一服务器通知该第二服务器从第一服务器已记录的与第二服务器对应的指定名单操作类型表项开始读取名单操作类型表项,以由该第二服务器根据读取的名单操作类型表项对本第二服务器已有的名单索引表进行更新以实现与第一服务器已有的名单索引表同步,即作为子节点的各个第二服务器可以异步进行主节点和子节点间的名单同步,因此可以加快主节点和子节点间的名单同步速度,从而可以提高系统的运行效率。

在一可能的实现方式中,在第二服务器读完所述名单操作类型列表中所有名单操作类型表项之后,该方法进一步包括:

将已记录的与第二服务器对应的指定名单操作类型表项更新为所述名单操作类型列表中最后一个名单操作类型表项。

在一可能的实现方式中,所述更新操作类型为增加;

所述更新消息进一步携带待增加的名单id以及名单id对应的名单信息;

所述在第一服务器已有的名单操作类型列表中增加包含所述更新消息携带的更新操作类型的名单操作类型表项包括:

在第一服务器已有的名单操作类型列表的尾端增加包含所述更新操作类型、以及所述更新消息携带的名单信息的名单操作类型表项;

所述根据所述更新操作类型对第一服务器内的名单索引表进行更新包括:

在第一服务器已有的名单索引表的尾端增加包含所述更新消息携带的名单id的名单索引表项,并建立该新增加的名单索引表项与所述名单操作类型列表新增加的名单操作类型表项之间的对应关系。

在一可能的实现方式中,所述更新操作类型为修改;

所述更新消息进一步携带待修改的名单id以及名单id对应的名单信息;

所述在第一服务器已有的名单操作类型列表中增加包含所述更新消息携带的更新操作类型的名单操作类型表项包括:

查找第一服务器已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项;

在已建立的名单操作类型表项与名单索引表项的对应关系中查找包含所述更新消息携带的名单id的名单索引表项对应的第一服务器已有的名单操作类型列表中的名单操作类型表项,并删除查找到的所述名单操作类型表项;

在第一服务器的名单操作类型列表的尾端增加包含所述更新操作类型、以及所述更新消息携带的名单信息的名单操作类型表项;

所述根据所述更新操作类型对第一服务器内的名单索引表进行更新包括:

修改第一服务器已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项,并建立该新修改的名单索引表项与所述名单操作类型列表新增加的名单操作类型表项之间的对应关系。

在一可能的实现方式中,所述更新操作类型为删除;

所述更新消息进一步携带待删除的名单id;

所述在第一服务器已有的名单操作类型列表中增加包含所述更新消息携带的更新操作类型的名单操作类型表项包括:

查找第一服务器已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项;

在已建立的名单操作类型表项与名单索引表项的对应关系中查找包含所述更新消息携带的名单id的名单索引表项对应的第一服务器已有的名单操作类型列表中的名单操作类型表项,并删除查找到的所述名单操作类型表项;

在第一服务器的名单操作类型列表的尾端增加包含所述更新操作类型、以及所述更新消息携带的名单id的名单操作类型表项;

所述根据所述更新操作类型对第一服务器内的名单索引表进行更新包括:

删除第一服务器已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项。

在一可能的实现方式中,所述根据所述更新消息执行所述操作包括:

采用读写锁根据所述更新消息执行所述操作;

所述通知第二服务器从指定名单操作类型表项开始读取名单操作类型表项包括:

通知第二服务器从指定名单操作类型表项开始采用读写锁读取名单操作类型表项。

该方法中,第一服务器执行名单更新操作时采用读写锁机制,以及第二服务器从指定名单操作类型表项开始读取名单操作类型表项时采用读写锁机制,这样可以防止主节点和子节点上的内容冲突。

在一可能的实现方式中,在完成所述操作后,该方法还包括:

开启检测线程,并通过所述检测线程获取已记录的与所述第一服务器管理的作为子节点的各个第二服务器中名单同步最慢的一个第二服务器对应的指定名单操作类型表项的位置n;

删除第一服务器已有的名单操作类型列表中所述检测线程上一次检测所述名单操作类型列表的检测位置m到所述n之间的包含所述更新操作类型为删除的名单操作类型表项,并将检测位置从m更新到n;其中,所述n>所述m。

该方法中,开启检测线程,以删除所有第二服务器均已读取的第一服务器已有的名单操作类型列表中包含更新操作类型为删除的名单操作类型表项,这样可以避免数据冗余。

第二方面,本申请实施例还提供了一种集群系统,所述集群系统包括:作为主节点的第一服务器和所述第一服务器管理的作为子节点的多个第二服务器;

所述第一服务器,用于接收更新消息,根据所述更新消息执行以下操作:在第一服务器已有的名单操作类型列表中增加包含所述更新消息携带的更新操作类型的名单操作类型表项,并根据所述更新操作类型对第一服务器内的名单索引表进行更新;

以及在完成所述操作后,针对所述第一服务器管理的作为子节点的每一第二服务器,通知该第二服务器从指定名单操作类型表项开始读取名单操作类型表项,所述指定名单操作类型表项为所述第一服务器已记录的所述名单操作类型列表中与第二服务器对应的名单操作类型表项;

所述第二服务器,用于从所述第一服务器通知的指定名单操作类型表项开始读取名单操作类型表项,并根据读取的名单操作类型表项对本第二服务器已有的名单索引表进行更新以实现与第一服务器已有的名单索引表同步。

在一可能的实现方式中,所述第一服务器进一步用于:

在第二服务器读完所述名单操作类型列表中所有名单操作类型表项之后,将已记录的与第二服务器对应的指定名单操作类型表项更新为所述名单操作类型列表中最后一个名单操作类型表项。

在一可能的实现方式中,所述更新操作类型为增加;

所述更新消息进一步携带待增加的名单id以及名单id对应的名单信息;

所述第一服务器用于:

在第一服务器已有的名单操作类型列表的尾端增加包含所述更新操作类型、以及所述更新消息携带的名单信息的名单操作类型表项;

在第一服务器已有的名单索引表的尾端增加包含所述更新消息携带的名单id的名单索引表项,并建立该新增加的名单索引表项与所述名单操作类型列表新增加的名单操作类型表项之间的对应关系。

在一可能的实现方式中,所述更新操作类型为修改;

所述更新消息进一步携带待修改的名单id以及名单id对应的名单信息;

所述第一服务器用于:

查找第一服务器已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项;

在已建立的名单操作类型表项与名单索引表项的对应关系中查找包含所述更新消息携带的名单id的名单索引表项对应的第一服务器已有的名单操作类型列表中的名单操作类型表项,并删除查找到的所述名单操作类型表项;

在第一服务器的名单操作类型列表的尾端增加包含所述更新操作类型、以及所述更新消息携带的名单信息的名单操作类型表项;

修改第一服务器已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项,并建立该新修改的名单索引表项与所述名单操作类型列表新增加的名单操作类型表项之间的对应关系。

在一可能的实现方式中,所述更新操作类型为删除;

所述更新消息进一步携带待删除的名单id;

所述第一服务器用于:

查找第一服务器已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项;

在已建立的名单操作类型表项与名单索引表项的对应关系中查找包含所述更新消息携带的名单id的名单索引表项对应的第一服务器已有的名单操作类型列表中的名单操作类型表项,并删除查找到的所述名单操作类型表项;

在第一服务器的名单操作类型列表的尾端增加包含所述更新操作类型、以及所述更新消息携带的名单id的名单操作类型表项;

删除第一服务器已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项。

在一可能的实现方式中,所述第一服务器用于:

采用读写锁根据所述更新消息执行所述操作;

在完成所述操作后,通知第二服务器从指定名单操作类型表项开始采用读写锁读取名单操作类型表项。

在一可能的实现方式中,所述第一服务器进一步用于:

在完成所述操作后,开启检测线程,并通过所述检测线程获取已记录的与所述第一服务器管理的作为子节点的各个第二服务器中名单同步最慢的一个第二服务器对应的指定名单操作类型表项的位置n;

删除第一服务器已有的名单操作类型列表中所述检测线程上一次检测所述名单操作类型列表的检测位置m到所述n之间的包含所述更新操作类型为删除的名单操作类型表项,并将检测位置从m更新到n;其中,所述n>所述m。

附图说明

图1为本申请实施例中集群系统的结构示意图;

图2为本申请实施例提供的一种名单同步方法的流程示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

参见图2,本申请实施例提供了一种名单同步方法,所述方法应用于集群系统(例如高密度集群系统)中作为主节点的第一服务器,该方法可以包括如下步骤:

s101、接收更新消息,根据所述更新消息执行以下操作:在第一服务器已有的名单操作类型列表中增加包含所述更新消息携带的更新操作类型的名单操作类型表项,并根据所述更新操作类型对第一服务器内的名单索引表进行更新;

其中,更新消息可以是第一服务器通过应用程序编程接口(api)接收来自上层应用系统的更新消息。

更新操作类型可以为增加、修改或删除。

名单操作类型列表由名单操作类型表项组成,可以为链表结构,每一个名单操作类型表项可以使用指针(node)来表示该名单操作类型表项的位置。

名单索引表由名单索引表项组成,名单索引表项例如可以包含名单id与node的对应关系,这样通过名单id就能查找到对应的node,即可以查找到该名单id对应的名单操作类型表项的位置。

s102、在完成所述操作后,针对所述第一服务器管理的作为子节点的每一第二服务器,通知该第二服务器从指定名单操作类型表项开始读取名单操作类型表项,以由该第二服务器根据读取的名单操作类型表项对本第二服务器已有的名单索引表进行更新以实现与第一服务器已有的名单索引表同步,所述指定名单操作类型表项为所述第一服务器已记录的所述名单操作类型列表中与第二服务器对应的名单操作类型表项。

其中,上述名单可以是黑名单,或者可以是白名单。

在一可能的实现方式中,在第二服务器读完所述名单操作类型列表中所有名单操作类型表项之后,该方法进一步可以包括:

将已记录的与第二服务器对应的指定名单操作类型表项更新为所述名单操作类型列表中最后一个名单操作类型表项。

在一可能的实现方式中,步骤s101中根据所述更新消息执行所述操作可以包括:

采用读写锁根据所述更新消息执行所述操作;

步骤s102中通知第二服务器从指定名单操作类型表项开始读取名单操作类型表项可以包括:

通知第二服务器从指定名单操作类型表项开始采用读写锁读取名单操作类型表项。

在一可能的实现方式中,在完成所述操作后,该方法还可以包括:

开启检测线程,并通过所述检测线程获取已记录的与所述第一服务器管理的作为子节点的各个第二服务器中名单同步最慢的一个第二服务器对应的指定名单操作类型表项的位置n;

删除第一服务器已有的名单操作类型列表中所述检测线程上一次检测所述名单操作类型列表的检测位置m到所述n之间的包含所述更新操作类型为删除的名单操作类型表项,并将检测位置从m更新到n;其中,所述n>所述m。

例如:若检测线程上一次检测第一服务器的名单操作类型列表的检测位置为第1000个名单操作类型表项,已记录的与所述第一服务器管理的作为子节点的各个第二服务器中名单同步最慢的一个第二服务器对应的指定名单操作类型表项的位置为第1500个名单操作类型表项,则可以删除第一服务器已有的名单操作类型列表中第1000个名单操作类型表项至第1500个名单操作类型表项之间的包含更新操作类型为删除的名单操作类型表项。

下面按更新操作类型对第一服务器中名单操作类型列表和名单索引表的更新分别进行说明。

实施方式一:

更新操作类型为增加,上述更新消息进一步携带待增加的名单id以及名单id对应的名单信息。

步骤s101中在第一服务器已有的名单操作类型列表中增加包含所述更新消息携带的更新操作类型的名单操作类型表项可以包括:

在第一服务器已有的名单操作类型列表的尾端增加包含所述更新操作类型、以及所述更新消息携带的名单信息的名单操作类型表项;

步骤s101中根据所述更新操作类型对第一服务器内的名单索引表进行更新可以包括:

在第一服务器已有的名单索引表的尾端增加包含所述更新消息携带的名单id的名单索引表项,并建立该新增加的名单索引表项与所述名单操作类型列表新增加的名单操作类型表项之间的对应关系。

例如:可以将名单操作类型列表新增加的名单操作类型表项对应的node保存到新增加的包含更新消息携带的名单id的名单索引表项中。

实施方式二:

更新操作类型为修改,上述更新消息进一步携带待修改的名单id以及名单id对应的名单信息。

步骤s101中在第一服务器已有的名单操作类型列表中增加包含所述更新消息携带的更新操作类型的名单操作类型表项可以包括:

查找第一服务器已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项;

在已建立的名单操作类型表项与名单索引表项的对应关系中查找包含所述更新消息携带的名单id的名单索引表项对应的第一服务器已有的名单操作类型列表中的名单操作类型表项,并删除查找到的所述名单操作类型表项;

在第一服务器的名单操作类型列表的尾端增加包含所述更新操作类型、以及所述更新消息携带的名单信息的名单操作类型表项;

步骤s101中根据所述更新操作类型对第一服务器内的名单索引表进行更新可以包括:

修改第一服务器已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项,并建立该新修改的名单索引表项与所述名单操作类型列表新增加的名单操作类型表项之间的对应关系。

例如:可以将包含更新消息携带的名单id的名单索引表项中的node修改为名单操作类型列表新增加的名单操作类型表项对应的node。

实施方式三:

更新操作类型为删除,上述更新消息进一步携带待删除的名单id。

步骤s101中在第一服务器已有的名单操作类型列表中增加包含所述更新消息携带的更新操作类型的名单操作类型表项可以包括:

查找第一服务器已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项;

在已建立的名单操作类型表项与名单索引表项的对应关系中查找包含所述更新消息携带的名单id的名单索引表项对应的第一服务器已有的名单操作类型列表中的名单操作类型表项,并删除查找到的所述名单操作类型表项;

在第一服务器的名单操作类型列表的尾端增加包含所述更新操作类型、以及所述更新消息携带的名单id的名单操作类型表项;

步骤s101中根据所述更新操作类型对第一服务器内的名单索引表进行更新可以包括:

删除第一服务器已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项。

基于同一发明构思,本申请实施例还提供了一种集群系统,参见图1,该集群系统包括:作为主节点的第一服务器11和第一服务器11管理的作为子节点的多个第二服务器12。

第一服务器11,用于接收更新消息,根据所述更新消息执行以下操作:在第一服务器11已有的名单操作类型列表中增加包含所述更新消息携带的更新操作类型的名单操作类型表项,并根据所述更新操作类型对第一服务器11内的名单索引表进行更新;

以及在完成所述操作后,针对第一服务器11管理的作为子节点的每一第二服务器12,通知该第二服务器12从指定名单操作类型表项开始读取名单操作类型表项,所述指定名单操作类型表项为第一服务器11已记录的所述名单操作类型列表中与第二服务器12对应的名单操作类型表项。

第二服务器12,用于从第一服务器11通知的指定名单操作类型表项开始读取名单操作类型表项,并根据读取的名单操作类型表项对本第二服务器12已有的名单索引表进行更新以实现与第一服务器11已有的名单索引表同步。

在一可能的实现方式中,第一服务器11进一步可以用于:

在第二服务器12读完所述名单操作类型列表中所有名单操作类型表项之后,将已记录的与第二服务器12对应的指定名单操作类型表项更新为所述名单操作类型列表中最后一个名单操作类型表项。

在一可能的实现方式中,所述更新操作类型为增加;

所述更新消息进一步携带待增加的名单id以及名单id对应的名单信息;

第一服务器11可以用于:

在第一服务器11已有的名单操作类型列表的尾端增加包含所述更新操作类型、以及所述更新消息携带的名单信息的名单操作类型表项;

在第一服务器11已有的名单索引表的尾端增加包含所述更新消息携带的名单id的名单索引表项,并建立该新增加的名单索引表项与所述名单操作类型列表新增加的名单操作类型表项之间的对应关系。

在一可能的实现方式中,所述更新操作类型为修改;

所述更新消息进一步携带待修改的名单id以及名单id对应的名单信息;

第一服务器11用于:

查找第一服务器11已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项;

在已建立的名单操作类型表项与名单索引表项的对应关系中查找包含所述更新消息携带的名单id的名单索引表项对应的第一服务器11已有的名单操作类型列表中的名单操作类型表项,并删除查找到的所述名单操作类型表项;

在第一服务器11的名单操作类型列表的尾端增加包含所述更新操作类型、以及所述更新消息携带的名单信息的名单操作类型表项;

修改第一服务器11已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项,并建立该新修改的名单索引表项与所述名单操作类型列表新增加的名单操作类型表项之间的对应关系。

在一可能的实现方式中,所述更新操作类型为删除;

所述更新消息进一步携带待删除的名单id;

第一服务器11用于:

查找第一服务器11已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项;

在已建立的名单操作类型表项与名单索引表项的对应关系中查找包含所述更新消息携带的名单id的名单索引表项对应的第一服务器11已有的名单操作类型列表中的名单操作类型表项,并删除查找到的所述名单操作类型表项;

在第一服务器11的名单操作类型列表的尾端增加包含所述更新操作类型、以及所述更新消息携带的名单id的名单操作类型表项;

删除第一服务器11已有的名单索引表中包含所述更新消息携带的名单id的名单索引表项。

在一可能的实现方式中,第一服务器11可以用于:

采用读写锁根据所述更新消息执行所述操作;

在完成所述操作后,通知第二服务器12从指定名单操作类型表项开始采用读写锁读取名单操作类型表项。

在一可能的实现方式中,第一服务器11进一步可以用于:

在完成所述操作后,开启检测线程,并通过所述检测线程获取已记录的与第一服务器11管理的作为子节点的各个第二服务器12中名单同步最慢的一个第二服务器12对应的指定名单操作类型表项的位置n;

删除第一服务器11已有的名单操作类型列表中所述检测线程上一次检测所述名单操作类型列表的检测位置m到所述n之间的包含所述更新操作类型为删除的名单操作类型表项,并将检测位置从m更新到n;其中,所述n>所述m。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1