日志写入方法及其装置、电子设备及存储介质制造方法及图纸

技术编号:33407364 阅读:50 留言:0更新日期:2022-05-11 23:31
本发明专利技术公开了一种日志写入方法及其装置、电子设备及存储介质。其中,该写入方法包括:接收客户端的写日志请求,基于写日志请求,控制每个存储节点中的主放置群组在预先分配的内存中写入日志标识指示的日志,并将日志添加到发送队列中,采用远程访问网络访问数据存储器,轮询发送队列,将发送队列中的日志写入到从放置群组的内存中,在主放置群组接收到所有从放置群组返回的写入成功信息的情况下,确定日志写入成功。本发明专利技术解决了相关技术中无法在具有多个放置群组的情况下进行日志写入,容易导致日志不一致的技术问题。导致日志不一致的技术问题。导致日志不一致的技术问题。

【技术实现步骤摘要】
日志写入方法及其装置、电子设备及存储介质


[0001]本专利技术涉及数据处理
,具体而言,涉及一种日志写入方法及其装置、电子设备及存储介质。

技术介绍

[0002]当前,分布式存储系统在存储数据时,将客户端的数据分为固定大小的块或对象来存储,以提高系统的容错能力和整体性。相关技术中,一般是通过哈希算法,将数据块(或对象)散列到不同的放置群组PG(Placement Group)上,存储系统对这些PG创建副本之后,利用一定的算法以及设置故障域,将副本分散到不同的节点上或者不同的磁盘上,当一个节点的磁盘损坏时,可以通过其他节点的副本恢复数据,不会造成数据丢失。
[0003]分布式存储系统使用一致性协议来保证PG之间数据的一致性,以此来确保一个系统的高可用。例如,在三副本的情况下,每个节点上的PG副本使用一个Raft实例来管理:一个Leader、两个Follower。图1是现有技术中的一种可选的Raft日志写入方法的示意图,如图1所示,现有的方案是Leader储存节点接收到写请求后,通过套接字socket将Raft日志发送到Follower存储节点,具体为:Leader储存节点通过RPC(远程过程调用)模块将Raft日志发送至用户空间,然后通过Leader储存节点中的内核空间、网卡,再通过网络将Raft日志发送至Follower存储节点中的网卡,然后通过内核空间、用户空间、RPC模块,之后将Raft日志保存至本地存储中(本地存储可以为SSD(固态硬盘)、HDD(电脑存储器)等),在本地存储处理完成之后,将处理结果通过Follower存储节点中的RPC模块、用户空间、内核空间、网卡,再通过网络将处理结果发送至Leader储存节点中的网卡,经过内核空间、用户空间,最终RPC模块收到处理结果。
[0004]然而,上述方案存在如下问题:(1)Raft日志需要在网卡、内核空间、用户空间来回拷贝,而且需要通信双方的CPU参与,造成存储节点的性能损耗;(2)Follower存储节点将日志写入到硬盘时,Leader存储节点需要等待Follower的回复,直到收到大多数Follower写成功的返回消息后,才能给客户端返回结果,因此硬盘IO的时间是影响写数据时延的一个重要因素。
[0005]相关技术中,针对TCP/IP网络传输数据慢的问题,解决方式是使用远程直接内存访问RDMA(Remote direct memory access)代替TCP/IP网络,RDMA允许一台主机通过网络直接操作另一台主机的内存空间,以解决数据拷贝和接收端CPU占用的问题。RDMA提供了两种操作方式:send/receive和write/read,其中,send/receive是双边操作,通信双方的CPU都需要参与,write/read则是单边操作,发送端将数据写入到接收端注册的内存中,接收端不需要感知此过程。现有的方案是基于send/receive语义将Raft日志发送到对端节点的内存中,可以实现数据零拷贝,然而,通信时接收端需要通过receive原语来接收数据,CPU需要参与数据传输过程。
[0006]相关技术中,为了实现绕过接收端的CPU,实现直接访问内存,使用RDMA网络和NVM(非易失性存储器)来操作日志数据。图2是现有技术中的另一种可选的Raft日志写入方法
的示意图,如图2所示,Leader存储节点将Raft日志直接写到Follower存储节点中的PM(Persistent Memory)内存中,具体为:Leader储存节点通过RPC模块将Raft日志发送至RDMA网卡中,然后通过网络将Raft日志发送至Follower存储节点中的RDMA网卡,然后通过RPC模块将Raft日志保存至PM中,在PM处理完成之后,将处理结果通过Follower存储节点中的RPC模块、RDMA网卡,再通过网络将处理结果发送至Leader储存节点中的RDMA网卡,最终RPC模块收到处理结果。
[0007]然而,上述方案仅仅可以解决CPU和内存消耗以及磁盘IO带来的时延问题。但是对RDMA和PM技术在实际的分布式存储中应用没有提出比较完善的解决办法,主要有以下几个问题:(1)只针对一个PG进行操作,一个分布式存储集群有许多的PG,并将PG均匀的分布到不同的存储节点上。根据Raft一致性协议,每个PG都会有自己的角色:Leader、Follower、Candidate。一台节点上的多个PG如何合理的使用RDMA硬件发送数据、如何利用PM内存等问题需要解决;(2)在分布式存储的运行期间,PG副本的角色会经常发生变化,比如,PG三副本中有一个节点故障,需要重新选举Leader,在Leader选举时,每个PG副本需要保证自己的日志数据处于最新的状态,否则会造成选举错误,如何在RDMA和PM环境下对PG进行Leader选举也没有提出解决方案。
[0008]针对上述的问题,目前尚未提出有效的解决方案。

