副本读写方法及装置与流程

文档序号:19155537发布日期:2019-11-16 00:42阅读:294来源:国知局
副本读写方法及装置与流程

本发明涉及通信技术领域,具体涉及一种副本读写方法及装置。



背景技术:

分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

目前,分布式存储系统中保证数据可靠性提供两种方式:副本策略和纠删码策略。一般使用比较多的是副本策略,副本策略中一般采用三副本,而当前副本策略在写操作时使用的是强一致性来保证副本数据之间的一致性,也就是说只有所有副本之间的数据都写完了,才给用户响应完成应答。以分布式存储系统中的ceph系统为例,ceph系统使用的主从同步复制策略虽然达到了强一致性,但是写响应时间比较长,必须等待所有的副本响应,写操作才算完成,响应时间太长,可用性较低。



技术实现要素:

本申请提供一种副本读写方法及装置,分布式存储系统运行过程中的读写负载的比例来动态的调整副本实时更新的数量,让分布式存储系统适应更加多样化的使用环境,使分布式存储系统在云计算中更具有普适性,分布式存储系统在副本更新时的一致性、可用性和系统性能之间的达到平衡。

第一方面,本申请提供一种副本读写方法,所述副本读写方法包括:

统计最近的预设时间周期内分布式存储系统中读写操作比例;

根据所述读写操作比例,确定所述分布式存储系统中副本读写策略,所述副本读写策略中包括同步更新的副本数和异步更新的副本数;

根据所述同步更新的副本数和异步更新的副本数,进行副本读写操作。

在本申请一些实施例中,所述根据所述读写操作比例,确定所述分布式存储系统中副本读写策略,包括:

获取所述分布式存储系统中更新副本总数;

根据所述读写操作比例,确定所述更新副本总数中同步更新的副本数和异步更新的副本数。

在本申请一些实施例中,所述根据所述读写操作比例,确定所述更新副本总数中同步更新的副本数和异步更新的副本数,包括:

根据所述读写操作比例,确定所述分布式存储系统当前的读写状态;

根据所述分布式存储系统当前的读写状态,确定所述更新副本总数中同步更新的副本数和异步更新的副本数。

在本申请一些实施例中,所述根据所述分布式存储系统当前的读写状态,确定所述更新副本总数中同步更新的副本数和异步更新的副本数,包括:

当所述分布式存储系统当前的读写状态为写密集型时,则按照第一策略修改所述更新副本总数中同步更新的副本数为第一数量;

当所述分布式存储系统当前的读写状态为读密集型时,则修改所述更新副本总数中同步更新的副本数为所述更新副本总数;

当所述分布式存储系统当前的读写状态为读写稀松型时,则保持当前所述更新副本总数中同步更新的副本数;

当所述分布式存储系统当前的读写状态为读写密集型时,则按照第二策略确定所述更新副本总数中同步更新的副本数为第二数量;

其中,所述第一数量和所述第二数量均为小于所述同步更新的副本数的正整数。

在本申请一些实施例中,所述按照第一策略修改所述更新副本总数中同步更新的副本数为第一数量,包括:

获取预设的写密集型阈值;

获取所述预设时间周期内写操作数和读操作数;

根据所述写密集型阈值以及所述预设时间周期内写操作数和读操作数,计算所述第一数量。

在本申请一些实施例中,所述按照第二策略确定所述更新副本总数中同步更新的副本数为第二数量,包括:

获取预设的写密集型阈值和读密集型阈值;

获取所述预设时间周期内写操作数和读操作数;

根据所述写密集型阈值、读密集型阈值、以及所述预设时间周期内写操作数和读操作数,计算所述第二数量。

第二方面,本申请提供一种一种副本读写装置,所述副本读写装置包括:

统计单元,用于统计最近的预设时间周期内分布式存储系统中读写操作比例;

确定单元,用于根据所述读写操作比例,确定所述分布式存储系统中副本读写策略,所述副本读写策略中包括同步更新的副本数和异步更新的副本数;

读写单元,用于根据所述同步更新的副本数和异步更新的副本数,进行副本读写操作。

在本申请一些实施例中,所述确定单元具体用于:

获取所述分布式存储系统中更新副本总数;

根据所述读写操作比例,确定所述更新副本总数中同步更新的副本数和异步更新的副本数。

在本申请一些实施例中,所述确定单元具体用于:

根据所述读写操作比例,确定所述分布式存储系统当前的读写状态;

根据所述分布式存储系统当前的读写状态,确定所述更新副本总数中同步更新的副本数和异步更新的副本数。

在本申请一些实施例中,所述确定单元具体用于:

