数据读写方法和服务器与流程

文档序号:11199358阅读:510来源:国知局
数据读写方法和服务器与流程

本申请涉及计算机领域,具体涉及存储领域,尤其涉及数据读写方法和服务器。



背景技术:

内存数据库集群被广泛应用于分布式存储系统中。在分布式存储系统中,业务和内存数据库集群在不同运行环境之间的迁移是常见的需求。目前,由于业务与内存数据库集群的对应关系预先绑定,导致业务或内存数据库集群的迁移均需对业务进行调整,才能访问内存数据库集群,导致迁移成本高。



技术实现要素:

本申请提供了数据读写方法和服务器,用于解决上述背景技术部分存在的技术问题。

本申请实施例公开a1、一种数据读写方法,所述方法包括:代理服务器接收业务运行在的业务服务器发送的数据处理请求,所述数据处理请求包括以下之一:写入请求、读取请求;基于所述业务对应的内存数据库集群的实例分布信息,确定用于处理数据处理请求的内存数据库实例,以及利用确定出的内存数据库实例处理所述数据处理请求,其中,实例分布信息指示内存数据库集群中的内存数据库实例在原始运行环境和目标运行环境下的分布。

a2、如a1所述的方法中,在业务对应的内存数据库集群由原始运行环境迁移至目标运行环境之前,所述业务对应的内存数据库集群的实例在原始运行环境和目标运行环境下的分布包括:内存数据库集群中的内存数据库主实例和至少一个内存数据库从实例位于原始运行环境下,所述内存数据库集群中除所述内存数据库主实例和至少一个内存数据库从实例之外的内存数据库从实例位于目标运行环境下。

a3、如a2所述的方法中,业务对应的内存数据库集群未从原始运行环境迁移至目标运行环境;以及基于所述业务对应的内存数据库集群的实例分布信息,确定用于处理数据处理请求的内存数据库实例包括:当所述数据处理请求为写入请求时,将原始运行环境下的内存数据库主实例确定为用于处理数据处理请求的内存数据库实例;当所述数据处理请求为读取请求时,将原始运行环境下的内存数据库从实例确定为用于处理数据处理请求的内存数据库实例。

a4、如a3所述的方法中,所述方法还包括:响应于业务对应的内存数据库集群由原始运行环境迁移至目标运行环境,基于迁移之后的所述业务对应的内存数据库集群中的内存数据库实例的分布,更新实例分布信息,迁移之后的所述业务对应的内存数据库集群中的内存数据库实例的分布包括:内存数据库集群中的内存数据库主实例和至少一个内存数据库从实例位于目标运行环境下,所述内存数据库集群中除所述内存数据库主实例和至少一个内存数据库从实例之外的内存数据库从实例位于原始运行环境下。

a5、如a4所述的方法中,所述业务未从原始运行环境下迁移至目标运行环境,业务对应的内存数据库集群由原始运行环境迁移至目标运行环境,以及基于所述业务对应的内存数据库集群的实例分布信息,确定用于处理数据处理请求的内存数据库实例包括:当所述数据处理请求为写入请求时,将目标运行环境下的内存数据库主实例确定为用于处理数据处理请求的内存数据库实例;当所述数据处理请求为读取请求时,将原始运行环境下的内存数据库从实例确定为用于处理数据处理请求的内存数据库实例。

a6、如a4所述的方法中,所述业务从原始运行环境下迁移至目标运行环境,业务对应的内存数据库集群由原始运行环境迁移至目标运行环境;以及基于所述业务对应的内存数据库集群的实例分布信息,确定用于处理数据处理请求的内存数据库实例包括:当所述数据处理请求为写入请求时,将目标运行环境下的内存数据库主实例确定为用于处理数据处理请求的内存数据库实例;当所述数据处理请求为读取请求时,将目标运行环境下的内存数据库从实例确定为用于处理数据处理请求的内存数据库实例。

a7、如a1至a6中任一所述的方法中,业务对应的内存数据库集群为redis数据库集群。

本申请实施例公开b1、一种代理服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如a1至a7中任一所述的方法。

本申请实施例公开c1、一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如a1至a7中任一所述的方法。

本申请实施例公开d1、一种数据读写方法,所述方法包括:业务服务器生成数据处理请求,所述数据处理请求包括以下之一:写入请求、读取请求;基于所述业务服务器所在的运行环境下的配置文件,确定代理服务器,以及将所述数据处理请求发送至确定出的代理服务器,其中,配置文件存储所述运行环境下的代理服务器的分布。

