掌桥专利:专业的专利平台
掌桥专利
首页

数据存储系统和方法

文献发布时间:2023-06-19 09:49:27


数据存储系统和方法

技术领域

本申请一般涉及信息技术领域,更具体地,涉及数据存储系统和方法。

背景技术

数据存储技术广泛用于各种领域。例如,在用于测试自动驾驶的系统中,自主车辆(例如,无人驾驶机器人)每天生成大量数据(例如,包文件)。因此,至关重要的是,存储此类数据不仅是出于安全目的,而且研究人员可以及时有效地访问和分析数据。在一些情况下,数据存储系统可以将通过自动驾驶测试生成的数据存储到数据库(例如,Hadoop数据库(Hbase))。用户(例如,工程师)可以从数据库检索和/或下载数据以供进一步分析。对自动驾驶的深入探索依赖于数据的快速且安全的存储。因此,提供安全、有效和并发地存储数据的方法和系统是必要的。

发明内容

本申请实施例之一提供一种数据存储方法。所述方法可以包括:通过分布式代理服务器从数据生成服务器接收用于将数据集写入持久化数据存储器的写入请求;基于与所述数据集有关的识别码,通过所述分布式代理服务器,向至少两个服务器组中的目标服务器组发送所述数据集,所述至少两个服务器组的每个服务器组包括主服务器和从服务器;通过所述目标服务器组,将所述数据集异步存储在所述主服务器和所述从服务器;通过与所述目标服务器组相连的消费设备,从所述目标服务器组读取所述数据集;以及通过所述消费设备,将所述数据集写入由所述持久化数据存储器操作的数据库。

在一些实施例中,所述通过所述分布式代理服务器将所述数据集发送到目标服务器组,可以包括:在确定所述目标服务器组的所述主服务器运行正常时,由所述分布式代理服务器将所述数据集发送到所述目标服务器组的所述主服务器。

在一些实施例中,所述通过所述目标服务器组,将所述数据集异步存储在所述主服务器和所述从服务器,可以包括:在确定所述目标服务器组的所述从服务器运行正常时,通过所述目标服务器组的所述主服务器,将所述数据集存储在所述目标服务器组的所述主服务器中;以及通过所述目标服务器组的所述主服务器,将所述数据集同步到所述目标服务器组的所述从服务器。

在一些实施例中,所述数据集可以由所述消费设备从所述目标服务器组的所述从服务器读取。

在一些实施例中,所述通过所述目标服务器组,将所述数据集异步存储在所述主服务器和所述从服务器,可以包括:在确定所述目标服务器组的所述从服务器运行失败时,通过所述目标服务器组的所述主服务器,将所述数据集存储在所述目标服务器组的所述主服务器中。

在一些实施例中,所述数据集可以由所述消费设备从所述目标服务器组的所述主服务器读取。

在一些实施例中,所述方法还可以包括:启动一个新服务器,与所述目标服务器组的所述主服务器耦合,并使用所述新服务器作为所述目标服务器组的从服务器。

在一些实施例中,所述通过所述分布式代理服务器,将所述数据集发送到所述目标服务器组,可以包括:在确定所述目标服务器组的所述从服务器运行正常且所述目标服务器组的所述主服务器运行失败时,通过所述分布式代理服务器,将所述数据集发送到所述目标服务器组的所述从服务器。

在一些实施例中,所述方法还可以包括:启动一个新服务器,与所述目标服务器组的所述从服务器耦合,并使用所述新服务器作为所述目标服务器组的主服务器。

在一些实施例中,通过所述目标服务器组的所述从服务器将所述数据集存储在所述目标服务器组的所述从服务器中。

在一些实施例中,所述数据集可以由所述消费设备从所述目标服务器组的所述从服务器读取。

在一些实施例中,所述方法还可以包括:基于所述目标服务器组的所述主服务器、所述目标服务器组的所述从服务器或所述消费设备生成的一个或以上相应的日志文件,监控所述目标服务器组的所述主服务器、所述目标服务器组的所述从服务器,或所述消费设备的操作状态。

在一些实施例中,所述方法还可以包括:基于所述监测结果,确定所述目标服务器组中是否存在消息挤压;以及响应于确定所述目标服务器组中存在消息挤压,基于数据写入状态,调整所述消费设备的数据读取或写入速度,或启动另一个消费设备来分担所述消费设备的工作负荷。

在一些实施例中,所述方法还可以包括:从所述数据库接收数据写入状态;以及基于所述数据写入状态,调整所述消费设备的数据读取或写入速度。

在一些实施例中,所述数据库可以是Hadoop数据库(Hbase)。

本申请实施例之一提供一种数据存储方法。所述方法可以包括:通过分布式代理服务器从数据生成服务器接收用于将至少两个数据集写入持久化数据存储器的至少两个写入请求,每个数据集具有相应的识别码;基于所述数据集的所述识别码及至少两个服务器组的运行状态,通过所述分布式代理服务器,在所述至少两个服务器组中确定每个数据集的目标服务器组;通过所述分布式代理服务器将每个数据集发送到相应的目标服务器组,使得具有相同识别码的数据集被发送到同一目标服务器组;将每个数据集存储在相应的目标服务器组中;通过至少两个消费设备读取存储在所述至少两个服务器组中的数据,每个消费设备耦合到所述至少两个服务器组之一,所述每个消费设备用于从耦合的服务器组读取所述数据的一部分,所述数据包括所述至少两个数据集的部分或全部;以及通过所述至少两个消费设备,将所述数据写入由所述持久化数据存储器操作的数据库。

在一些实施例中,所述方法还可以包括:响应于确定所述至少两个数据集的第一数据集的所述识别码与存储在所述至少两个服务器组中的当前数据的所述识别码不同,或所述至少两个服务器组不可用,启动一个新服务器组来存储所述第一数据集。

在一些实施例中,所述至少两个写入请求是并发写入请求。

在一些实施例中,所述数据库可以是Hadoop数据库(Hbase)。

在一些实施例中,所述至少两个服务器组的每个服务器组可以包括主服务器和从服务器。

在一些实施例中,每个数据集可以异步存储在相应目标服务器组的主服务器和从服务器中。

在一些实施例中,所述通过所述分布式代理服务器将每个数据集发送到相应的目标服务器组,可以包括:在确定所述目标服务器组的所述主服务器运行正常时,由所述分布式代理服务器将所述数据集发送到所述目标服务器组的所述主服务器。

在一些实施例中,所述将每个数据集存储在相应的目标服务器组中,可以包括:在确定所述目标服务器组的所述从服务器运行正常时,通过所述目标服务器组的所述主服务器,将所述数据集存储在所述目标服务器组的所述主服务器中;以及通过所述目标服务器组的所述主服务器,将所述数据集同步到所述目标服务器组的所述从服务器。

在一些实施例中,所述数据集可以由所述消费设备从所述目标服务器组的所述从服务器读取。

在一些实施例中,所述将每个数据集存储在相应的目标服务器组中,可以包括:在确定所述目标服务器组的所述从服务器运行失败时,通过所述目标服务器组的所述主服务器,将所述数据集存储在所述目标服务器组的所述主服务器中。

在一些实施例中,所述数据集可以由所述消费设备从所述目标服务器组的所述主服务器读取。

在一些实施例中,所述方法还可以包括:启动一个新服务器,与所述目标服务器组的所述主服务器耦合,并使用所述新服务器作为所述目标服务器组的从服务器。

在一些实施例中,所述通过所述分布式代理服务器将每个数据集发送到相应的目标服务器组,可以包括:在确定所述目标服务器组的所述从服务器运行正常且所述目标服务器组的所述主服务器运行失败时,通过所述分布式代理服务器,将所述数据集发送到所述目标服务器组的所述从服务器。

在一些实施例中,所述方法还可以包括:启动一个新服务器,与所述目标服务器组的所述从服务器耦合,并使用所述新服务器作为所述目标服务器组的主服务器。

在一些实施例中,通过所述目标服务器组的所述从服务器将所述数据集存储在所述目标服务器组的所述从服务器中。

在一些实施例中,所述数据集可以由所述消费设备从所述目标服务器组的所述从服务器读取。