当所述分布式存储系统当前的读写状态为写密集型时,则按照第一策略修改所述更新副本总数中同步更新的副本数为第一数量;

当所述分布式存储系统当前的读写状态为读密集型时,则修改所述更新副本总数中同步更新的副本数为所述更新副本总数;

当所述分布式存储系统当前的读写状态为读写稀松型时,则保持当前所述更新副本总数中同步更新的副本数;

当所述分布式存储系统当前的读写状态为读写密集型时,则按照第二策略确定所述更新副本总数中同步更新的副本数为第二数量;

其中,所述第一数量和所述第二数量均为小于所述同步更新的副本数的正整数。

在本申请一些实施例中,所述确定单元具体用于:

获取预设的写密集型阈值;

获取所述预设时间周期内写操作数和读操作数;

根据所述写密集型阈值以及所述预设时间周期内写操作数和读操作数,计算所述第一数量。

在本申请一些实施例中,所述确定单元具体用于:

获取预设的写密集型阈值和读密集型阈值;

获取所述预设时间周期内写操作数和读操作数;

根据所述写密集型阈值、读密集型阈值、以及所述预设时间周期内写操作数和读操作数,计算所述第二数量。

第三方面,本申请提供一种服务器,包括存储器和处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:

统计最近的预设时间周期内分布式存储系统中读写操作比例;

根据所述读写操作比例,确定所述分布式存储系统中同步更新的副本数和异步更新的副本数;

根据所述同步更新的副本数和异步更新的副本数,进行副本读写操作。

第四方面,本申请提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行如第一方面中任一项所述的副本读写方法中的步骤。

本发明实施例中通过统计最近的预设时间周期内分布式存储系统中读写操作比例;根据读写操作比例,确定所述分布式存储系统中副本读写策略,所述副本读写策略包括分布式存储系统中同步更新的副本数和异步更新的副本数;根据同步更新的副本数和异步更新的副本数,进行副本读写操作。本发明实施例中根据预设时间周期内分布式存储系统中读写操作比例确定分布式存储系统中同步更新的副本数和异步更新的副本数,进而进行副本读写操作,具体的,即分布式存储系统运行过程中的读写负载的比例来动态的调整副本实时更新的数量,让分布式存储系统适应更加多样化的使用环境,使分布式存储系统在云计算中更具有普适性,分布式存储系统在副本更新时的一致性、可用性和系统性能之间的达到平衡。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的分布式存储系统的场景示意图;

图2是本发明实施例中提供的副本读写方法的一个实施例流程示意图;

图3是本发明实施例中ceph系统中monitor端副本读写策略的设计示意图;

图4是本发明实施例中测试读写密集型状态下不同比例下读写带宽和延时的一个实施例示意图;

图5是本发明实施例中分布式存储系统的读写状态的一个具体示例图;

图6是本发明实施例中osd中异步更新模块asyncreplica的一个实施例示意图;

图7是本发明实施例中客户端读请求策略的一个示例图;

图8是本发明实施例中提供的副本读写方法的另一个实施例流程示意图;

图9是本发明实施例中提供的副本读写装置的一个实施例结构示意图;

图10是本发明实施例提供的服务器的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行的步骤及符号来说明,除非另有说明。因此,这些步骤及操作将有数次提到由计算机执行,本文所指的计算机执行包括了由代表了以一结构化型式中的数据的电子信号的计算机处理单元的操作。此操作转换该数据或将其维持在该计算机的内存系统中的位置处,其可重新配置或另外以本领域测试人员所熟知的方式来改变该计算机的运作。该数据所维持的数据结构为该内存的实体位置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域测试人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。

本文所使用的术语“模块”或“单元”可看做为在该运算系统上执行的软件对象。本文所述的不同组件、模块、引擎及服务可看做为在该运算系统上的实施对象。而本文所述的装置及方法优选的以软件的方式进行实施,当然也可在硬件上进行实施,均在本发明保护范围之内。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本发明实施例提供一种副本读写方法及装置。

请参阅图1,图1为本发明实施例所提供的分布式存储系统的场景示意图,该分布式存储系统可以包括服务器100和存储器200,存储器200用于存储数据,服务器100中集成有副本读写装置,该服务器100可以是分布式存储系统对应的服务器(即加载有分布式存储系统的服务器),如图1中的服务器,本发明实施例中服务器100主要用于统计最近的预设时间周期内分布式存储系统中读写操作比例;根据所述读写操作比例,确定所述分布式存储系统中同步更新的副本数和异步更新的副本数;根据所述同步更新的副本数和异步更新的副本数,进行副本读写操作。

