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

一种分布式存储时延优化方法、装置及介质与流程

2022-08-28 01:59:13 来源:中国专利 TAG:


1.本技术涉及分布式系统领域,特别是涉及一种分布式存储时延优化方法、装置及介质。


背景技术:

2.在分布式存储集群中,采用多种冗余策略来保证数据的一致性。客户端与集群进行数据传输的时候,首先需要和集群的主对象存储设备(object store device,osd)建立网络连接。客户端写数据到集群的时候,首先在主osd中进行日志(pg_log)和事务(transaction)的构造,写进本地磁盘中,并向副本(其他osd)发送消息(包含pg_log和transaction),之后主osd会等待所有副本的io都落盘之后,才会通过注册的回调函数来向客户端返回数据写盘成功;读数据时,只有object所在osd集合的主osd提供服务,即只读取主osd的数据。主副本之间的数据传输是通过集群的cluster网络进行的。一般cluster网络采用万兆光纤进行搭建,并通过万兆交换机互联集群中的所有节点。
3.但是,采用回调函数的消息机制进行消息的同步,效率性能较差。并且考虑到集群主副本之间通过万兆网络进行数据传输,当网络环境压力大的时候,可能会产生较大数据传输的时延,对上层应用造成影响,回调机制更增加了该项负担。
4.鉴于上述内容,设计一种分布式存储时延优化方法,提高分布式集群消息同步效率,是该领域技术人员亟待解决的问题。


技术实现要素:

5.本技术的目的是提供一种分布式存储时延优化方法、装置及介质,解决分布式集群消息数据同步过程中采用回调函数的消息机制进行消息的同步效率性能较差的问题。
6.为解决上述技术问题,本技术提供一种分布式存储时延优化方法,应用于分布式集群,包括:
7.接收客户端发送的数据;
8.根据所述数据在主osd中构造日志和事务;其中,所述主osd预先在pg的所有osd中选取,各所述osd中分别包含共享内存;
9.将所述日志和所述事务存放至所述主osd的所述共享内存中,以用于所述pg中的其他所述osd通过rdma从所述主osd的所述共享内存中获取所述日志和所述事务。
10.优选地,在所述pg的所有所述osd中选取所述主osd的过程包括:
11.通过crush算法生成所述pg中包含预设数量的所述osd的集合;
12.获取所述集合中首个所述osd,以作为所述主osd。
13.优选地,所述其他所述osd通过rdma从所述主osd的所述共享内存中获取所述日志和所述事务包括:
14.通过所述rdma接收所述主osd发送的localkey;其中,所述localkey由所述rdma预先生成,表征对所述主osd的所述共享内存的操作权限;
15.根据所述localkey获取所述主osd的所述共享内存中的所述日志和所述事务。
16.优选地,所述localkey的生成过程包括:
17.通过所述rdma将所述共享内存注册到rnic中,并获取返回的所述localkey。
18.优选地,所述分布式集群各数据节点配置支持roce的网卡,并通过支持所述rdma的交换机互联。
19.优选地,在所述其他所述osd通过rdma从所述主osd的所述共享内存中获取所述日志和所述事务之后,还包括:
20.返回所述数据写盘成功的信息至所述客户端。
21.优选地,所述localkey包括所述共享内存的地址范围、长度和请求的地址范围。
22.为解决上述技术问题,本技术还提供一种分布式存储时延优化装置,应用于分布式集群,包括:
23.接收模块,用于接收客户端发送的数据;
24.构造模块,用于根据所述数据在主osd中构造日志和事务;其中,所述主osd预先在pg的所有osd中选取,各所述osd中分别包含共享内存;
25.存放模块,用于将所述日志和所述事务存放至所述主osd的所述共享内存中,以用于所述pg中的其他所述osd通过rdma从所述主osd的所述共享内存中获取所述日志和所述事务。
26.为解决上述技术问题,本技术还提供一种分布式存储时延优化装置,包括:
27.存储器,用于存储计算机程序;
28.处理器,用于执行所述计算机程序时实现上述所述的分布式存储时延优化方法的步骤。
29.为解决上述技术问题,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的分布式存储时延优化方法的步骤。
30.本技术所提供的分布式存储时延优化方法,应用于分布式集群,通过接收客户端发送的数据;根据所述数据在主osd中构造日志和事务;其中,所述主osd预先在pg的所有osd中选取,各所述osd中分别包含共享内存;将所述日志和所述事务存放至所述主osd的所述共享内存中,以用于所述pg中的其他所述osd通过rdma从所述主osd的所述共享内存中获取所述日志和所述事务。由此可知,上述方案通过实现了分布式集群中pg的osd集合之间的共享内存,并利用rdma替换传统的tcp/ip模式进行集群主副本之间的数据的同步逻辑,有效的优化了数据同步的网络时延,释放了中央处理器算力,提高整个集群的数据处理能力。
31.此外,本技术还提供了一种分布式存储时延优化装置及计算机可读存储介质,效果同上。
附图说明
32.为了更清楚地说明本技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
33.图1为本技术实施例提供的一种分布式存储时延优化方法的流程图;
34.图2为本技术实施例提供的另一种分布式存储时延优化方法的流程图;
35.图3为本技术实施例提供的一种分布式存储时延优化装置的结构示意图;
36.图4为本技术实施例提供的另一种分布式存储时延优化装置的结构示意图。
具体实施方式
37.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本技术保护范围。
38.本技术的核心是提供一种分布式存储时延优化方法、装置及介质。
39.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。
40.目前,客户端与分布式集群进行数据传输的时候,首先需要和集群的osd建立网络连接。客户端写数据到集群的时候,首先在主osd中进行日志pg_log和transaction的构造,写进本地磁盘中,并向副本发送消息(包含pg_log和transaction),之后主osd会等待所有副本的io都落盘之后,才会通过注册的回调函数来向客户端返回数据写盘成功;读数据时,只有object所在osd集合的主osd提供服务,即只读取主osd的数据。主副本之间的数据传输是通过集群的cluster网络进行的。一般cluster网络采用万兆光纤进行搭建,并通过万兆交换机互联集群中的所有节点。但是,采用回调函数的消息机制进行消息的同步,效率性能较差。并且考虑到集群主副本之间通过万兆网络进行数据传输,当网络环境压力大的时候,可能会产生较大数据传输的时延,对上层应用造成影响,回调机制更增加了该项负担。因此本技术提供了一种分布式存储时延优化方法。图1为本技术实施例提供的一种分布式存储时延优化方法的流程图。方法应用于分布式集群,如图1所示,方法包括:
41.s10:接收客户端发送的数据。
42.s11:根据数据在主osd中构造日志和事务;其中,主osd预先在pg的所有osd中选取,各osd中分别包含共享内存。
43.s12:将日志和事务存放至主osd的共享内存中,以用于pg中的其他osd通过rdma从主osd的共享内存中获取日志和事务。
44.在分布式集群中有着成千上万的objects,而直接以objects为粒度进行数据管理的代价过于昂贵且不灵活。pg(placement group)是一些objects的集合,这些objects组成一个group,放在某些osd上,组合起来就是placement group。将objects以pg为单位进行管理,有以下好处:集群中的pg数目经过规划因为严格可控,使得基于pg可以精准控制单个osd乃至整个节点的资源消耗,如中央处理器(central processing unit,cpu)、内存、网络带宽等;因为集群中的pg数目远小于objects数目,并且pg数目和每个pg的身份相对固定,以pg为单位进行数据备份策略和数据同步、迁移等,相较于直接以对象为单位而言,难度更小且更加灵活。因此在本实施例中,分布式集群在接收到客户端发送的数据后,在pg下的主osd中构造日志和事务。
45.具体地,日志和事务即pg_log和transaction,集群接收到客户端的数据之后,通过primarylogpg::execute_ctx-》prepare_transaction()构造pg_log及transaction。需
要注意的是,pg_log和transaction是在pg下的主osd中构造,而主osd是预先在pg的所有osd中选取的osd,本实施例对于主osd的选取方式不做限制,根据具体的实施情况而定。在本技术中,主副本的数据同步,即为pg中主osd与该pg中其他osd的数据同步。
46.进一步地,在pg中各osd中分别包含共享内存,即pg中的主osd和其他的osd均存在各自的共享内存,用于进行数据同步。具体地,主osd将pg_log和transaction存放至自身的共享内存中,以用于pg中的其他osd从主osd的共享内存中获取pg_log和transaction。主osd在接收到其他osd的数据获取请求,调用primarylogpg::issue_repop-》submit_transaction()向其他osd分发数据。本实施例中对于其他osd获取主osd中共享内存的数据的具体过程不做限制,根据具体的实施情况而定。
47.需要注意的是,本实施例中pg中的其他osd是通过rdma从主osd的共享内存中获取pg_log和transaction。远程直接数据存取(remote direct memory access,rdma)就是为了解决网络传输中服务器端数据处理的延迟而产生的。rdma通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和cpu周期用于改进应用系统性能。rdma技术相较于传统的网络架构的优势是,通过零拷贝和内核旁路技术可以快速的访问远程主机的内存。其中,零拷贝(zero-copy)是指应用程序可以在不涉及网络协议栈的情况下进行数据传输;内核旁路(kernel bypass)是指应用程序可以直接在用户态执行数据传输,不需要进行在内核态和用户态之间做上下文切换。因此数据传输期间不会频繁的进行内核态和用户态的上下文切换,也不需要cpu的参与。
48.本实施例中,分布式存储时延优化方法应用于分布式集群,通过接收客户端发送的数据;根据所述数据在主osd中构造日志和事务;其中,所述主osd预先在pg的所有osd中选取,各所述osd中分别包含共享内存;将所述日志和所述事务存放至所述主osd的所述共享内存中,以用于所述pg中的其他所述osd通过rdma从所述主osd的所述共享内存中获取所述日志和所述事务。由此可知,上述方案通过实现了分布式集群中pg的osd集合之间的共享内存,并利用rdma替换传统的tcp/ip模式进行集群主副本之间的数据的同步逻辑,有效的优化了数据同步的网络时延,释放了中央处理器算力,提高整个集群的数据处理能力。
49.在上述实施例的基础上:
50.作为一种优选的实施例,在pg的所有osd中选取主osd的过程包括:
51.通过crush算法生成pg中包含预设数量的osd的集合;
52.获取集合中首个osd,以作为主osd。
53.在上述实施例中,对于主osd的选取方式不做限制,根据具体的实施情况而定。作为一种优选的实施例,本实施例中通过crush算法生成pg中包含预设数量的osd的集合;获取集合中首个osd,以作为主osd。
54.crush是受控复制的分布式哈希算法,是分布式集群里面用于控制数据分布的一种方法,能够高效稳定的将数据分布在普通的结构化的集群中。它是一种伪随机的算法,在相同的环境下,相似的输入得到的结果之间没有相关性,相同的输入得到的结果是确定的。它只需要一个集群的描述地图和一些规则就可以根据一个整型的输入得到存放数据的一个设备列表。客户端在有输入输出操作的时候可能会执行crush算法。
55.分布式集群的后端是一个对象存储(rados),所以所有的数据都会按照一个特定的size被切分成若干个对象,即objects。每一个object都有一个objectid(oid),objectid的命名规则是数据所在image的block_name_prefix再跟上一个编号,这个编号是顺序递增的。通过(poolid,hash(oid)&mask),每个object都可以得到它对应的pgid。根据pgid,客户端就会执行crush算法得到一个osd集合(osd1,osd2,osd3)。然后对它们进行筛选,根据副本数找出符合要求的osd,比如osd不能是failed、overloaded的osd。在知道数据要存在哪些osd上之后,client会向列表中的第一个osd(primary osd)发起io请求,这个osd即为主osd,然后按照读写请求分别做相应的处理。
56.本实施例中,通过crush算法生成pg中包含预设数量的osd的集合,获取集合中首个osd,以作为主osd,主osd与客户端发送的数据建立连接,以便于主副本的数据同步。
57.在上述实施例的基础上:
58.作为一种优选的实施例,其他osd通过rdma从主osd的共享内存中获取日志和事务包括:
59.通过rdma接收主osd发送的localkey;其中,localkey由rdma预先生成,表征对主osd的共享内存的操作权限;
60.根据localkey获取主osd的共享内存中的日志和事务。
61.在上述实施例中,对于其他osd获取主osd中共享内存的数据的具体过程不做限制,根据具体的实施情况而定。作为一种优选的实施例,本实施例中,具体过程为:通过rdma接收主osd发送的localkey,根据localkey获取主osd的共享内存中的日志和事务。
62.当主osd构造完pg_log和transaction数据之后,通过rdma向其他副本,即其他osd发送localkey。localkey是rdma操作该共享内存的权限,因此只有当其他osd具有主osd的localkey时,才能够访问主osd的共享内存。由于只发送localkey信息,因此具有数据量小,传输效率高的优点。而当其他副本接收到主osd的共享内存的localkey之后,副本会主动从主osd的共享内存中拉取数据到本地,完成数据的同步。本实施例中对于localkey的生成过程不做限制,根据具体的实施情况而定。
63.本实施例中,通过rdma接收主osd发送的localkey;其中,localkey由rdma预先生成,表征对主osd的共享内存的操作权限;根据localkey获取主osd的共享内存中的日志和事务,实现了主副本的数据同步。
64.在上述实施例的基础上:
65.作为一种优选的实施例,localkey的生成过程包括:
66.通过rdma将共享内存注册到rnic中,并获取返回的localkey。
67.在上述实施例中对于localkey的生成过程不做限制,根据具体的实施情况而定。作为一种优选的实施例,在具体实施中,通过rdma的struct ibv_mr*ibv_reg_mr()接口将创建的主osd的共享内存注册到rdma的rnic中,并获取返回的用于rdma操作的localkey。其中rnic为rdma专有的网卡。
68.本实施例中,通过rdma将共享内存注册到rnic中,并获取返回的localkey,实现了localkey的生成,以便于其他osd通过localkey访问主osd的共享内存。
69.在上述实施例的基础上:
70.作为一种优选的实施例,分布式集群各数据节点配置支持roce的网卡,并通过支
持rdma的交换机互联。
71.通过上述实施例可知,由于分布式存储时延优化应用于支持rdma的分布式集群中,因此分布式集群各数据节点需要配置支持roce的网卡,并通过支持rdma的交换机互联。
72.roce(rdma over converged ethernet)是基于以太网的rdma技术,支持相应的verbs接口。roce是在infiniband trade association(ibta)标准中定义的网络协议,允许通过以太网络使用rdma。简而言之,它可以看作是rdma技术在超融合数据中心、云、存储和虚拟化环境中的应用。为了实现roce,需要安装支持roce的网卡或卡驱动程序,并支持roce的网卡的通过支持rdma的交换机互联。
73.roce的优点包括:低cpu占用率,访问远程交换机或服务器的内存,无需消耗远程服务器上的cpu周期,从而可以充分利用可用带宽和更高的可伸缩性;零复制,向远程缓冲区发送数据和接收数据;高效,由于roce改善了延迟和吞吐量,网络性能得到了很大提高;节省成本,借助roce,无需购买新设备或更换以太网基础设施即可处理大量数据,从而大大节省了公司的资本支出。
74.本实施例中,分布式集群各数据节点配置支持roce的网卡,并通过支持rdma的交换机互联,实现了rdma的构建。
75.图2为本技术实施例提供的另一种分布式存储时延优化方法的流程图。如图2所示,在其他osd通过rdma从主osd的共享内存中获取日志和事务之后,还包括:
76.s13:返回数据写盘成功的信息至客户端。
77.作为一种优选的实施例,在其他osd通过rdma从主osd的共享内存中获取日志和事务之后,即主副本进行数据同步之后,说明日志(journal)已成功落盘,返回数据写盘成功的信息至客户端,以提示客户端进行下一阶段的操作。
78.在上述实施例的基础上:
79.作为一种优选的实施例,localkey包括共享内存的地址范围、长度和请求的地址范围。
80.可以理解的是,localkey作为osd的共享内存的操作权限,需要包含该osd的详细信息,具体为共享内存的地址范围、长度和请求的地址范围。从而能够使其他osd根据localkey查找到主osd的共享内存,并获取其中的数据。
81.在上述实施例中,对于分布式存储时延优化方法进行了详细描述,本技术还提供分布式存储时延优化装置对应的实施例。需要说明的是,本技术从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件结构的角度。
82.图3为本技术实施例提供的一种分布式存储时延优化装置的结构示意图。如图3所示,装置应用于分布式集群,包括:
83.接收模块10,用于接收客户端发送的数据;
84.构造模块11,用于根据数据在主osd中构造日志和事务;其中,主osd预先在pg的所有osd中选取,各osd中分别包含共享内存;
85.存放模块12,用于将日志和事务存放至主osd的共享内存中,以用于pg中的其他osd通过rdma从主osd的共享内存中获取日志和事务。
86.本实施例所提供的分布式存储时延优化装置,应用于分布式集群,包括接收模块、构造模块和存放模块。通过接收客户端发送的数据;根据所述数据在主osd中构造日志和事
务;其中,所述主osd预先在pg的所有osd中选取,各所述osd中分别包含共享内存;将所述日志和所述事务存放至所述主osd的所述共享内存中,以用于所述pg中的其他所述osd通过rdma从所述主osd的所述共享内存中获取所述日志和所述事务。由此可知,上述方案通过实现了分布式集群中pg的osd集合之间的共享内存,并利用rdma替换传统的tcp/ip模式进行集群主副本之间的数据的同步逻辑,有效的优化了数据同步的网络时延,释放了中央处理器算力,提高整个集群的数据处理能力。
87.图4为本技术实施例提供的另一种分布式存储时延优化装置的结构示意图,如图4所示,分布式存储时延优化装置包括:
88.存储器20,用于存储计算机程序;
89.处理器21,用于执行计算机程序时实现如上述实施例中所提到的分布式存储时延优化的方法的步骤。
90.本实施例提供的分布式存储时延优化装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
91.其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(digital signal processor,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(central processing unit,cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有图形处理器(graphics processing unit,gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(artificial intelligence,ai)处理器,该ai处理器用于处理有关机器学习的计算操作。
92.存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的分布式存储时延优化方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括windows、unix、linux等。数据203可以包括但不限于分布式存储时延优化方法涉及到的数据。
93.在一些实施例中,分布式存储时延优化装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
94.本领域技术人员可以理解,图4中示出的结构并不构成对分布式存储时延优化装置的限定,可以包括比图示更多或更少的组件。
95.本实施例所提供的分布式存储时延优化装置包括存储器和处理器。处理器用于执行计算机程序时实现如上述实施例中所提到的分布式存储时延优化的方法的步骤。通过接收客户端发送的数据;根据所述数据在主osd中构造日志和事务;其中,所述主osd预先在pg的所有osd中选取,各所述osd中分别包含共享内存;将所述日志和所述事务存放至所述主osd的所述共享内存中,以用于所述pg中的其他所述osd通过rdma从所述主osd的所述共享
内存中获取所述日志和所述事务。由此可知,上述方案通过实现了分布式集群中pg的osd集合之间的共享内存,并利用rdma替换传统的tcp/ip模式进行集群主副本之间的数据的同步逻辑,有效的优化了数据同步的网络时延,释放了中央处理器算力,提高整个集群的数据处理能力。
96.最后,本技术还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
97.可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(randomaccess memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
98.本实施例所提供计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。通过接收客户端发送的数据;根据所述数据在主osd中构造日志和事务;其中,所述主osd预先在pg的所有osd中选取,各所述osd中分别包含共享内存;将所述日志和所述事务存放至所述主osd的所述共享内存中,以用于所述pg中的其他所述osd通过rdma从所述主osd的所述共享内存中获取所述日志和所述事务。由此可知,上述方案通过实现了分布式集群中pg的osd集合之间的共享内存,并利用rdma替换传统的tcp/ip模式进行集群主副本之间的数据的同步逻辑,有效的优化了数据同步的网络时延,释放了中央处理器算力,提高整个集群的数据处理能力。
99.以上对本技术所提供的一种分布式存储时延优化方法、装置及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
100.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再多了解一些

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

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

相关文献