在一些实施例中,所述方法还可以包括:基于所述目标服务器组的所述主服务器、所述目标服务器组的所述从服务器或所述消费设备生成的一个或以上相应的日志文件,监控所述目标服务器组的所述主服务器、所述目标服务器组的所述从服务器,或所述消费设备的操作状态。

在一些实施例中,所述方法还可以包括:基于所述监测结果,确定所述目标服务器组中是否存在消息挤压;以及响应于确定所述目标服务器组中存在消息挤压,基于数据写入状态,调整所述消费设备的数据读取或写入速度,或启动另一个消费设备来分担所述消费设备的工作负荷。

在一些实施例中,所述方法还可以包括:从所述数据库接收数据写入状态;以及基于所述数据写入状态,调整所述至少两个消费设备中的至少一个的数据读取或写入速度。

本申请实施例之一提供一种数据存储系统。所述系统可以包括:一个或以上分布式代理服务器,至少两个服务器组,以及一个或以上持久化数据存储器。其中,所述一个或以上分布式代理服务器之一可以用于:从数据生成服务器接收用于将数据集写入持久化数据存储器的写入请求;以及基于与所述数据集有关的识别码,将所述数据集发送到所述至少两个服务器组中的目标服务器组,所述至少两个服务器组的每个服务器组包括主服务器和从服务器;所述目标服务器组用于将所述数据集异步存储在所述主服务器和所述从服务器中。其中,数据集可以由耦合到所述目标服务器组的消费设备读取,并由所述消费设备写入由所述一个或以上持久化数据存储器操作的数据库。

本申请实施例之一提供一种数据存储系统。所述系统可以包括:一个或以上分布式代理服务器,至少两个服务器组,以及一个或以上持久化数据存储器。其中,所述一个或以上分布式代理服务器之一可以用于:从数据生成服务器接收至少两个写入请求,用于将至少两个数据集写入所述一个或以上持久化数据存储器;以及基于与所述数据集有关的识别码,将每个数据集发送到所述至少两个服务器组中的相应目标服务器组,使得具有相同识别码的数据集被发送到同一目标服务器组。所述目标服务器组可以用于存储所述数据集。其中,存储在所述至少两个服务器组中的数据可以由至少两个消费设备读取,并由所述至少两个消费设备写入由所述一个或以上持久化数据存储器操作的数据库。每个消费设备可以耦合到所述至少两个服务器组之一。所述数据可以包括所述至少两个数据集的部分或全部。

本申请实施例之一提供一种非暂时性计算机可读介质。所述非暂时性计算机可读介质可以包括至少一套计算机指令用于存储数据,当被计算设备的一个或多个处理器执行时,所述至少一套计算机指令可以导致所述计算设备执行一个方法,所述方法包括:通过分布式代理服务器从数据生成服务器接收用于将数据集写入持久化数据存储器的写入请求;使得所述分布式代理服务器,基于与所述数据集有关的识别码,向至少两个服务器组中的目标服务器组发送所述数据集,所述至少两个服务器组的每个服务器组包括主服务器和从服务器;将所述数据集异步存储在所述主服务器和所述从服务器;使得与所述目标服务器组相连的消费设备,从所述目标服务器组读取所述数据集;以及使得所述消费设备,将所述数据集写入由所述持久化数据存储器操作的数据库。

本申请实施例之一提供一种非暂时性计算机可读介质。所述非暂时性计算机可读介质可以包括至少一套计算机指令用于存储数据,当被计算设备的一个或多个处理器执行时,所述至少一套计算机指令可以导致所述计算设备执行一个方法,所述方法包括:通过分布式代理服务器从数据生成服务器接收用于将至少两个数据集写入持久化数据存储器的至少两个写入请求,每个数据集具有相应的识别码;基于所述数据集的所述识别码及至少两个服务器组的运行状态,在所述至少两个服务器组中确定每个数据集的目标服务器组;将每个数据集发送到相应的目标服务器组,使得具有相同识别码的数据集被发送到同一目标服务器组;将每个数据集存储在相应的目标服务器组中;使得至少两个消费设备读取存储在所述至少两个服务器组中的数据,每个消费设备耦合到所述至少两个服务器组之一,所述每个消费设备用于从耦合的服务器组读取所述数据的一部分,所述数据包括所述至少两个数据集的部分或全部;以及使得所述至少两个消费设备,将所述数据写入由所述持久化数据存储器操作的数据库。

本申请的一部分附加特性可以在下面的描述中进行说明。通过对以下描述和相应附图的研究或者对实施例的生产或操作的了解,本申请的一部分附加特性对于本领域技术人员是明显的。本申请的特征可以通过对以下描述的具体实施例的各个方面的方法、手段和组合的实践或使用得以实现和达到。

附图说明

本申请将通过示例性实施例进行进一步描述。这些示例性实施例将通过附图进行详细描述。附图未按比例绘制。这些实施例是非限制性的示例性实施例,在这些实施例中,各图中相同的编号表示相似的结构,其中:

图1是根据本申请的一些实施例所示的示例性数据存储系统的示意图;

图2是根据本申请的一些实施例所示的示例性计算设备的示例性硬件和/或软件组件的示意图;

图3是根据本申请的一些实施例所示的可以在其上实现终端设备的示例性移动设备的示例性硬件和/或软件组件的示意图;

图4是根据本申请的一些实施例所示的示例性处理设备的框图;

图5是根据本申请的一些实施例所示的将数据存储到数据库中的示例性过程的流程图;

图6A和6B是根据本申请的一些实施例所示的在主服务器和从服务器异步存储数据集的示例性过程的流程图;

图7是根据本申请的一些实施例所示的存储数据集到数据库的示例性过程的流程图;

图8是根据本申请的一些实施例所示的用于监视数据存储的示例性过程的流程图;以及

图9是根据本申请的一些实施例所示的用于数据存储的示例性系统的示意图。

具体实施方式

以下描述是为了使本领域的普通技术人员能够实施和利用本申请,并且该描述是在特定的应用场景及其要求的环境下提供的。对于本领域的普通技术人员来讲,显然可以对所披露的实施例作出各种改变,并且在不偏离本申请的原则和范围的情况下,本申请中所定义的普遍原则可以适用于其他实施例和应用场景。因此,本申请并不限于所描述的实施例,而应该被给予与权利要求一致的最广泛的范围。

本申请中所使用的术语仅用于描述特定的示例性实施例,并不限制本申请的范围。如本申请使用的单数形式“一”、“一个”及“该”可以同样包括复数形式,除非上下文明确提示例外情形。还应当理解,如在本申请中,术语“包括”、“包括”仅提示存在所述特征、整体、步骤、操作、组件和/或部件,但并不排除存在或添加一个或以上其他特征、整体、步骤、操作、组件、部件和/或其组合的情况。

根据以下对附图的描述,本申请的这些和其他的特征、特点以及有关结构元件的功能和操作方法,以及部件组合和制造经济性,可以变得更加显而易见,这些附图都构成本申请说明书的一部分。然而,应当理解的是,附图仅仅是为了说明和描述的目的,并不旨在限制本申请的范围。应当理解的是,附图并不是按比例绘制的。

本申请中使用了流程图用来说明根据本申请的一些实施例的系统所执行的操作。应当理解的是,流程图中的操作可以不按顺序执行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将一个或以上其他操作添加到这些流程图中。也可以从流程图中删除一个或以上操作。

此外,本申请中的系统和方法可以应用于需要数据存储的任何应用场景。例如,本申请的系统或方法可以应用于运输系统、购物系统、检索系统、自治系统等或其任意组合。具体地,运输系统可以包括陆地、海洋、航空航天等或其任意组合。运输系统可以为使用各种车辆的用户提供运输服务。运输服务的车辆可包括出租车、私家车、顺风车、公共汽车、火车、动车、高铁、地铁、船舶、飞机、宇宙飞船、热气球、自动驾驶车辆、自行车、三轮车、摩托车等或其任意组合。本申请的系统或方法可适用于出租车服务、司机服务、送货服务、拼车服务、公交车服务、外卖服务、司机招聘服务、班车服务、旅行服务等或其任意组合。