本发明实施例中,该服务器100可以是独立的服务器,也可以是服务器组成的服务器网络或服务器集群,例如,本发明实施例中所描述的服务器200,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云服务器。其中,云服务器由基于云计算(cloudcomputing)的大量计算机或网络服务器构成。本发明的实施例中,服务器与客户端之间可通过任何通信方式实现通信,包括但不限于,基于第三代合作伙伴计划(3rdgenerationpartnershipproject,3gpp)、长期演进(longtermevolution,lte)、全球互通微波访问(worldwideinteroperabilityformicrowaveaccess,wimax)的移动通信,或基于tcp/ip协议族(tcp/ipprotocolsuite,tcp/ip)、用户数据报协议(userdatagramprotocol,udp)协议的计算机网络通信等。

本发明实施例中,该存储器200为存储集群,该存储集群中可以包括大量存储节点(如下面描述的osd)。另外,该分布式存储系统可以是ceph系统,分布式存储系统中的存储集群包含如下结构:客户端(client)、监视器(monitor)和对象存储设备(object-basedstoragedevice,osd)

对于ceph系统来说,对象是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性信息(metadata)的组合,这些属性信息可以定义基于文件的磁盘阵列(redundantarraysofindependentdrives,raid)参数、数据分布和服务质量等,而传统的存储系统中用文件或块作为基本的存储单位,在块存储系统中还需要始终追踪系统中每个块的属性,对象通过与存储系统通信维护自己的属性。在存储设备中,所有对象都有一个对象标识,通过对象标识osd命令访问该对象。通常有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各种属性,组对象是存储设备上共享资源管理策略的对象集合等。

为了有效支持client支持访问osd上的对象,需要在计算节点实现分布式存储系统的客户端client,通常提供posix文件系统接口,允许应用程序像执行标准的文件系统操作一样。对象存储设备osd具有一定的智能,它有自己的cpu、内存、网络和磁盘系统,osd的主要功能包括数据存储和安全访问。目前国际上通常采用刀片式结构实现对象存储设备。

本领域技术人员可以理解,图1中示出的应用环境,仅仅是与本申请方案一种应用场景,并不构成对本申请方案应用场景的限定,其他的应用环境还可以包括比图1中所示更多或更少的服务器,或者服务器网络连接关系,例如图1中仅示出1个服务器,可以理解的,该分布式存储系统还可以包括一个或多个其他服务器,或/且一个或多个与服务器网络连接的客户端,具体此处不作限定。

需要说明的是,图1所示的分布式存储系统的场景示意图仅仅是一个示例,本发明实施例描述的分布式存储系统以及场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着分布式存储系统的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。

下面结合具体实施例进行详细说明。

在本实施例中,将从副本读写装置的角度进行描述,该副本读写装置具体可以集成在服务器100中。

本发明提供一种副本读写方法,该副本读写方法包括:统计最近的预设时间周期内分布式存储系统中读写操作比例;根据所述读写操作比例,确定所述分布式存储系统中同步更新的副本数和异步更新的副本数;根据所述同步更新的副本数和异步更新的副本数,进行副本读写操作。

请参阅图2,为本发明实施例中本发明实施例中副本读写方法的一个实施例流程示意图,该副本读写方法包括:

201、统计最近的预设时间周期内分布式存储系统中读写操作比例。

其中,预设时间周期可以根据实际应用场景进行设定,如30s、1min或5min等。

具体的,在服务器中可以设置一个定时器,以确定该预设时间周期。以ceph系统为例,本发明实施例中副本读写方法主要实现过程即在monitor端。因为monitor是ceph系统的管理者,管理着ceph系统大量的状态信息,它能方便的与客户端和osd进行通信。客户端和osd都是monitor的被管理者,每当副本策略变化时,monitor可以通知osd和客户端进行策略的变更。如图3所示,在monitor中可以设置一个定时器,以确定该预设时间周期。

此时,统计最近的预设时间周期内分布式存储系统中读写操作比例具体过程如下:

客户端每次进行读写操作时,都会访问monitor以确认本地的osd存储地址(osdmap)是最新的。此时客户端会向monitor发送一个osdmap版本确认消息,在该确认消息中附加一个读写标记,读写标记表示客户端本次操作是读操作还是写操作,以便monitor对读写操作数进行统计,monitor即可统计预设时间周期内分布式存储系统中读写操作比例。

202、根据所述读写操作比例,确定所述分布式存储系统中副本读写策略,所述副本读写策略中包括同步更新的副本数和异步更新的副本数。