d2、如d1所述的方法中,运行环境包括:原始运行环境、运行在原始运行环境下的业务服务器上的业务待迁移到的目标运行环境。

d3、如d2所述的方法中,所述配置文件包括:所述运行环境下的每一个机房中的代理服务器;以及基于所述业务服务器所在的运行环境下的配置文件,确定代理服务器包括:将所述运行环境下的与业务服务器处于同一机房的代理服务器作为确定出的代理服务器。

本申请实施例公开e1、一种业务服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如d1至d3中任一所述的方法。

本申请实施例公开f1、一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如d1至d3中任一所述的方法。

本申请提供的数据读写方法和服务器,通过代理服务器接收业务运行在的业务服务器发送的数据处理请求,数据处理请求包括以下之一:写入请求、读取请求;基于业务对应的内存数据库集群的实例分布信息,确定用于处理数据处理请求的内存数据库实例,以及利用确定出的内存数据库实例处理数据处理请求,其中,实例分布信息指示内存数据库集群中的内存数据库实例在原始运行环境和目标运行环境下的分布。实现了业务对应的任意一个内存数据库集群在不同的运行环境下的迁移均不会影响业务以及业务在不同的运行环境下的迁移均可以在无需对业务进行调整的情况下访问内存数据库集群,降低迁移成本。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出了根据本申请的数据读写方法的一个实施例的流程图;

图2示出了根据本申请的数据读写方法的另一个实施例的流程图;

图3示出了处理数据处理请求的一个示例性原理图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

请参考图1,其示出了根据本申请的数据读写方法的一个实施例的流程。本实施例所提供的数据读写方法可由代理服务器执行。该方法包括以下步骤:

步骤101,代理服务器接收业务运行在的业务服务器发送的数据处理请求。

在本实施例中,业务可以为提供线上服务的程序,例如,搜索业务为提供在线搜索服务的程序。业务运行在的服务器可以称之为业务服务器。当业务需要将业务数据写入内存数据库集群或从内存数据库集群读取数据时,可以接收到业务运行在的业务服务器发送的数据处理请求。数据处理请求包括以下之一:写入请求、读取请求。

在本实施例的一些可选的实现方式中,业务对应的内存数据库集群为redis数据库集群。当业务需要将业务数据写入redis数据库集群或从redis数据库集群读取数据时,可以接收到业务运行在的业务服务器发送的数据处理请求。

步骤102,基于实例分布信息,确定用于处理数据处理请求的内存数据库实例,以及利用确定出的内存数据库实例处理数据处理请求。

在本实施例中,实例分布信息指示内存数据库集群中的内存数据库实例的分布。业务对应的内存数据库集群可以为存储业务的业务数据的内存数据库集群。内存数据库实例可以是指运行内存数据库的服务器。内存数据库实例包括:用于处理数据写入请求的内存数据库主实例、用于处理数据读取请求的内存数据库从实例。内存数据库集群可以包含一个内存数据库主实例,多个内存数据库从实例,多个数据库实例保持数据同步。

在本实施例中,可以预先创建一个数据结构存储所有内存数据库集群的实例分布信息。在通过步骤101接收业务运行在的业务服务器发送的数据处理请求之后,可以从该数据结构中查找出业务对应的内存数据库集群的实例分布信息。根据业务对应的内存数据库集群的实例分布信息,确定出用于处理数据处理请求的内存数据库集群中的内存数据库实例,将数据处理请求发送至确定出的内存数据库实例进行处理。

以业务对应的内存数据库集群为redis数据库集群为例,redis数据库实例可以是指运行redis数据库集群中的redis数据库的redis服务器。一个redis数据库集群可以包含一个用于处理数据写入请求的redis数据库主实例和多个用于处理数据读取请求的redis数据库从实例,每一个redis数据库实例保持数据同步。

在本实施例中,内存数据库集群的内存数据库主实例和内存数据库从实例可以分布在原始运行环境和目标运行环境。运行环境可以是指业务所运行在的环境,例如,公有云环境。目标运行环境为业务或内存数据库集群待迁移到的运行环境。内存数据库集群由原始运行环境迁移到公有云环境可以是指将目标运行环境下的内存数据库集群的一个内存数据库从实例作为内存数据库主实例,将原始运行环境下的内存数据库集群的内存数据库主实例作为内存数据库集群的内存数据库从实例。