技术实现思路

[0009]本专利技术实施例提供了一种日志写入方法及其装置、电子设备及存储介质,以至少解决相关技术中无法在具有多个放置群组的情况下进行日志写入,容易导致日志不一致的技术问题。
[0010]根据本专利技术实施例的一个方面,提供了一种日志写入方法,包括:接收客户端的写日志请求,其中,所述写日志请求携带有日志标识;基于所述写日志请求,控制每个存储节点中的主放置群组在预先分配的内存中写入所述日志标识指示的日志,并将所述日志添加到发送队列中,其中,每个所述存储节点中设置有多个放置群组,所述多个放置群组包括:所述主放置群组以及至少一个从放置群组,每个所述放置群组绑定一个一致性协议,所述发送队列设置在数据存储器中;采用远程访问网络访问所述数据存储器,轮询所述发送队列,将所述发送队列中的日志写入到所述从放置群组的内存中,其中,在所述日志写入成功的情况下,所述从放置群组通过所述一致性协议返回写入成功信息至所述主放置群组;在所述主放置群组接收到所有所述从放置群组返回的所述写入成功信息的情况下,确定所述日志写入成功。
[0011]可选地,在接收客户端的写日志请求之前,还包括:统计所述存储节点的节点数量;基于所述存储节点的节点数量,划分每个所述存储节点中的内存空间,得到多个内存子空间,其中,每个所述内存空间中至少包括:元数据空间。
[0012]可选地,在划分每个所述存储节点中的内存空间,得到多个内存子空间之后,还包括:基于预设连接数,将所述内存子空间划分成多个存储块,其中,所述预设连接数为每两个所述存储节点之间的线程连接数量。
[0013]可选地,在将所述日志添加到发送队列中之后,还包括:按照所述日志添加到发送队列中的顺序,为所述日志设置日志索引;分析所述从放置群组的节点状态;在所述节点状
态为探测状态的情况下,控制所述主放置群组探测所述从放置群组中每个日志的日志索引;在探测出所述从放置群组中的日志索引与所述主放置群组中的日志索引不一致的情况下,采用预设远程调用算法,将不一致的所述日志索引所指示的日志发送到所述从放置群组中。<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种日志写入方法,其特征在于,包括:接收客户端的写日志请求,其中,所述写日志请求携带有日志标识;基于所述写日志请求,控制每个存储节点中的主放置群组在预先分配的内存中写入所述日志标识指示的日志,并将所述日志添加到发送队列中,其中,每个所述存储节点中设置有多个放置群组,所述多个放置群组包括:所述主放置群组以及至少一个从放置群组,每个所述放置群组绑定一个一致性协议,所述发送队列设置在数据存储器中;采用远程访问网络访问所述数据存储器,轮询所述发送队列,将所述发送队列中的日志写入到所述从放置群组的内存中,其中,在所述日志写入成功的情况下,所述从放置群组通过所述一致性协议返回写入成功信息至所述主放置群组;在所述主放置群组接收到所有所述从放置群组返回的所述写入成功信息的情况下,确定所述日志写入成功。2.根据权利要求1所述的日志写入方法,其特征在于,在接收客户端的写日志请求之前,还包括:统计所述存储节点的节点数量;基于所述存储节点的节点数量,划分每个所述存储节点中的内存空间,得到多个内存子空间,其中,每个所述内存空间中至少包括:元数据空间。3.根据权利要求2所述的日志写入方法,其特征在于,在划分每个所述存储节点中的内存空间,得到多个内存子空间之后,还包括:基于预设连接数,将所述内存子空间划分成多个存储块,其中,所述预设连接数为每两个所述存储节点之间的线程连接数量。4.根据权利要求1所述的日志写入方法,其特征在于,在将所述日志添加到发送队列中之后,还包括:按照所述日志添加到发送队列中的顺序,为所述日志设置日志索引;分析所述从放置群组的节点状态;在所述节点状态为探测状态的情况下,控制所述主放置群组探测所述从放置群组中每个日志的日志索引;在探测出所述从放置群组中的日志索引与所述主放置群组中的日志索引不一致的情况下,采用预设远程调用算法,将不一致的所述日志索引所指示的日志发送到所述从放置群组中。5.根据权利要求1所述的日志写入方法,其特征在于,采用远程访问网络访问所述数据存储器,轮询所述发送队列,将所述发送队列中的日志写入到所述从放置群组的内存中的步骤,包括:采用远程访问网络访问所述数据存储器,轮询所述发送队列,并在轮询成功的情况下,将轮询到的所述日志的页面的写入状态更新为完成状态;遍历发送窗口,在所述发送窗口中每个子窗口中的当前页面的写入状态都为完成状态的情况下,分析当前页面的页面索引是否为最后一个索引;在所述当前页面的页面索引为最后一个索引的情况下,更新写入的内存子空间中的存储块的队列尾,并更新发送窗口的队列头。6.根据权利要求5所述的日志写入方法,其特征在于,在采用远程访问网络访问所述数
据存...

【专利技术属性】
技术研发人员:汪峰陶松霖吴红伟黄岩
申请(专利权)人:云和恩墨北京信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1