在目前已有的分布式环境中,不论是分布式计算,还是分布式存储,亦或者是分布式数据库,为了数据的安全性要么采用了副本技术要么采用编码技术,但是编码技术带来的性能下降对某些用户而言不可容忍,因此在生产环境中大多数采用了副本技术,目前已经有很多有关副本一致性的研究,但是固定的单一的副本一致性策略,不论是强一致性,弱一致性,或者是最终一致性,它们只针对特定的用户群或者固定的应用场景。

因此,本发明实施例中研究目前的副本一致性策略,将它改为动态自适应的副本一致性策略,让它能适应更加多样化的使用环境。该策略根据分布式存储系统(如ceph系统)运行过程中的读写负载的比例来动态的调整副本实时更新的数量。比如在ceph的三副本中,系统启动时,采用强一致性,实时更新三个副本,如果写负载过重超过一定的阈值,则实时更新主副本和一级副本,此时客户端读只能读这两个副本,如果写负载再次增大则再次减少同步写副本的数量,但是不能小于写副本数的下限。读写副本的数量,在ceph系统运行的过程中根据刷新时间间隔不断动态调整。

在本发明一些实施例中,所述根据所述读写操作比例,确定所述分布式存储系统中副本读写策略,包括:获取所述分布式存储系统中更新副本总数;根据所述读写操作比例,确定所述更新副本总数中同步更新的副本数和异步更新的副本数。进一步的,所述根据所述读写操作比例,确定所述更新副本总数中同步更新的副本数和异步更新的副本数,包括:根据所述读写操作比例,确定所述分布式存储系统当前的读写状态;根据所述分布式存储系统当前的读写状态,确定所述更新副本总数中同步更新的副本数和异步更新的副本数。

发明人在研究测试过程中发现,当系统处于读密集型时,动态副本策略使用的是强一致性,三个副本同步更新,当系统处于读写疏松型时,副本策略不变,只有当系统处于写密集型和读写密集型时,才会根据读写的比例来动态的调整副本策略,即调整同步更新的副本数。可以配置读写的比例,从而让分布式存储系统处于不同的状态。以读写密集型状态下的测试为例,读写操作的带宽和延时,先在一个阈值时间段中使用该比例的读写操作使系统达到相应的测试状态,然后在下一个阈值时间段中进行测试。本次测试主要测试了在读写密集型,不同读写比例时,顺序读(seq_read),顺序写(seq_write)1m大小文件的io带宽和延时。测试结果如图4所示。

通过图4的数据可以了解到,该动态副本策略可以根据读写操作数所占的比例来动态的调整同步更新的副本数,从而提高不同状态下的用户体验。当读操作数所占的比例越高,即写操作数的比例越低,则读带宽会增大,写延时会提高。反之,当读操作数所占比例越低时,即写操作所占比例越高,则写延时会降低,读带宽也降低。在图中,当读操作数比例小于30%时,系统中写操作较多,因此系统使用了同步写一个副本,异步更新两个副本的策略,写延时较低。当读操作数的比例大于40%小于60%时,系统中的读操作数和写操作数相差不大,因此系统使用同步更新两个副本,异步更新一个副本的策略,读带宽提高,写延时也提高。当读操作数的比例大于70%时,系统中读操作较多,因此使用了同步更新三副本的策略,读带宽提到最高,写延时也达到最高。

通过以上测试可以表明,该动态副本策略可以根据最近系统中读写的比例来调整同步和异步更新的副本数,从而很好的平衡读写的代价。这种副本策略改变了目前分布式存储系统使用的单一的强一致性策略,从而能让分布式存储系统适应更加复杂更加多样化的云计算环境。

基于此,本发明实施例中,在确定副本读写策略之前首先规定了这样几个配置参数:副本数replicanum,写副本数目writenum,是否打开动态副本isdynamic,写副本数目的上限writenumup,写副本数目的下限writenumlower,写密集型阈值writeintensive,读密集型阈值readintensive,刷新时间间隔interval。

其中,写副本数目的上限和写副本数目的下限只有在副本策略启用时发挥作用,分布式存储系统在动态修改写副本的数量时,写副本数量只能在用户配置的上限和下限之间。写请求的数量超过阈值,则系统进入写密集型,读请求的数量超过阈值,则系统进入读密集型状态。因此,本发明实施例中分布式存储系统在运行的过程中有四种状态,如图5所示:读密集型,写密集型,读写密集型,读写疏松型。不同的状态中确定的副本读写策略也是不同的,具体如下:

(1)读密集型

此时,当r>readintensive&&w<writeintensive,整个分布式存储系统读请求比较多,客户端对osd存储节点频繁的发起访问,而更新频率较低,读操作是整个存储集群的性能瓶颈,因此可以采用强一致性,读操作可以发往所有的副本osd,在每个副本osd上都能读到最新的数据。而写操作发往主osd节点,由主osd同步给副本osd,所有osd的数据写入后才算更新完成。