在本实施例中,在内存数据库集群由原始运行环境迁移到公有云环境之前,内存数据库集群中的内存数据库实例的分布可以对应一个初始分布,初始分布包括:内存数据库集群中的内存数据库实例中的内存数据库主实例和至少一个内存数据库从实例位于原始运行环境下,内存数据库集群中除内存数据库主实例和至少一个内存数据库从实例之外的内存数据库从实例位于目标运行环境下。相应地,在内存数据库集群由原始运行环境迁移到公有云环境迁移之前,实例分布信息用于指示内存数据库集群中的内存数据库实例的初始分布。当接收到数据处理请求时,可以根据该实例分布信息确定用于处理数据处理请求的内存数据库实例。当接收到的数据处理请求为写入请求时,可以将原始运行环境下的内存数据库主实例确定为用于处理数据处理请求的内存数据库实例。当接收到的数据处理请求为读取请求时,将原始运行环境下的内存数据库从实例确定为用于处理数据处理请求的内存数据库实例。

以业务对应的内存数据库集群为redis数据库集群,目标运行环境为公有云环境为例,业务对应的redis数据库集群包含一个用于处理数据写入请求的redis数据库主实例和多个用于处理数据读取请求的redis数据库从实例。在redis数据库集群由原始运行环境迁移到公有云环境之前,redis数据库集群中的内存数据库实例对应一个初始分布,初始分布包括:一个redis数据库主实例和至少一个redis数据库从实例位于原始运行环境下,redis数据库集群中的其他redis数据库从实例位于公有云环境下。当接收到的数据处理请求为写入请求时,可以利用原始运行环境下的redis数据库主实例处理写入请求。当接收处理请求为读取请求时,可以利用原始运行环境下的redis数据库从实例处理读取请求。

在本实施例的一些可选的实现方式中,可以响应于业务对应的内存数据库集群由原始运行环境迁移至目标运行环境,基于迁移之后的业务对应的内存数据库集群中的内存数据库实例的分布,更新实例分布信息。迁移之后的业务对应的内存数据库集群中的内存数据库实例的分布包括:内存数据库集群中的内存数据库主实例和至少一个内存数据库从实例位于目标运行环境下,内存数据库集群中除内存数据库主实例和至少一个内存数据库从实例之外的内存数据库从实例位于原始运行环境下。

以业务对应的内存数据库集群为redis数据库集群,目标运行环境为公有云环境为例,业务对应的redis数据库集群包含一个用于处理数据写入请求的redis数据库主实例和多个用于处理数据读取请求的redis数据库从实例。在运行在原始运行环境的业务迁移到公有云环境之前,redis数据库集群中的redis实例的初始分布包括:一个redis数据库主实例和至少一个redis数据库从实例位于公有云环境下,redis数据库集群中的其他redis数据库从实例位于原始运行环境下。redis数据库集群由初始环境迁移到公有云环境之后,迁移之后redis数据库集群中的redis实例的分布包括:一个redis数据库主实例和至少一个redis数据库从实例位于公有云环境下,redis数据库集群中的其他redis数据库从实例位于原始运行环境下。

在本实施例一些可选的实现方式中,当业务对应的内存数据库集群由原始运行环境迁移至目标运行环境,业务未从原始运行环境下迁移至目标运行环境,例如,业务在原始运行环境下迁移至目标运行环境的过程中时,接收到的数据处理请求为处于原始运行环境下的业务运行在的业务服务器发送的数据处理请求。当接收到的数据处理请求为写入请求时,可以将目标运行环境下的内存数据库主实例作为用于处理数据处理请求的内存数据库实例。当接收到的数据处理请求为读取请求时,可以将原始运行环境下的内存数据库从实例作为用于处理数据处理请求的内存数据库实例。