本申请的一个方面涉及用于数据存储的系统和方法。根据本申请的系统和方法,终端设备(例如,无人机器人)可以生成至少两个数据集。分布式代理服务器可以接收用于将数据集写入持久化数据存储器的写入请求。分布式代理服务器可以基于与数据集有关的识别码将数据集发送到至少两个服务器组中的目标服务器组,至少两个服务器组的每个服务器组包括主服务器和从服务器。目标服务器组可以异步将数据集存储在主服务器和从服务器中。耦合到目标服务器组的消费设备可以从目标服务器组读取数据集,并将数据集写入由持久化数据存储器操作的数据库。根据本申请的系统和方法,终端设备生成的数据集可以快速安全地存储,这可以提高数据存储的效率和安全性。每个数据集可以具有识别码,其可以确保写入的数据集按顺序保存,保证了数据的有序性。本申请中的系统和方法可以支持分布式部署,其中可以动态地添加或删除代理服务器、存储服务器和/或消费设备。该系统和方法可用于高并发和/或异步数据写入和数据持久化。此外,监视器可以监视数据集的操作状态以避免或处理消息挤压。

图1是根据本申请的一些实施例所示的示例性数据存储系统的示意图。数据存储系统100可以包括一个或以上服务器110、网络120、存储设备140和一个或以上终端设备130。在一些实施例中,数据存储系统100可以是分布式队列系统。在一些实施例中,数据存储系统100可以用于高并发数据写入和/或数据的持久化存储。数据存储系统100可以使用分布式队列,包括例如Zookeeper、kafka、RabbitMQ、Apache RocketMQ、Apache ActiveMQ、ZeroMQ、MetaMQ、Redis、MySQL、PhxSQL、NSQ、Disque等。

在一些实施例中,服务器110可以包括一个或以上服务器,诸如服务器110-1、服务器110-2、......、服务器110-n。服务器110可以用于独立地或联合地执行用于存储数据、处理数据等或其任意组合的一个或以上功能。在一些实施例中,服务器110可以是单个服务器或服务器组。服务器组可以是集中式的,也可以是分布式的。在一些实施例中,数据存储系统100可以是分布式系统,并且分布式系统可以包括一个或以上分布式代理服务器,至少两个分布式存储服务器组等,或其组合。每个服务器110可以包括任何类型的计算机化设备或系统,例如,个人计算机、工作站、网络系统或大型主机系统、数据通信系统、交换机、路由器、数据存储系统等。在一些实施例中,服务器110可以是本地的或远程的。例如,服务器110可以经由网络120访问存储在终端设备130和/或存储设备140中的信息和/或数据。又如,服务器110可以直接连接到终端设备130和/或存储设备140以访问存储的信息和/或数据。在一些实施例中,服务器110可以直接或经由网络120从终端设备130接收和/或处理信息和/或数据。在一些实施例中,服务器110可以在云平台上实现。仅作为示例,该云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等或其任意组合。在一些实施例中,服务器110可以在本申请中的图2描述的包括了一个或以上组件的计算设备200上执行。

在一些实施例中,服务器110可以包括一个或以上代理服务器(例如,图9中所示的代理服务器)、一个或以上存储服务器(例如,图9中所示的存储服务器)、一个或以上消费者(也被称为消费设备,例如,图9中所示的消费设备)、一个或以上监视器(也称为监视计算设备,例如图9中所示的监视器)等或其任意组合。代理服务器可以用于从终端设备130和/或数据生成服务器接收请求,和/或将信息和/或数据发送到一个或以上存储服务器。在一些实施例中,代理服务器可以被设置为数据存储系统100的代理层。存储服务器可以用于从一个或以上代理服务器接收信息和/或数据,和/或将信息和/或数据发送到一个或以上消费设备。在一些实施例中,可以将存储服务器设置为数据存储系统100的存储层。消费设备可以用于消费来自一个或以上存储服务器的信息和/或数据,并将信息和/或数据写入存储器(例如,存储设备140)。监视器可以用于监视数据存储系统100的操作状态(例如,代理服务器的操作状态、存储服务器的操作状态、消费设备的操作状态等)。代理服务器、存储服务器、消费设备和监视器可以直接(例如,通过一个或以上数据电缆)或通过网络120彼此连接和/或通信。在一些实施例中,代理服务器、存储服务器、消费设备和/或监视器可以集成到单个服务器中。在一些实施例中,服务器110之一可以执行代理服务器、存储服务器、消费设备和/或监视器的至少一部分功能。在一些实施例中,服务器110可以包括一个或以上数据生成服务器或与之通信。数据生成服务器可以用于模型训练和/或生成与模型训练有关的数据。

在一些实施例中,服务器110可以包括一个或以上处理设备112(例如,单核处理设备或多核处理器)。如图1所示,服务器110-1可以包括处理设备112-1,服务器110-2可以包括处理设备112-2,...,服务器110-n可以包括处理设备112-n。处理设备112可以处理信息和/或数据以执行本申请中描述的一个或以上功能。例如,处理设备112可以从终端设备130、存储设备140或外部设备或其任意组合接收数据和/或信息。又例如,处理设备112可以接收一个或以上写入请求,用于将数据集写入一个或以上持久化数据存储器。作为另一示例,处理设备112可以将数据和/或信息发送到终端设备130、存储设备140或其他设备(例如,持久化数据存储器)。

在一些实施例中,处理设备112可以包括一个或以上硬件处理器,例如中央处理单元(CPU)、特定应用集成电路(ASIC)、特定应用指令集处理器(ASIP)、图像处理单元(GPU)、物理运算处理单元(PPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)、控制器、微控制器单元、精简指令集计算机(RISC)、微处理器等或其任意组合。

网络120可以促进信息和/或数据的交换。在一些实施例中,数据存储系统100中的一个或以上组件(例如,服务器110、存储设备140、终端设备130)可以经由网络120将信息和/或数据发送到数据存储系统100中的其他组件。例如,处理设备112可以经由网络120从数据生成服务器接收写入请求。在一些实施例中,网络120可以是有线网络或无线网络等或其任意组合。仅作为示例,网络120可以包括缆线网络、有线网络、光纤网络、远程通信网络、内部网络、互联网、局域网络(LAN)、广域网路(WAN)、无线局域网络(WLAN)、城域网(MAN)、公共交换电话网络(PSTN)、蓝牙网络、紫蜂网络、近场通信(NFC)网络等或其任意组合。在一些实施例中,网络120可以包括一个或以上网络接入点。例如,网络120可以包括有线或无线网络接入点,如基站和/或互联网交换点120-1、120-2、……,通过数据存储系统100的一个或以上部件可以连接到网络120以交换数据和/或信息。

在一些实施例中,终端设备130可以用于方便用户(例如,工程师)和数据存储系统100之间的通信。例如,用户可以通过终端设备130登录与数据存储系统100耦合(或可以与之通信)的应用来监视数据存储进度。在一些实施例中,应用程序可以为一个或以上用户提供数据访问接口,使得用户可以通过应用程序管理数据存储进度。在一些实施例中,终端设备130可以包括移动设备130-1、平板计算机130-2、膝上型计算机130-3、车载设备130-4、可穿戴设备130-5等或其任意组合。在一些实施例中,移动设备130-1可以包括智能家居设备、智能移动设备、虚拟现实设备、增强现实设备等或其任意组合。在一些实施例中,智能家居设备可以包括智能照明设备、智能电器控制设备、智能监控设备、智能电视、智能摄像机、对讲机等或其任意组合。在一些实施例中,智能移动设备可以包括智能电话、个人数字助理(PDA)、游戏设备、导航设备、销售点(POS)等或其任意组合。在一些实施例中,虚拟现实设备和/或增强现实设备包括虚拟现实头盔、虚拟现实眼镜、虚拟现实眼罩、增强现实头盔、增强现实眼镜、增强现实眼罩等或其任意组合。例如,虚拟现实设备和/或增强现实设备可以包括Google

存储设备140可以存储数据和/或指令。在一些实施例中,存储设备140可以存储从终端设备130、一个或以上数据生成服务器和/或处理设备112获得的数据。例如,存储设备140可以存储从一个或以上数据生成服务器和/或一个或以上终端设备130接收的至少两个写入请求。又如,存储设备140可以存储处理设备112处理的数据和/或信息。作为另一示例,存储设备140可以存储从数据生成服务器接收的数据。在一些实施例中,存储设备140可以存储服务器110用来执行或使用来完成本申请中描述的示例性方法的数据和/或指令。例如,存储设备140可以存储处理设备112可以执行或使用基于信息和/或数据的特征将数据集发送到目标服务器组的指令。又例如,存储设备140可以存储处理设备112可以执行或用于存储数据的指令。又例如,存储设备140可以存储处理设备112可以执行或使用的指令,以使消费设备将数据和/或信息写入存储设备(例如,由持久化数据存储器操作的数据库)。