(2)写密集型

此时,r<readintensive&&w>writeintensive,写请求数量超过阈值,而读请求数量较少,分布式存储系统处于写密集型状态。由于读频率较低,因此同步更新所有副本没有必要,可以根据写操作数所占的比例来设置同步更新的副本的数量,写操作所占的比例越高,则写操作的代价越高,因此同步更新的副本应该越少,相反则越多。因此根据以上的关系,同步更新副本数与写操作所占的比例是成反比的,即与读操作数所占的比例成正比,因此副本读写策略具体如下:

syncwrite=(n-1)r/(w+r-writeintensive)(1)

其中,syncwrite是主副本需要同步更新的副本数,n是用户设的副本总数,w是该时间段内些操作数,r是该时间段内的读操作数,writeintensive是设置的写密集型的阈值,r/(w+r-writeintensive)就是超过阈值后,读操作数所占的比例。因为w>writeintensive&&r>=0,所以syncwrite大于等于0,小于n-1。当r=0时,即本时间段内全部是写操作,syncwrite等于0,主副本不需要同步更新其他副本,只需要更新主副本即可,其他n-1个副本异步更新。当w等于writeintensive时,syncwrite等于n-1,主副本需要同步更新其他所有副本。

根据以上的副本读写策略,当系统处于写密集型时,写操作数所占的比例越大,同步更新的副本数越少,写操作的延迟更低,表现出更好的写性能。

(3)读写密集型

此时,r>readintensive&&w>writeintensive,ceph系统中读写操作数都超过了阈值,数据即存在大量的更新,又存在大量的访问,因此需要在读写性能之间进行权衡。依然是根据超过阈值后,读写操作各自占的比例进行,读操作所占比例越高,则更偏向于读性能,相反则偏向于写性能。

在分布式存储系统处于读写密集型时,确定副本读写策略具体如下:

syncwrite=(n-1)(r-readintensive)/(w+r-writeintensive-readintensive)(2)

其中,readintensive是设置的读密集型的阈值,其他参数同公式3-1。当读写操作数都超过阈值时,若读超过的越多,即(r-readintensive)越大,则syncwrite越大,反之越小。最终syncwrite的取值依然在0到n-1之间。

根据以上副本读写策略,当系统处于读写密集型时,要对读写操作所超过阈值的多少进行比较,读操作超过阈值多则偏向读性能,同步写更多的副本,若写操作超过阈值多,则偏向于写性能,异步写更多的副本。

(4)读写疏松型

此时,r<readintensive&&w<writeintensive,分布式存储系统中数据的更新和数据的访问频率都很低,更改同步的副本数并不能带来多少性能的提高,每次变换同步更新的副本数都是要消耗一定的代价的,反而可能带来性能的下降,得不偿失。因此,当系统处于读写疏松型时,不需要改变系统中同步更新的副本数,保持系统当前的读写状态即可。

本发明实施例中,所述根据所述分布式存储系统当前的读写状态,确定所述更新副本总数中同步更新的副本数和异步更新的副本数的步骤可以包括:当所述分布式存储系统当前的读写状态为写密集型时,则按照第一策略修改所述更新副本总数中同步更新的副本数为第一数量;当所述分布式存储系统当前的读写状态为读密集型时,则修改所述更新副本总数中同步更新的副本数为所述更新副本总数;当所述分布式存储系统当前的读写状态为读写稀松型时,则保持当前所述更新副本总数中同步更新的副本数;当所述分布式存储系统当前的读写状态为读写密集型时,则按照第二策略确定所述更新副本总数中同步更新的副本数为第二数量;其中,所述第一数量和所述第二数量均为小于所述同步更新的副本数的正整数。

在本申请一些实施例中,所述按照第一策略修改所述更新副本总数中同步更新的副本数为第一数量,包括:获取预设的写密集型阈值(如上所述writeintensive);获取所述预设时间周期内写操作数和读操作数;根据所述写密集型阈值以及所述预设时间周期内写操作数和读操作数,计算所述第一数量。具体的,根据所述写密集型阈值以及所述预设时间周期内写操作数和读操作数,计算所述第一数量,可以采用上述公式(1)计算得到该第一数量。

在本发明一些实施例中,所述按照第二策略确定所述更新副本总数中同步更新的副本数为第二数量,包括:获取预设的写密集型阈值(如上所述writeintensive)和读密集型阈值(如上所述readintensive);获取所述预设时间周期内写操作数和读操作数;根据所述写密集型阈值、读密集型阈值、以及所述预设时间周期内写操作数和读操作数,计算所述第二数量。具体的,根据所述写密集型阈值、读密集型阈值、以及所述预设时间周期内写操作数和读操作数,计算所述第二数量,可以采用上述公式(2)计算得到该第二数量。