以业务对应的内存数据库集群为redis数据库集群,目标运行环境为公有云环境为例,业务对应的redis数据库集群包含一个用于处理数据写入请求的redis数据库主实例和多个用于处理数据读取请求的redis数据库从实例。在redis数据库集群由原始运行环境迁移到公有云环境之前,redis数据库集群中的内存数据库实例的初始分布包括:一个redis数据库主实例和至少一个redis数据库从实例位于原始运行环境下,redis数据库集群中的其他redis数据库从实例位于公有云环境下。在redis数据库集群由原始运行环境迁移到公有云环境之后,redis数据库集群中的redis实例的分布包括:一个redis数据库主实例和至少一个redis数据库从实例位于公有云环境下,redis数据库集群中的其他redis数据库从实例位于原始运行环境下。此时,可以更新实例分布信息,该实例分布信息指示redis数据库集群由原始运行环境迁移到公有云环境之后的redis数据库集群redis数据库实例的分布。可以根据更新后的实例分布信息,确定redis数据库集群由原始运行环境迁移到公有云环境之后,用于处理数据处理请求的redis数据库实例。

当业务未从原始运行环境迁移到共有云环境或业务在原始运行环境迁移到共有云环境的过程中时,当接收到的数据处理请求为写入请求时,可以利用公有云环境下的redis数据库主实例来处理写入请求。当接收到的数据处理请求为读取请求时,可以利用原始运行环境下的redis数据库从实例来处理读取请求。

在本实施例一些可选的实现方式中,业务从原始运行环境下迁移至目标运行环境,业务对应的内存数据库集群由原始运行环境迁移至目标运行环境。当接收到的数据处理请求为写入请求时,将目标运行环境下的内存数据库主实例确定为用于处理数据处理请求的内存数据库实例。当接收到的数据处理请求为读取请求时,将原始运行环境下的内存数据库从实例确定为用于处理数据处理请求的内存数据库实例。

以业务对应的内存数据库集群为redis数据库集群,目标运行环境为公有云环境为例,业务对应的redis数据库集群包含一个用于处理数据写入请求的redis数据库主实例和多个用于处理数据读取请求的redis数据库从实例。在redis数据库集群由原始运行环境迁移到公有云环境之前,redis数据库集群中的内存数据库实例的初始分布包括:一个redis数据库主实例和至少一个redis数据库从实例位于原始运行环境下,redis数据库集群中的其他redis数据库从实例位于公有云环境下。在redis数据库集群由原始运行环境迁移到公有云环境之后,redis数据库集群中的redis实例的分布包括:一个redis数据库主实例和至少一个redis数据库从实例位于公有云环境下,redis数据库集群中的其他redis数据库从实例位于原始运行环境下。此时,可以更新实例分布信息,该实例分布信息指示redis数据库集群由原始运行环境迁移到公有云环境之后的redis数据库集群redis数据库实例的分布。可以根据更新后的分布信息,确定redis数据库集群由原始运行环境迁移到公有云环境之后,用于处理数据处理请求的redis数据库实例。

当业务未从原始运行环境迁移到共有云环境或业务在原始运行环境迁移到共有云环境的过程中时,当接收到的数据处理请求为写入请求时,可以利用公有云环境下的redis数据库主实例来处理写入请求。当接收到的数据处理请求为读取请求时,可以利用公有云环境下的redis数据库从实例来处理读取请求。

请参考图2,其示出了根据本申请的数据读写方法的另一个实施例的流程。本实施例所提供的数据读写方法可由业务服务器执行。该方法包括以下步骤:

步骤201,业务服务器生成数据处理请求。

在本实施例中,当业务运行在的业务服务器接收到输入的数据处理指令时,可以生成数据处理请求。数据处理请求包括以下之一:写入请求、读取请求。

例如,运行在原始运行环境下的业务服务器上的业务需要向存储业务的业务数据的内存数据库集群写入数据时,原始运行环境下的业务服务器可以生成写入请求。当运行在原始运行环境下的业务服务器上的业务需要从存储业务的业务数据的内存数据库集群读取数据时,原始运行环境下的业务服务器可以生成读取请求。

又例如,业务由原始运行环境迁移至目前运行环境公有云环境,运行在公有云环境下的业务服务器上业务需要向存储业务的业务数据的内存数据库集群写入数据时,公有云环境下的业务运行在的业务服务器可以生成写入请求。当运行在公有云环境下的业务服务器上业务需要从存储业务的业务数据的内存数据库集群读取数据时,公有云环境下的业务运行在的业务服务器可以生成读取请求。

步骤202,基于业务服务器所在的运行环境下的配置文件,确定代理服务器,以及将数据处理请求发送至确定出的代理服务器。

在本实施例中,业务可以运行在多个运行环境下,相应地,每一个运行环境下具有运行业务的业务服务器。每一个运行环境下具有一个配置文件,该配置文件存储该运行环境下的代理服务器的分布。