在一些实施例中,存储设备140可包括大容量存储器、可移动存储器、易失性读写存储器、只读存储器(ROM)等或其任意组合。示例性的大容量存储器可以包括磁盘、光盘、固态磁盘等。示例性可移动存储器可以包括闪存驱动器、软盘、光盘、存储卡、压缩盘、磁带等。示例性易失性读写存储器可以包括随机存取存储器(RAM)。示例性RAM可包括动态随机存取存储器(DRAM)、双倍数据速率同步动态随机存取存储器(DDR SDRAM)、静态随机存取存储器(SRAM)、晶闸管随机存取存储器(T-RAM)和零电容随机存取存储器(Z-RAM)等。示例性只读存储器可以包括掩模型只读存储器(MROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、光盘只读存储器(CD-ROM)和数字多功能磁盘只读存储器等。在一些实施例中,所述存储设备140可在云端平台上执行。仅作为示例,该云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等或其任意组合。

在一些实施例中,存储设备140可以连接到网络120以与数据存储系统100中的一个或以上组件(例如,服务器110、终端设备130等)通信。数据存储系统100中的一个或以上组件可以经由网络120访问存储设备140中存储的数据或指令。在一些实施例中,存储设备140可以直接连接到数据存储系统100中的一个或以上组件(例如,服务器110、终端设备130等)或与之通信。在一些实施例中,存储设备140的至少一部分可以是服务器110的一部分。

应当注意数据存储系统100仅出于说明的目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。例如,数据存储系统100还可以包括由存储设备140操作的数据库、信息源等。又例如,数据存储系统100可以在其他设备上实现,以实现类似或不同的功能。作为另一示例,存储设备140可包括一个或以上持久化数据存储器。

图2是根据本申请的一些实施例所示的示例性计算设备的示例性硬件和/或软件组件的示意图。在一些实施例中,服务器110中的至少一个可以在计算设备200上实现。例如,处理设备112可以在计算设备200上实现,并且用于执行本申请中披露的处理设备112的功能。

计算设备200可用于实现本申请的数据存储系统100的任何组件。例如,数据存储系统100的处理设备112可以通过其硬件、软件程序、固件或其组合在计算设备200上实现。尽管为了方便仅示出了一个这样的计算机,但是与这里描述的数据存储系统100有关的计算机功能可以以分布方式在多个类似平台上实现以分配处理负载。

例如,计算设备200可以包括连接到与其连接的网络(例如,网络120)的通信(COM)端口250,以便于数据通信。计算设备200还可以包括处理器(例如,处理器220),其形式为一个或以上处理器(例如,逻辑电路),用于执行程序指令。例如,处理器包括其中的接口电路和处理电路。接口电路可以用于从总线210接收电信号,其中电信号用于编码处理电路的结构化数据和/或指令。处理电路可以进行逻辑计算,然后将结论、结果和/或指令编码确定为电信号。然后,接口电路可以经由总线210从处理电路发出电信号。

计算设备200还可以包括不同形式的程序存储器和数据存储器,例如磁盘270、只读存储器(ROM)230或随机存取存储器(RAM)240,用于存储由计算设备200处理和/或传输的各种数据文件。示例性计算设备200也可以包括储存于ROM 230、RAM 240和/或其他形式的非暂时性存储介质中的能够被处理器220执行的程序指令。本申请的方法和/或流程可以以程序指令的方式实现。计算设备200还可以包括I/O组件260,支持计算设备200与其中的其他组件之间的输入/输出。计算设备200也可以通过网络通信接收编程和数据。

仅仅为了说明,在计算设备200中仅描述了一个处理器。然而,应当注意,本申请中的计算设备200还可以包括多个处理器,因此由本申请中描述的一个处理器执行的操作也可以由多个处理器联合或单独执行。例如,计算设备200的处理器执行操作A和操作B。又例如,操作A和操作B也可以由计算设备200中的两个不同的处理器联合或分开执行(例如,第一处理器执行操作A,第二处理器执行操作B,或者第一和第二处理器共同执行操作A和B)。

图3是根据本申请的一些实施例所示的可以在其上实现终端设备的示例性移动设备的示例性硬件和/或软件组件的示意图。如图3所示,移动设备300可以包括通信平台310、显示器320、图形处理单元(GPU)330、中央处理单元(CPU)340、I/O 350、内存360和存储器390。在一些实施例中,任何其他合适的组件,包括但不限于系统总线或控制器(未示出),也可包括在移动设备300内。在一些实施例中,移动操作系统370(如,iOS

为了实施本申请描述的各种模块、单元及其功能,计算机硬件平台可用作本文中描述的一个或以上组件的硬件平台。具有用户接口组件的计算机可用于作为个人计算机(PC)或任何其他类型的工作站或终端设备。若程控得当,计算机亦可用作服务器。

图4是根据本申请的一些实施例所示的示例性处理设备的框图。处理设备112可以包括采集模块402、确定模块404、传输模块406、读取模块408、写入模块410、监控模块412和配置模块414。

采集模块402可以用于接收一个或以上写入请求,用于将一个或以上数据集写入一个或以上持久化数据存储器。例如,采集模块402可以经由网络120从终端设备130接收一个或以上写入请求。又如,采集模块402可以从一个或以上数据生成服务器接收一个或以上写入请求。在一些实施例中,写入请求可以包括数据集的特征或与数据集的特征有关。

在一些实施例中,确定模块404可以用于确定服务器110的操作状态。例如,确定模块404可以确定目标服务器组的主服务器是否运行正常。又例如,确定模块404可以确定目标服务器组的从服务器是否运行正常。作为又一示例,确定模块404可以确定另一个(例如,空闲的)服务器组或启动用于存储数据集的新服务器组。作为又一示例,确定模块404可以确定消息挤压是否存在于服务器组中。在一些实施例中,确定模块404可以基于数据集的特征和/或至少两个服务器组的操作状态来确定每个数据集的目标服务器组。

传输模块406可以用于将每个数据集发送到相应的目标服务器组。例如,传输模块406可以将数据集发送到目标服务器组的主服务器。又例如,传输模块406可以将数据集发送到目标服务器组的从服务器。

读取模块408可以用于从服务器110读取数据集。例如,读取模块408可以从至少两个服务器组读取数据集。又例如,读取模块408可以从目标服务器组的主服务器读取数据集。作为又一示例,读取模块408可以从目标服务器组的从服务器读取数据集。

写入模块410可以用于将数据集写入存储设备。例如,写入模块410可以将数据集写入由持久化数据存储器操作的数据库。又如,写入模块410可以将数据集存储在相应的目标服务器组中。作为又一示例,写入模块410可以将数据集存储在目标服务器组的主服务器中。作为又一示例,写入模块410可以将数据集存储在目标服务器组的从服务器中。作为又一示例,写入模块410可以将目标服务器组的主服务器的数据集同步到目标服务器组的从服务器。作为又一示例,写入模块410可以将数据集异步存储在主服务器和从服务器中。

监控模块412可以用于监视服务器组的主服务器(例如,图5-7中所示的目标服务器组、图7中所示的至少两个服务器组)、服务器组的从服务器、代理服务器和/或消费设备的操作状态。

配置模块414可以用于配置服务器110。例如,配置模块414可以启动新服务器以与目标服务器组的主服务器耦合,并使用新服务器作为目标服务器组的从服务器。又例如,配置模块414可以启动新服务器以与目标服务器组的从服务器耦合,并使用新服务器作为目标服务器组的主服务器。作为又一示例,配置模块414可以调整消费设备的数据读取和/或写入速度,和/或启动另一个消费设备以分担消费设备的工作负荷。作为另一示例,配置模块414可以启动新的(例如,空闲的)服务器组,用于存储从代理服务器发送的数据集。

应当注意上述处理设备112的描述仅仅是为了说明的目的而提供的,并不意图限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。例如,处理设备112可以进一步包括用于存储数据集的存储模块(未示出)和在处理设备112的操作期间生成的数据(例如,监视模块412的监视结果、配置模块414的配置数据等)。又例如,确定模块404和配置模块414可以组合为单个模块,其既可以确定服务器的操作状态,也可以配置服务器。

图5是根据本申请的一些实施例所示的将数据存储到数据库中的示例性过程的流程图。过程500可以由数据存储系统100执行。例如,过程500可以实现为存储在存储器ROM230或RAM 240中的一组指令。处理器220和/或图4中的模块可以执行一组指令,并且当执行指令时,处理器220和/或模块可以被配置以执行过程500。以下所示过程的操作仅出于说明的目的。在一些实施例中,过程500可以利用未描述的一个或以上附加操作,和/或删除所讨论的一个或以上操作来完成。另外,图5中示出并在下面描述的过程500的操作的顺序不是限制性的。

在501中,代理服务器的处理设备112(例如,采集模块402)可以接收一个或以上写入请求,用于将一个或以上数据集写入一个或以上持久化数据存储器。

在一些实施例中,可以从一个或以上数据生成服务器接收写入请求。在一些实施例中,数据生成服务器可以生成或获得数据集和/或生成相应的写入请求。在一些实施例中,数据生成服务器可以通过对至少两个初始数据集执行一个或以上处理操作来生成数据集。在一些实施例中,初始数据集可包括与线上到线下(O2O)服务有关的数据,例如,与订单有关的数据、与车辆有关的数据、与车辆运输路线有关的数据、支付数据、交通数据、位置数据、与出行时间有关的数据、与乘客偏好有关的数据、与驾驶员偏好有关的数据、与出发地点有关的数据、目的地数据等或其任意组合。仅出于说明目的,O2O服务可包括出租车服务、拼车服务、搭便车服务、快递服务、在线购物服务、医疗服务、基于地图的服务等或其任意组合。在一些实施例中,初始数据集可包括与自动驾驶或自动驾驶测试有关的数据,例如,道路状况信息、地图信息、驾驶期间无人驾驶机器人的状态(例如,无人驾驶机器人的位置、无人驾驶机器人的速度、无人机器人的加速度、无人驾驶机器人的驾驶路径)等或其任意组合。在一些实施例中,处理操作可以包括压缩初始数据、验证初始数据、过滤初始数据、分割初始数据等或其任意组合。在一些实施例中,处理操作可以包括机器学习模型训练。要写入持久化数据存储器的数据集可以包括处理后的数据(例如,压缩数据、验证数据、过滤数据、分段数据、由机器学习模型训练生成的数据等)。

在一些实施例中,写入请求可以包括数据集的特征或与数据集的特征有关,例如,类型、来源、用途、名称、存储路径、大小等或其任意组合。在一些实施例中,写入请求可以包括对请求写入的内容的描述。在一些实施例中,内容的描述可指示请求哪种类型的数据、所请求数据的大小、所请求数据的创建的路径、创建的时间和/或日期、所请求数据的创建者或作者、计算机网络上创建所请求数据的位置、所请求数据的数据质量等或其组合。以机器学习模型训练为例,写入请求可以指示训练时间、生成数据的训练模型的名称、模型训练任务的类型或目的、训练产生的内容的描述等或其任意组合。在一些实施例中,写入请求可以记录在日志文件中,例如,代理服务器的日志文件。在一些实施例中,代理服务器可以使用一个或以上算法(例如,哈希算法)为每个数据集生成识别码。在一些实施例中,可以基于数据集的特征或请求写入的内容的描述来生成识别码。在一些实施例中,由相同类型的模型训练任务生成的数据集,由相同的训练模型生成或基于相同的初始数据生成的数据集可以具有相同的识别码。

在503中,代理服务器的处理设备112(例如,传输模块406)可以基于与数据集有关的识别码将每个数据集发送到相应的目标服务器组。在一些实施例中,服务器组可以包括主服务器和/或从服务器。

在一些实施例中,存储服务器可以被配置为至少两个服务器组。在一些实施例中,至少两个服务器组的每个服务器组可以包括主服务器和/或从服务器。在一些实施例中,具有相同识别码的数据集可以被发送到相同的服务器组,其可以保证至少两个数据集的数据流的有序性。在一些实施例中,代理服务器可以(在至少两个服务器组中)识别与要写入的数据集具有相同的识别码的当前数据所在的目标服务器组。在一些实施例中,如果要写入的数据集的识别码与存储在至少两个服务器组中的当前数据的任何一个识别码都不相同,或者至少两个服务器组不可用,代理服务器可以启动一个新服务器组(例如,在服务器110中)以存储数据集。

在一些实施例中,主服务器和从服务器可以直接(例如,通过数据电缆)或经由网络120彼此通信。在一些实施例中,主服务器和从服务器可以存储相同的数据。例如,主服务器可以将存储在其中的数据发送到从服务器。又如,从服务器可以将存储在其中的数据发送到主服务器。包括主服务器和从服务器的服务器组的配置可以提高数据存储系统100的稳定性,确保数据安全性,并降低由于宕机造成的数据丢失的风险。在一些实施例中,主服务器和/或从服务器可以分别生成记录主服务器和/或从服务器的操作状态的日志文件。

在505中,存储服务器的处理设备112(例如,写入模块410)可以将数据集异步存储在主服务器和从服务器中。

在一些实施例中,存储服务器可以交替地或依次将数据集分别存储在主服务器和从服务器中。在一些实施例中,主服务器可以在从代理服务器接收数据集之后存储数据集。在一些实施例中,主服务器可以将数据集发送到从服务器,并且从服务器可以存储数据集。例如,主服务器可以从代理服务器接收数据集并将数据集存储在主服务器中;主服务器可以发送写入请求,用于将数据集写入从服务器;如果从服务器运行正常,则从服务器可以响应主服务器;主服务器可以将数据集传输到从服务器;并且从服务器可以将数据集写入从服务器。如果主服务器运行不正常,则从服务器可以从代理服务器接收数据集并将数据集存储在从服务器中。数据集在主服务器和从服务器中的存储过程可以是异步的,这可以提高数据存储系统100的并发写入能力和稳定性。

在507中,耦合到目标服务器组的消费设备的处理设备112(例如,读取模块408)可以从目标服务器组读取数据集。

消费设备可以消费或读取存储在服务器组中的数据。数据可以包括至少两个数据集的一部分或全部,和/或已经存储在服务器组中的数据。在一些实施例中,每个消费设备可以耦合到至少两个服务器组中的一个。在一些实施例中,消费设备可以与目标服务器组的主服务器和/或从服务器通信和/或连接到服务器组的主服务器和/或从服务器以读取数据集。在一些实施例中,消费设备可以在消费设备的日志文件中记录消费设备的操作信息。代理服务器、存储服务器和消费设备之间的数据通信的更多描述可以参考在本申请的其他地方(例如,图6A和6B及其描述)。

在509中,消费设备的处理设备112(例如,写入模块410)可以将数据集写入由持久化数据存储器操作的数据库。数据库可以包括Hadoop数据库(HBase)、Cassandra、Oracle、Sybase、IBM INFORMIX、INGRES数据库、Microsoft SQL服务器等。在一些实施例中,数据库可以由持久化数据存储器操作。在一些实施例中,持久化数据存储器可以包括但不限于ROM、闪存、软盘、磁盘、光盘、硬盘驱动器、固态驱动器等或其任意组合。在一些实施例中,持久化数据存储器可以设置在因特网数据中心(IDC)中。如这里所使用的,数据中心可以指用于容纳计算机系统和有关组件的专用空间,例如电信设备和存储设备(例如,存储设备140)。IDC可以指由服务提供者或IDC公司建立的数据中心,以提供稳定和宽带网络服务、高性能计算服务和/或主机服务。

需要注意的是,以上描述仅为描述方便,并不能把本申请限制在所举实施例范围之内。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。在一些实施例中,可以在过程500中添加图8中所示的一个或以上操作。在一些实施例中,代理服务器可以从终端设备130接收一个或以上写入请求。例如,用户(例如,工程师)可以通过安装在终端设备130上的应用程序生成写入请求,并且终端设备130可以将写入请求发送到代理服务器。

图6A和6B是根据本申请的一些实施例所示的在主服务器和从服务器中的异步存储数据集的示例性过程的流程图。在一些实施例中,过程600可以在数据存储系统100中实现。过程600可以由数据存储系统100执行。例如,过程600可以实现为存储在存储ROM 230或RAM 240中的一组指令。处理器220和/或图4中的模块可以执行一组指令,并且当执行指令时,处理器220和/或模块可以被配置以执行处理600。以下所示过程的操作仅出于说明的目的。在一些实施例中,过程600可以利用未描述的一个或以上附加操作和/或未讨论的一个或以上个操作来完成。另外,图6A和6B中所示并在下面描述的过程600的操作的顺序是非限制性的。在一些实施例中,可以根据图6中所示的过程600来执行图5中所示的操作503至507。

在601中,代理服务器的处理设备112(例如,采集模块402)可以接收用于将数据集写入持久化数据存储器的写入请求。写入请求的更多描述可以参考本申请的其他地方(例如,图5中的步骤501及其描述)。

在603中,代理服务器的处理设备112(例如,确定模块404)可以确定目标服务器组的主服务器是否运行正常。在一些实施例中,代理服务器可以(在至少两个服务器组中)识别与要写入的数据集具有相同的识别码的当前数据所在的目标服务器组。在一些实施例中,代理服务器可以基于与其连接的外部设备是否运行正常来确定主服务器的运行状态。例如,如果外部设备运行不正常,代理服务器可能会确定主服务器运行不正常。在一些实施例中,代理服务器可以基于主服务器的数据流速来确定主服务器的运行状态。例如,如果主服务器的数据流速在一段时间内为零,则代理服务器可以确定主服务器运行不正常。在一些实施例中,代理服务器可以基于主服务器的日志文件来确定主服务器的操作状态。响应于确定目标服务器组的主服务器运行正常,过程600可以进行到步骤605。响应于确定目标服务器组的主服务器运行不正常,过程600可以进行到图6B中的步骤619。

在605中,代理服务器的处理设备112(例如,传输模块406)可以将数据集发送到目标服务器组的主服务器。可以参考本申请的其他地方找到数据集传输到主服务器的更多描述(图5中的操作503及其描述)。

在607中,存储服务器的处理设备112(例如,写入模块410)可以将数据集存储在目标服务器组的主服务器中。在一些实施例中,主服务器可以从代理服务器接收数据集并存储数据集。

在609中,存储服务器的处理设备112(例如,确定模块404)可以确定目标服务器组的从服务器是否运行正常。在一些实施例中,处理设备112可以确定从服务器的运行状态。从服务器的操作状态的确定可以类似于主服务器的操作状态的确定,更多描述可以参考操作603及其描述。响应于确定从服务器运行正常,过程600可以进行到步骤611。响应于确定目标服务器组的从服务器运行不正常,过程600可以进行到步骤615。

在611中,存储服务器的处理设备112(例如,写入模块410)可以将数据集同步到目标服务器组的从服务器。从服务器可以存储数据集的一部分或全部。例如,从服务器可以存储最新的数据集,或者主服务器中的所有数据集。在一些实施例中,主服务器可以发送写入请求以将数据集写入从服务器;如果从服务器运行正常,则从服务器可以响应主服务器。在一些实施例中,主服务器可以将数据集发送到从服务器,并且从服务器可以将数据集写入从服务器。

在613中,消费设备的处理设备112(例如,读取模块408)可以从目标服务器组的从服务器读取数据集。在一些实施例中,消费设备可以直接(例如,通过数据线)或通过网络120与目标服务器组的从服务器通信和/或连接,以读取存储在从服务器中的数据集。在一些实施例中,消费设备可以向目标服务器组的从服务器发送读取请求;如果从服务器运行正常,则从服务器可以响应消费设备,并且消费设备可以从服务器读取数据。在一些实施例中,从从服务器读取的数据可以包括数据集的部分或全部。在一些实施例中,先存储在从服务器中的数据可以先由消费设备读取。

在615中,消费设备的处理设备112(例如,读取模块408)可以从目标服务器组的主服务器读取数据集。在一些实施例中,消费设备可以读取存储在主服务器中的数据集的一部分或全部。例如,消费设备可以读取存储在主服务器中的最新数据、存储在主服务器中的所有数据集等。

在617中,代理服务器的处理设备112(例如,配置模块414)可以启动新服务器以与目标服务器组的主服务器耦合,并使用该新服务器作为目标服务器组的从服务器。在一些实施例中,处理设备112可以从服务器110中启动新服务器。例如,处理设备112可以将服务器110中的空闲服务器确定为新服务器。在一些实施例中,处理设备112可以通过在新服务器上执行例如配置文件来配置新服务器,以便将新服务器和主服务器配置为服务器组,并将新服务器用作从服务器。

在619中,代理服务器的处理设备112(例如,确定模块404)可以确定目标服务器组的从服务器是否运行正常。可以参考本申请的其他地方对从服务器的操作状态的确定的更多描述(例如,图6A中的步骤609及其描述)。响应于确定目标服务器组的从服务器运行正常,过程600可以进行到步骤621。响应于确定目标服务器组的从服务器运行不正常,过程600可以进行到步骤629。

在621中,代理服务器的处理设备112(例如,传输模块406)可以将数据集发送到目标服务器组的从服务器。在一些实施例中,处理设备112可以经由连接代理服务器和从服务器的一条或以上数据电缆,将数据集从代理服务器直接传输到从服务器。在一些实施例中,处理设备112可以经由网络120将数据集从代理服务器发送到从服务器。

在623中,存储服务器的处理设备112(例如,写入模块410)可以将数据集存储在目标服务器组的从服务器中。

在625中,消费设备的处理设备112(例如,读取模块408)可以从目标服务器组的从服务器读取数据集。在一些实施例中,消费设备可以直接(例如,经由数据电缆)或经由网络120与目标服务器组中的从服务器通信和/或连接。在一些实施例中,消费设备可以向从服务器发送读取请求;从服务器可以响应消费设备,和/或将数据集发送到消费设备。在一些实施例中,处理设备112可以读取存储在目标服务器组的从服务器中的数据集的一部分或全部。

在627中,代理服务器的处理设备112(例如,配置模块414)可以启动新服务器以与目标服务器组的从服务器耦合,并使用该新服务器作为目标服务器组的主服务器。在一些实施例中,处理设备112可以从服务器110中启动新服务器。例如,处理设备112可以将服务器110中的空闲服务器确定为新服务器。在一些实施例中,处理设备112可以通过在新服务器上执行例如配置文件来配置新服务器,以便将新服务器和主服务器配置为服务器组,并将新服务器用作主服务器。

在629中,代理服务器的处理设备112(例如,确定模块404)可以确定另一个服务器组或启动用于存储数据集的新服务器组。在一些实施例中,处理设备112可以从至少两个当前服务器组中确定另一个服务器组。例如,处理设备112(例如,确定模块404)可以确定至少两个服务器组中的空闲服务器组,并使用空闲服务器组作为目标服务器组。在一些实施例中,处理设备112(例如,配置模块414)可以从服务器110中启动新的服务器组以存储数据集。例如,处理设备112可以确定服务器110中的两个空闲服务器,并通过在两个空闲服务器上执行例如配置文件来配置两个空闲服务器,以便将两个空闲服务器配置为服务器组,其中两个空闲服务器中的一个用作主服务器,另一个用作从服务器。

需要注意的是,以上描述仅为描述方便,并不能把本申请限制在所举实施例范围之内。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。在一些实施例中,可以在过程600中的其他地方添加一个或以上操作。例如,可以在操作613、615和/或625之后添加存储操作。在存储操作中,消费设备的处理设备112(例如,写入模块410)可以将数据集存储在由存储设备操作的数据库中。又例如,在操作629之后,处理设备112可以使用新确定的服务器组作为目标服务器组,并且过程600可以返回到605,然后可以执行步骤605到617的一个或以上步骤。

图7是根据本申请的一些实施例所示的用于存储数据集到数据库的示例性过程的流程图。过程700可以由数据存储系统100执行。例如,过程700可以实现为存储在存储ROM230或RAM 240中的一组指令。处理器220和/或图4中的模块可以执行一组指令,并且当执行指令时,处理器220和/或模块可以被配置以执行过程700。以下所示过程的操作仅出于说明的目的。在一些实施例中,过程700可以利用未描述的一个或以上附加操作和/或未讨论的一个或以上个操作来完成。另外,图7中示出并在下面描述的过程700的操作的顺序是非限制性的。

在701中,代理服务器的处理设备112(例如,采集模块402)可以接收用于将至少两个数据集写入持久化数据存储器的至少两个写入请求。在一些实施例中,至少两个写入请求可以由一个或以上数据生成服务器生成并发送到代理服务器。在一些实施例中,所述至少两个写入请求可以是并发写入请求。写入请求的更多描述和/或写入请求的接收可以参考本申请的其他地方(例如,图5中的步骤501及其描述)。

在703中,代理服务器的处理设备112(例如,确定模块404)可以针对每个数据集,从至少两个服务器组中确定目标服务器组。在一些实施例中,代理服务器可以基于与每个数据集有关的识别码和/或至少两个服务器组的运行状态来确定目标服务器组。在一些实施例中,如图5的步骤501所示,代理服务器可以使用一个或以上算法(例如,哈希算法)为每个数据集生成识别码。在一些实施例中,可以基于数据集的特征或请求写入的内容的描述来生成识别码。

在一些实施例中,代理服务器可以基于与每个数据集有关的识别码和/或至少两个服务器组的运行状态来确定目标服务器组。在一些实施例中,代理服务器可以根据至少两个服务器组的运行状态确定至少两个服务器组中的可用服务器组(例如,未满负荷运行的服务器组、工作正常的服务器组,或具有可用存储空间或计算资源的服务器组)。在一些实施例中,代理服务器可以(在可用服务器组中)识别具有当前数据的相应目标服务器组,该当前数据具有与要写入的数据集相同的识别码。或者,在一些实施例中,代理服务器可以(在至少两个服务器组中)识别相应的候选目标服务器组,其具有与要写入的数据集具有相同识别码的当前数据,然后代理服务器可以根据至少两个服务器组的运行状态确定相应的可用目标服务器组。在一些实施例中,如果数据集没有对应的可用目标服务器组,或者数据集的识别码与所述至少两个服务器组中的当前数据都不相同,代理服务器可以启动用于存储数据集的新服务器组,如图6B的步骤629所示。这样,具有相同识别码的数据集可以传输到同一个服务器组,或者发送到同一服务器组的数据集可以具有相同的识别码,并且可以保证至少两个数据集的数据流的有序性。

在705中,代理服务器的处理设备112(例如,传输模块406)可以将每个数据集发送到对应的目标服务器组。在一些实施例中,目标服务器组可以包括主服务器和从服务器。在一些实施例中,如果目标服务器组的主服务器运行正常,则代理服务器可以将每个数据集发送到相应目标服务器组的主服务器。如果目标服务器组的主服务器运行不正常,并且目标服务器组的从服务器运行正常,则代理服务器可以将每个数据集发送到相应目标服务器组的从服务器。可以参考本申请的其他地方更多关于数据集传输到目标服务器组的描述(例如,图6A和6B及其描述)。

在707中,存储服务器的处理设备112(例如,写入模块410)可以将每个数据集存储在相应的目标服务器组中。在一些实施例中,处理设备112可以将每个数据集异步存储在目标服务器组的主服务器和相应的从服务器中,这可以提高数据存储系统100的并发写入能力和稳定性。在目标服务器组中存储数据集的更多描述可以参考本申请的其他地方(例如,图6A和6B及其描述)。

在709中,消费设备的处理设备112(例如,读取模块408)可以读取存储在至少两个服务器组中的数据。消费设备读取的数据可以包括至少两个数据集的部分或全部,和/或已经存储在至少两个服务器组中的数据。在一些实施例中,至少两个服务器组中的每一个可以耦合到对应的消费设备。在一些实施例中,每个消费设备可以向相应的服务器组发送读取请求;相应的服务器组可以响应每个消费设备;和/或每个消费设备可以从相应的服务器组读取数据。在一些实施例中,如图6A的操作613或625所示,消费设备可以从相应的服务器组的从服务器读取数据。在一些实施例中,如图6A的操作615所示,消费设备可以从相应的服务器组的主服务器读取数据。在一些实施例中,消费设备的数量可根据,例如,从服务器组读取数据的消费设备的读取速度、将数据写入其他设备(例如,由存储设备操作的数据库)的消费设备的写入速度等调整。

在711中,消费设备的处理设备112(例如,写入模块410)可以将数据写入由持久化数据存储器操作的数据库。可以参考本申请的其他地方关于将数据写入数据库的更多描述(例如,图5中的操作509及其描述)。

需要注意的是,以上描述仅为描述方便,并不能把本申请限制在所举实施例范围之内。对于本领域的普通技术人员来说,根据本申请的教导可以做出多种变化和修改。然而,这些变化和修改不会背离本申请的范围。在一些实施例中,可以在过程700中的其他地方添加一个或以上操作。例如,可以在过程700中添加图8中所示的一个或以上操作。

图8是根据本申请的一些实施例所示的用于监视数据存储的示例性过程的流程图。过程800可以由数据存储系统100执行。例如,过程800可以实现为存储在存储ROM 230或RAM 240中的一组指令。处理器220和/或图4中的模块可以执行一组指令,并且当执行指令时,处理器220和/或模块可以被配置以执行处理800。以下所示过程的操作仅出于说明的目的。在一些实施例中,过程800可以利用未描述的一个或以上附加操作,和/或未讨论的一个或以上操作来完成。另外,图8中所示和下面描述的过程800的操作的顺序是非限制性的。

在801中,监视器的处理设备112(例如,监视模块412)可以监测服务器组的主服务器(例如,图5-7中所示的目标服务器组,图7中所示的至少两个服务器组),服务器组的从服务器,和/或消费设备的运行状态。在一些实施例中,主服务器、从服务器和/或消费设备的运行状态的监测过程,可以类似于图6A的操作603中描述的主服务器的运行状态的确定过程。例如,处理设备112可以通过监控数据流速,连接到主服务器、从服务器、消费设备等的外部设备的运行情况,确定主服务器、从服务器和/或消费设备运行状态。在一些实施例中,处理设备112可以基于对应的日志文件来监测操作状态。例如,处理设备112可以基于主服务器的日志文件来监测主服务器的操作状态。又例如,处理设备112可以基于从服务器的日志文件来监测从服务器的操作状态。作为另一示例,处理设备112可以基于消费设备的日志文件来监测消费设备的操作状态。

监视器可以用于监测服务器110的操作状态(例如,主服务器、从服务器、代理服务器、消费设备等)。数据存储系统100可以为每个服务器110生成一个或以上对应的日志文件。日志文件可以记录与服务器有关的信息。该信息可以包括请求信息(例如,写入请求、读取请求等)、错误信息、时间信息等或其任意组合。在一些实施例中,服务器110可以在相应的日志文件中记录服务器110的事件、请求信息、服务器110的异常状态等。在一些实施例中,服务器110可以将日志文件或记录在日志文件中的信息报告给数据存储系统100的管理员。在一些实施例中,如果服务器110的一个或以上运行不正常(或处于异常状态),则管理员可以识别异常状态的原因和/或时间。

在803中,处理设备112(例如,确定模块404)可以基于监测结果确定服务器组中是否存在消息挤压。

在一些实施例中,处理设备112可以基于监测结果确定从代理服务器发送到服务器组的数据集的数量(或传输速率)与消费设备从服务器组读取的数据集的数量(或传输速率)之间的差值。如果差值大于预设值,则处理设备112可以确定服务器组中存在消息挤压,否则,处理设备112可以确定服务器组中不存在消息挤压。在一些实施例中,处理设备112可以基于监测结果,确定从代理服务器发送到每个服务器组的数据集的数量(或传输速率)和相应的消费设备从每个服务器组读取的数据集的数量(或传输速率)之间的差值。如果差值大于预设值,处理设备112可以确定相应服务器组中存在消息挤压,否则处理设备112可以确定服务器组中不存在消息挤压。在一些实施例中,如果消费设备没有在预设时间内完成读取存储在相应服务器组中的所有数据集,则处理设备112可以确定服务器组中存在消息挤压。

在805,响应于确定服务器组中存在消息挤压,处理设备120(例如,配置模块414)可以调整消费设备的数据读取和/或写入速度和/或启动另一个消费设备以分担消费设备的工作负荷。在一些实施例中,处理设备112可以基于当前消费设备的数据写入状态来调整数据读取和/或写入速度。数据写入状态可以指示需要从代理服务器写入服务器组的数据量、将数据从代理服务器写入服务器组的写入速度、需要从服务器组写入数据库的数据量、可以读取和/或写入数据的有效消费设备的数量、每个消费设备读取和/或写入数据的速度等。

在一些实施例中,消息挤压可能由于当前消费设备要写入数据的数据库的空间有限、当前消费设备的异常状态、当前消费设备的写入速度有限等而引起。因此,在一些实施例中,处理设备120可以基于当前数据写入状态来控制或调整消费设备的数据读取和/或写入速度。在一些实施例中,处理设备120可以通过在当前消费设备上执行一个或以上配置文件来控制或调整当前消费设备的数据读取和/或写入速度。在一些实施例中,处理设备112可以启动一个或以上其他消费设备以分担当前消费设备的工作负荷。例如,处理设备112可以将服务器110中的空闲服务器确定为新的消费设备。在一些实施例中,处理设备112可以通过在新的消费设备上执行一个或以上配置文件来启动新的消费设备。

需要注意的是,以上描述仅为描述方便,并不能把本申请限制在所举实施例范围之内。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。在一些实施例中,可以在过程800中的其他地方添加一个或以上操作。例如,如果服务器组中的所有数据都已写入由持久化数据存储器操作的数据库,并且服务器组的空闲时间大于阈值,则服务器组可以与代理服务器解耦,相应的当前消费设备可以与服务器组解耦,并且解耦的服务器组和解耦的当前消费设备可以被识别为服务器110中的空闲服务器。如果数据存储系统100中的当前服务器工作过载或工作不正常,则空闲服务器可以进一步被启动为代理服务器、主服务器、从服务器和/或消费设备进行使用。

图9是根据本申请的一些实施例所示的用于数据存储的示例性系统的示意图。在一些实施例中,系统900可以包括队列系统,例如分布式队列系统。系统900可以用于写入至少两个数据集。例如,系统900可用于同时和/或持久地将至少两个数据集存储到持久化数据存储器(或由持久化数据存储器操作的数据库)。如图9所示,系统900可以包括代理层、存储层、至少两个消费者(也称为消费设备)、由持久化数据存储器操作的Hadoop数据库(Hbase)、以及监视器。代理层、存储层和消费设备中的至少一个可以是分布式。

在一些实施例中,代理层可以包括至少两个代理服务器(例如,代理服务器A、代理服务器B、......、代理服务器N等)。至少两个代理服务器可以是分布式。代理层可以直接(例如,通过一条或以上数据线)或通过网络120与一个或以上数据生成服务器(和/或终端设备130)通信或连接到一个或以上数据生成服务器(和/或终端设备130)。例如,代理服务器可以从终端设备130接收至少两个写入请求。在一些实施例中,写入请求可以由一个或以上数据生成服务器(图9中未示出)生成。在一些实施例中,终端设备130和/或数据生成服务器可以随机地确定一个或以上代理服务器以响应写入请求。在一些实施例中,终端设备130可以使用一个或以上算法(例如,(动态)负载平衡算法)确定一个或以上代理服务器来响应写入请求。代理层中的代理服务器可以与存储层中的服务器组通信或连接。在一些实施例中,代理服务器可以响应写入请求并将要写入的数据集(在写入请求中请求的数据集)发送到存储层中的存储服务器。

存储层可以接收从代理层中的代理服务器发送的写入请求,和/或存储从代理服务器发送的数据集。在一些实施例中,存储层可以包括至少两个服务器组,例如服务器组A、服务器组B、服务器组C、......、服务器组N等。在一些实施例中,代理服务器可以为每个数据集生成识别码。在一些实施例中,具有相同识别码的数据集可以被发送到相同的服务器组。例如,代理服务器B可以发送数据集中具有识别码x

消费设备可以分别与服务器组通信或连接到服务器组。在一些实施例中,每个消费设备可以耦合到相应的服务器组。消费设备可以与Hbase通信或连接到Hbase。消费设备可以从服务器组读取数据,并将数据写入Hbase。在一些实施例中,消费设备可以读取存储在相应服务器组的主服务器中的数据。在一些实施例中,消费设备可以读取存储在相应服务器组的从服务器中的数据。代理服务器、存储服务器和消费设备之间的数据通信的更多描述可以参考本申请的其他地方(图6A和6B及其描述)。

Hbase可以用于存储从至少两个消费设备读取的数据。在一些实施例中,Hbase可以由持久化数据存储器操作。在一些实施例中,持久化存储器可以包括但不限于ROM、闪存、软盘、磁盘、光盘、硬盘驱动器、固态驱动器等或其任意组合。在一些实施例中,持久化数据存储器可以设置在因特网数据中心(IDC)中。

在一些实施例中,监视器可以与服务器组和/或消费设备通信,和/或连接到服务器组和/或消费设备。在一些实施例中,代理服务器、服务器组、消费设备的所有操作可以记录在相应的日志文件中。监视器可以基于,例如其对应的日志文件来监测服务器组的主服务器、服务器组的服务器,和/或消费设备的操作状态。在一些实施例中,系统900可以基于监控结果调整消费设备的数据读取和/或写入速度,例如,启动另一个消费设备,提高当前消费设备的写入速度等,或其任意组合。

需要注意的是,以上描述仅为描述方便,并不能把本申请限制在所举实施例范围之内。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。例如,系统900可以包括一个或以上监视器以监测系统900的组件的操作状态。又例如,监视器可以监测代理层中代理服务器的操作状态。

应该注意的是,上述仅出于说明性目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,根据本申请的教导可以做出多种变化和修改。然而,这些变化和修改不会背离本申请的范围。

上文已对基本概念做了描述,显然,对于阅读此申请后的本领域的普通技术人员来说,上述发明披露仅作为示例,并不构成对本申请的限制。虽然此处并未明确说明,但本领域的普通技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。

同时,本申请使用了特定词语来描述本申请的实施例。此外,本申请使用了特定术语来描述本申请的实施例。例如,术语“一个实施例”、“一实施例”及“一些实施例”意指与本申请的至少一个实施例有关的某一特征、结构或特性。因此,应当强调并注意的是,本说明书中在不同位置两次或以上提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或以上实施例中的某些特征、结构或特点可以进行适当的组合。

此外,本领域的普通技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的过程、机器、产品或物质的组合,或对其任何新的和有用的改进。相应地,本申请的各个方面可以完全由硬件实施、可以完全由软件(包括韧体、常驻软件、微代码等)实施、也可以由硬件和软件组合实施,上述硬件或软件均可以被称为“模块”、“单元”、“组件”、“设备”或“系统”。此外,本申请的各方面可以采取体现在一个或以上计算机可读介质中的计算机程序产品的形式,其中计算机可读程序代码包括在其中。

计算机可读信号介质可能包括一个内含有计算机程序代码的传播数据信号,例如在基带上或作为载波的一部分。此类传播信号可以有多种形式,包括电磁形式、光形式等或任何合适的组合形式。计算机可读信号介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通信、传播或传输供使用的程序。位于计算机可读信号介质上的程序代码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF等,或任何上述介质的组合。

本申请各部分操作所需的计算机程序编码可以用任意一种或以上程序语言编写,包括面向主体编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序代码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。

此外,除非权利要求中明确说明,本申请所述处理元件和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。

同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或以上发明实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。然而,本申请的方法不应被解释为反映所声称的待扫描对象物质需要比每个权利要求中明确记载的更多特征的意图。实际上,实施例的特征要少于上述揭露的单个实施例的全部特征。

相关技术
  • 用于运行数据存储系统的方法、用于执行该方法的计算机程序和根据该方法工作的数据存储系统
  • 数据存储系统、计算设备及数据存储系统的构建方法
技术分类

06120112318673