本发明实施例中,以ceph系统为例,根据所述读写操作比例,确定所述分布式存储系统中副本读写策略,具体过程如下:

在一个预设时间周期内根据读写操作数判定整个ceph系统所处的读写密状态,根据所述分布式存储系统当前的读写状态,计算出需要同步更新的副本数syncwrite的值(具体可以参照上述步骤(1)~(4))。在更新syncwrite的值时,既需要更新客户端的syncwrite又需要更新osd端的syncwrite。客户端的syncwrite在客户端进行crushmap版本号比对的时候即可完成更新。osd端的syncwrite更新,可以通过monitor端的osdmap,将syncwrite发送给每一个osd,osd完成syncwrite的更新后发送回复消息给monitor端,当收到所有osd端的回复时,则osd端的syncwrite更新完成。

osd端的syncwrite的更新和客户端syncwrite的更新有一个先后顺序,这里分两种情况:第一种是syncwrite增大的情况,此时同步更新副本数增大,要先更新osd端的syncwrite,更新完成后再更新客户端的syncwrite,若先更新客户端的,osd端还未更新,客户端可能访问到异步更新的副本。第二种是syncwrite减少的情况,此时先更新客户端的syncwrite,然后更新osd端的,否则客户端还是可能访问到异步更新的副本。

203、根据所述同步更新的副本数和异步更新的副本数,进行副本读写操作。

在步骤203中确定所述分布式存储系统中副本读写策略之后,即确定分布式存储系统中当前需要同步更新的副本数和异步更新的副本数,同样的,确定当前需要同步更新的副本数和异步更新的副本数即确定了副本读写策略。此时即可基于同步更新的副本数和异步更新的副本数,进行副本读写操作。

本发明实施例中通过统计最近的预设时间周期内分布式存储系统中读写操作比例;根据读写操作比例,确定所述分布式存储系统中副本读写策略,所述副本读写策略包括分布式存储系统中同步更新的副本数和异步更新的副本数;根据同步更新的副本数和异步更新的副本数,进行副本读写操作。本发明实施例中根据预设时间周期内分布式存储系统中读写操作比例确定分布式存储系统中同步更新的副本数和异步更新的副本数,进而进行副本读写操作,具体的,即分布式存储系统运行过程中的读写负载的比例来动态的调整副本实时更新的数量,让分布式存储系统适应更加多样化的使用环境,使分布式存储系统在云计算中更具有普适性,分布式存储系统在副本更新时的一致性、可用性和系统性能之间的达到平衡。

本发明实施例中,当分布式存储系统为ceph系统时,对monitor端改进的同时,还需要对osd进行修改。monitor每次修改副本策略都会对osd发送同步更新的副本数,osd端既要处理monitor发来的消息还要向monitor发送回复消息。在osd端,原ceph系统的写操作只能同步更新,需要为他添加一个异步更新的模块,同步更新副本的流程就是ceph原生的强一致性,但是若是异步更新的副本,则需要将要发送的mosdsubop消息以及异步更新的osd编号加入到异步更新的模块asyncreplica中,该asyncreplica模块的的设计如图6所示。

该asyncreplica模块使用了传统的生产者消费者模型,当primaryosd(第一个osd)发送事务消息给副本时先要进行判断,如果是要同步更新的副本则直接发送给副本同时加入队列in_progress_ops中,等待同步确认。如果是要异步更新,则将需要要异步更新的副本以及要发送的消息mosdsubop封装成sendnode,并且加入异步更新队列中。asyncreplica的消费者线程对该队列进行消费,一旦该消息发送给副本,则生成一个commitnode,加入等待确认队列,等待异步确认。当replicaosd异步更新完成后,会发送回复给primaryosd,primaryosd收到回复后会在asyncreplica的等待确认队列中进行确认并且删除,这样一次异步更新完成。

异步更新模块不仅需要具有异步更新副本的功能,还需要一个能切换同步更新副本数(syncwrite)的功能。当ceph集群的读写状态从一种变化成另一种时,同步更新的副本数syncwrite发生变化,这种副本数的变化,即策略的变化是由monitor统计的,再由它发送消息给所有的osd节点。当primaryosd节点接收到syncwrite变化的消息时,需要修改同步更新的副本数,它会在asyncreplica的发送队列的末尾中加入一个特殊的节点changenode。当消费线程处理到该节点时则表明,策略变化之前的消息已经全部发送,此时将changenode加入确认队列commitlist的末尾,一旦changenode之前的节点全部确认,则表明策略变换完成,可以发送回复消息给monitor该osd节点的策略变换完成。