例如,运行在原始运行环境下的业务服务器生成数据处理请求时,可以从配置文件中查找出原始运行环境下与业务服务器在同一机房的代理服务器,将数据处理请求发送至该代理服务器。

又例如,运行在公有云环境下的业务服务器生成数据处理请求时,可以查找公有云环境下的配置文件,查找出公有云环境下与业务服务器在同一机房的代理服务器,将数据处理请求发送至该代理服务器。

代理服务器在接收到数据处理请求之后,可以在存储所有内存数据库集群的内存数据库实例分布的数据结构中查找出指示存储该业务的业务数据的内存数据库实例在原始运行环境和目标运行环境下的分布的实例分布信息,根据实例分布信息,确定用于处理数据处理请求的内存数据库实例来处理数据处理请求。

请参考图3,其示出了处理数据处理请求的一个示例性原理图。

在图3中,示出了分别运行原始运行环境下、目标运行环境即公有云环境下的业务a和存储业务a的业务数据的redis数据库集群由原始运行环境迁移到公有云环境之后,redis数据库集群的8个redis数据库实例的分布,redis集群的redis主实例和3个redis从实例在公有云环境下,其他的4个redis的redis从实例在原始运行环境环境下。

场景一:公有云环境下运行的业务a通过公有云环境下的配置文件查找到公有云环境下的代理服务器proxyb,proxyb通过存储所有redis集群的redis实例分布的数据结构中查找出公有云环境下具有redis集群的redis主实例和redis从实例。公有云环境下运行的业务a通过proxyb连接公有云环境下的redis集群的redis主实例处理数据写入请求,通过proxyb连接公有云环境下的redis集群的redis从实例处理数据读取请求。

场景二:原始运行环境下的业务a通过原始运行环境下的配置文件查找到原始运行环境下的代理服务器proxya,proxya通过存储所有redis集群的redis实例分布的数据结构中查找出redis集群的redis主实例和3个redis从实例在公有云环境下,其他的4个redis集群的从实例在原始运行环境环境下。原始运行环境环境下的业务a通过proxya连接公有云环境下的redis集群的redis主实例处理数据写入请求,通过proxya连接原始运行环境下的redis集群的redis从实例处理数据读取请求。

本申请还提供了一种代理服务器,该代理服务器可以配置有一个或多个处理器;存储器,用于存储一个或多个程序,一个或多个程序中可以包含用以执行上述步骤101-102中描述的操作的指令。当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器执行上述步骤101-102中描述的操作。

本申请还提供了一种业务服务器,该业务服务器可以配置有一个或多个处理器;存储器,用于存储一个或多个程序,一个或多个程序中可以包含用以执行上述步骤201-202中描述的操作的指令。当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器执行上述步骤201-202中描述的操作。

本申请还提供了一种非易失性计算机可读介质,该计算机可读介质可以是代理服务器中所包括的;也可以是单独存在,未装配入代理服务器中。该非易失性计算机可读介质承载有一个或者多个程序,当一个或者多个程序被该服务器执行时,使得该代理服务器:接收业务运行在的业务服务器发送的数据处理请求,数据处理请求包括以下之一:写入请求、读取请求;基于业务对应的内存数据库集群的实例分布信息,确定用于处理数据处理请求的内存数据库实例,以及利用确定出的内存数据库实例处理数据处理请求,其中,实例分布信息指示内存数据库集群中的内存数据库实例在原始运行环境和目标运行环境下的分布。

本申请还提供了一种非易失性计算机可读介质,该非易失性计算机可读介质可以是业务服务器中所包括的;也可以是单独存在,未装配入业务服务器中。该非易失性计算机可读介质承载有一个或者多个程序,当一个或者多个程序被业务服务器执行时,使得该业务服务器:生成数据处理请求,数据处理请求包括以下之一:写入请求、读取请求;基于业务所在的运行环境下的配置文件,确定代理服务器,以及将数据处理请求发送至确定出的代理服务器,其中,配置文件存储运行环境下的代理服务器的分布。

需要说明的是,上述非易失性计算机可读介质可以是计算机可读信号介质或者非易失性计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。非易失性计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,非易失性计算机可读存储介质可以是任何包括或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以为多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是非易失性计算机可读存储介质以外的任何非易失性计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包括的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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