进一步的,当分布式存储系统为ceph系统时,对monitor端改进的同时,还需要对客户端(client)进行修改。每次客户端(client)读写数据之前会先访问monitor以确认它的crushmap(即osdmap)是最新的,最少会比对一次crushmap的版本号。客户端进行写操作时,会将写操作的副本发送给primaryosd(主osd),由primaryosd进行更新。

如图7所示,为客户端(client)读请求策略的一个示例图,其中,osd1(primary)为主osd,osd2(replica)和osd3(replica)为副本osd,客户端进行读操作时,ceph系统使用的是随机方法random()%n,即客户端会随机读取同步更新的副本osd中的一个,具体的,如图7所示,客户端client通过crush(pool_pgid)=(osd1,osd2,osd3)方式在osd2,osd3中随机选取一个副本osd,例如随机选择osd2,由此可知,monitor端副本策略的变化对客户端写操作没有影响,仅对读操作有影响。

当monitor经过一个预设时间周期的读写统计,同步更新的副本数发生变化时,客户端的读请求不能发往异步更新的副本,因为它可能访问到旧的数据而不是最新的数据,因此只能发往同步更新的副本节点。设计客户端的读操作过程具体如下:客户端要想获得最新的同步写副本数就必须与monitor端进行通信。客户端每次进行读写操作时都会向monitor端发送消息以比对osdmap的版本号,该消息中就附加了读写操作的标记,monitor端收到后会进行读写操作的统计,而返回消息中则附加了最新的同步写副本数syncwrite,客户端收到后可以更新本地的同步写副本数。这样当客户端的读请求发往osd时,使用随机方法random()%syncwrite,将读请求发往同步更新的osd节点,从而排除发送给异步更新的osd节点的可能性,因此总能访问到最新的数据。

下面结合一具体应用场景对本发明实施例中副本读写方法进行描述。

请参阅图8,为本发明实施例中副本读写方法的另一个实施例流程示意图,该副本读写方法应用于服务器,该副本读写方法包括:

801、统计最近的预设时间周期内ceph系统中读写操作比例。

本发明实施例中,以分布式存储系统为ceph系统为例进行说明,在ceph系统中,客户端每次进行读写操作时,都会访问monitor以确认本地的osd存储地址(osdmap)是最新的。此时客户端会向monitor发送一个osdmap版本确认消息,在该确认消息中附加一个读写标记,读写标记表示客户端本次操作是读操作还是写操作,以便monitor对读写操作数进行统计,monitor即可统计预设时间周期内分布式存储系统中读写操作比例。

802、获取ceph系统中更新副本总数。

本实施例中可以根据ceph系统中预先配置的参数副本数replicanum直接获取ceph系统中需要更新的更新副本总数。

803、根据所述读写操作比例,确定ceph系统当前的读写状态。

在步骤801中确定ceph系统在最近的预设时间周期中(如最近1min内)读写操作比例之后,即可ceph系统当前的读写状态,具体可以参照上述实施例中确定ceph系统当前的读写状态的具体过程。

804、根据ceph系统当前的读写状态,确定更新副本总数中同步更新的副本数和异步更新的副本数。

在确定ceph系统当前的读写状态之后,即可根据上述实施例中不同读写状态的确定方式,确定更新副本总数中同步更新的副本数和异步更新的副本数。

805、根据所述同步更新的副本数和异步更新的副本数,进行副本读写操作。

本发明实施例中,ceph系统运行过程中的读写负载的比例来动态的调整副本实时更新的数量,让ceph系统适应更加多样化的使用环境,使ceph系统在云计算中更具有普适性,ceph系统在副本更新时的一致性、可用性和系统性能之间的达到平衡。

为便于更好的实施本发明实施例提供的副本读写方法,本发明实施例还提供一种基于上述副本读写方法的装置。其中名词的含义与上述副本读写方法中相同,具体实现细节可以参考方法实施例中的说明。

请参阅图9,图9为本发明实施例提供的副本读写装置的结构示意图,其中该副本读写装置900可以包括统计单元901、确定单元902和读写单元903,其中:

统计单元901,用于统计最近的预设时间周期内分布式存储系统中读写操作比例;

确定单元902,用于根据所述读写操作比例,确定所述分布式存储系统中副本读写策略,所述副本读写策略中包括同步更新的副本数和异步更新的副本数;

读写单元903,用于根据所述同步更新的副本数和异步更新的副本数,进行副本读写操作。

在本申请一些实施例中,所述确定单元902具体用于:

获取所述分布式存储系统中更新副本总数;

根据所述读写操作比例,确定所述更新副本总数中同步更新的副本数和异步更新的副本数。

在本申请一些实施例中,所述确定单元902具体用于:

根据所述读写操作比例,确定所述分布式存储系统当前的读写状态;

根据所述分布式存储系统当前的读写状态,确定所述更新副本总数中同步更新的副本数和异步更新的副本数。

在本申请一些实施例中,所述确定单元902具体用于:

当所述分布式存储系统当前的读写状态为写密集型时,则按照第一策略修改所述更新副本总数中同步更新的副本数为第一数量;

当所述分布式存储系统当前的读写状态为读密集型时,则修改所述更新副本总数中同步更新的副本数为所述更新副本总数;

当所述分布式存储系统当前的读写状态为读写稀松型时,则保持当前所述更新副本总数中同步更新的副本数;

当所述分布式存储系统当前的读写状态为读写密集型时,则按照第二策略确定所述更新副本总数中同步更新的副本数为第二数量;

其中,所述第一数量和所述第二数量均为小于所述同步更新的副本数的正整数。

在本申请一些实施例中,所述确定单元902具体用于:

获取预设的写密集型阈值;

获取所述预设时间周期内写操作数和读操作数;

根据所述写密集型阈值以及所述预设时间周期内写操作数和读操作数,计算所述第一数量。

在本申请一些实施例中,所述确定单元902具体用于:

获取预设的写密集型阈值和读密集型阈值;

获取所述预设时间周期内写操作数和读操作数;

根据所述写密集型阈值、读密集型阈值、以及所述预设时间周期内写操作数和读操作数,计算所述第二数量。

本发明实施例中通过统计单元901统计最近的预设时间周期内分布式存储系统中读写操作比例;确定单元902根据读写操作比例,确定所述分布式存储系统中副本读写策略,所述副本读写策略包括分布式存储系统中同步更新的副本数和异步更新的副本数;读写单元903根据同步更新的副本数和异步更新的副本数,进行副本读写操作。本发明实施例中根据预设时间周期内分布式存储系统中读写操作比例确定分布式存储系统中同步更新的副本数和异步更新的副本数,进而进行副本读写操作,具体的,即分布式存储系统运行过程中的读写负载的比例来动态的调整副本实时更新的数量,让分布式存储系统适应更加多样化的使用环境,使分布式存储系统在云计算中更具有普适性,分布式存储系统在副本更新时的一致性、可用性和系统性能之间的达到平衡。

本发明实施例还提供一种服务器,如图10所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:

该服务器可以包括一个或者一个以上处理核心的处理器1001、一个或一个以上计算机可读存储介质的存储器1002、电源1003和输入单元1004等部件。本领域技术人员可以理解,图10中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

处理器1001是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器1002内的软件程序和/或模块,以及调用存储在存储器1002内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器1001可包括一个或多个处理核心;优选的,处理器1001可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作存储介质、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1001中。

存储器1002可用于存储软件程序以及模块,处理器1001通过运行存储在存储器1002的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器1002可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作存储介质、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器1002可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1002还可以包括存储器控制器,以提供处理器1001对存储器1002的访问。

服务器还包括给各个部件供电的电源1003,优选的,电源1003可以通过电源管理存储介质与处理器1001逻辑相连,从而通过电源管理存储介质实现管理充电、放电、以及功耗管理等功能。电源1003还可以包括一个或一个以上的直流或交流电源、再充电存储介质、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

该服务器还可包括输入单元1004,该输入单元1004可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。

尽管未示出,服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,服务器中的处理器1001会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器1002中,并由处理器1001来运行存储在存储器1002中的应用程序,从而实现各种功能,如下:

统计最近的预设时间周期内分布式存储系统中读写操作比例;

根据所述读写操作比例,确定所述分布式存储系统中副本读写策略,所述副本读写策略中包括同步更新的副本数和异步更新的副本数;

根据所述同步更新的副本数和异步更新的副本数,进行副本读写操作。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本发明实施例提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行本发明实施例所提供的任一种副本读写方法中的步骤。例如,所述计算机程序被处理器进行加载可以执行如下步骤:

统计最近的预设时间周期内分布式存储系统中读写操作比例;根据所述读写操作比例,确定所述分布式存储系统中副本读写策略,所述副本读写策略中包括同步更新的副本数和异步更新的副本数;根据所述同步更新的副本数和异步更新的副本数,进行副本读写操作。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

其中,该存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。

由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种副本读写方法中的步骤,因此,可以实现本发明实施例所提供的任一种副本读写方法及装置所能实现的有益效果,详见前面的实施例,在此不再赘述。

以上对本发明实施例所提供的一种副本读写方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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