本发明涉及分布式存储系统领域,特别是涉及一种分布式存储系统数据处理方法、程序产品、装置及介质。
背景技术:
1、目前,在分布式存储系统的实际应用中,为了保证数据的可靠性,往往会采用冗余策略,常用的冗余技术有纠删码(erasurecode)和副本两种。冗余策略的使用会导致客户在写入一次数据时,后端存储系统往往需要转发和写入多次,以保证数据的冗余存储。而存储系统中的数据转发和写入依赖于网卡实现,所以冗余策略毫无疑问地会成倍增加网卡的负担。这种负担在以往多以机械硬盘(hard disk drive,hdd)作为底层存储设备的系统中并不明显,带宽较低的底层存储设备仍然是存储系统的性能瓶颈。
2、但随着存储技术的不断发展,固态存储设备成本不断降低,越来越多的存储厂商开始使用固态硬盘作为底层存储设备。尤其是非易失性内存主机控制器接口规范(nvmexpress,nvme)等协议的使用,更是极大的提升了底层设备的带宽和每秒操作数(ops),并降低了时延消耗。当前普通的固态硬盘带宽可以达到几百mb/s,而使用nvme和高速串行计算机扩展总线标准(pci-express,pci-e)4.0接口的设备可以达到8gb/s。由此可见,存储系统的性能瓶颈逐渐从底层硬盘转移到了网络层。
3、所以,现在本领域的技术人员亟需要一种分布式存储系统数据处理方法,以解决目前分布式存储系统中由网卡性能上限带来的系统性能瓶颈问题。
技术实现思路
1、本发明的目的是提供一种分布式存储系统数据处理方法、程序产品、装置及介质,用于解决目前分布式存储系统中由网卡性能上限带来的系统性能瓶颈问题。
2、为解决上述技术问题,本发明提供一种分布式存储系统数据处理方法,应用于分布式存储系统中的客户端侧;其中,所述客户端预先部署有纠删码计算模块,所述纠删码计算模块为集成有纠删码算法以及所述纠删码算法所使用接口的模块;所述客户端在初始化时预先加载有纠删码算法所需使用的库文件;所述客户端还订阅有存储池中的数据分布映射更新;
3、方法包括:
4、接收并解析客户节点发送的数据传输请求,以得到数据传输任务;
5、调用所述纠删码计算模块对所述数据传输任务进行处理,以得到多个传输子任务;
6、基于订阅的数据分布映射更新,获取各存储节点对应的存储服务信息;
7、根据各所述存储节点对应的存储服务信息对所述数据传输任务进行分布式计算,以得到对应于不同所述存储节点的传输子任务;
8、将各所述传输子任务发送至对应的所述存储节点中,以便于所述存储节点完成对应的所述传输子任务;
9、在各所述存储节点完成对应的所述传输子任务后,向所述客户节点返回数据传输成功信息。
10、在一种可能的实施例中,所述数据传输请求为数据写入请求;
11、则所述数据传输任务为:将待写入数据写入至存储集群中;
12、所述传输子任务为:将数据块或校验块写入对应的所述存储节点中;其中,所述数据块和所述校验块为所述纠删码计算模块根据所述待写入数据处理得到。
13、在一种可能的实施例中,调用所述纠删码计算模块对所述数据传输任务进行处理,以得到多个传输子任务包括:
14、将所述待写入数据分成多个大小相同的所述数据块;
15、调用所述纠删码计算模块对所述数据块进行纠删码计算,生成所述校验块;
16、根据各所述存储节点对应的存储服务信息对所述数据传输任务进行分布式计算,以得到对应于不同所述存储节点的传输子任务包括:
17、根据各所述存储节点对应的存储服务信息并通过分布式算法,确定各所述数据块和所述校验块所对应的所述存储节点;
18、将各所述传输子任务发送至对应的所述存储节点中包括:
19、根据各所述存储节点对应的存储服务信息,将各所述数据块和所述校验块的写入请求发送至对应所述存储节点的存储服务中。
20、在一种可能的实施例中,所述存储节点包括:主节点和从节点;
21、则在各所述存储节点完成对应的所述传输子任务后,向所述客户节点返回数据传输成功信息包括:
22、当接收到所述存储节点中的主节点返回的写入成功信息后,向所述客户节点返回数据写入成功信息;
23、其中,所述主节点在接收到各所述从节点返回的写入成功信息之后,向所述客户端返回写入成功信息;
24、各所述从节点在完成对应的所述数据块或所述校验块的写入后,向所述主节点返回写入成功信息。
25、在一种可能的实施例中,还包括:
26、当有所述存储节点写入对应的所述数据块或所述校验块失败时,获取各所述存储节点的版本日志;
27、从各所述存储节点的版本日志中,选取一个版本日志作为权威日志;
28、比较各所述存储节点的版本日志与所述权威日志的差异,确定对应于各所述存储节点的数据回滚任务;
29、将所述数据回滚任务发送至对应的各所述存储节点中,以使各所述存储节点将数据回滚至所述权威日志对应的版本。
30、在一种可能的实施例中,从各所述存储节点的版本日志中,选取一个版本日志作为权威日志包括:
31、解析各所述存储节点的版本日志以获取版本号;
32、比较获取到的各所述版本号,选取相同版本号数量最多的版本日志作为所述权威日志。
33、在一种可能的实施例中,所述数据传输请求为数据读取请求;
34、则所述数据传输任务为:从存储集群中读取目标数据;
35、所述传输子任务为:从所述存储节点中读取对应的数据块或校验块;其中,所述数据块和所述校验块为所述纠删码计算模块根据所述目标数据处理得到。
36、在一种可能的实施例中,调用所述纠删码计算模块对所述数据传输任务进行处理,以得到多个传输子任务包括:
37、调用所述纠删码计算模块对所述目标数据进行纠删码计算,确定对应的所述数据块和所述校验块;
38、根据各所述存储节点对应的存储服务信息对所述数据传输任务进行分布式计算,以得到对应于不同所述存储节点的传输子任务包括:
39、根据各所述存储节点对应的存储服务信息并通过分布式算法,确定各所述数据块和各所述校验块所对应的所述存储节点;
40、将各所述传输子任务发送至对应的所述存储节点中包括:
41、根据各所述存储节点对应的存储服务信息,将各所述数据块和各所述校验块的读取请求发送至对应所述存储节点的存储服务中。
42、在一种可能的实施例中,在各所述存储节点完成对应的所述传输子任务后,向所述客户节点返回数据传输成功信息包括:
43、对各所述数据块和所述校验块进行解码并做校验,以获取所述目标数据;
44、将包括所述目标数据在内的数据读取成功信息,发送至所述客户节点。
45、在一种可能的实施例中,在根据各所述存储节点对应的存储服务信息,将各所述数据块和各所述校验块的读取请求发送至对应所述存储节点的存储服务中之前,还包括:
46、申请与所述目标数据的长度对应的内存空间;
47、则在根据各所述存储节点对应的存储服务信息,将各所述数据块和各所述校验块的读取请求发送至对应所述存储节点的存储服务中之后,还包括:
48、每当接收到所述存储节点返回的所述数据块或所述校验块,则将所述数据块或所述校验块存储于所述内存空间中,并维护相应的元数据。
49、在一种可能的实施例中,还包括:
50、若存在所述存储节点超过预设时长未响应对应的读取请求,或存在所述存储节点返回读取错误信息,则清理所述内存空间和元数据,并重新返回至根据各所述存储节点对应的存储服务信息,将各所述数据块和各所述校验块的读取请求发送至对应所述存储节点的存储服务中的步骤。
51、在一种可能的实施例中,将各所述传输子任务发送至对应的所述存储节点中,以便于所述存储节点完成对应的所述传输子任务包括:
52、基于传输控制协议将各所述传输子任务发送至对应的所述存储节点中,以便于所述存储节点在接收到对应的所述传输子任务时,独立将所述传输子任务所对应的业务添加至存储服务内部的业务队列中。
53、为解决上述技术问题,本发明还提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现如上所述的分布式存储系统数据处理方法的步骤。
54、为解决上述技术问题,本发明还提供一种分布式存储系统数据处理装置,包括:
55、存储器,用于存储计算机程序;
56、处理器,用于执行所述计算机程序时实现如上所述的分布式存储系统数据处理方法的步骤。
57、为解决上述技术问题,本发明还提供一种非易失性存储介质,所述非易失性存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的分布式存储系统数据处理方法的步骤。
58、本发明提供的一种分布式存储系统数据处理方法,通过在位于分布式存储系统协议层的客户端中,预先部署集成有纠删码算法以及纠删码算法实现所需要使用接口的纠删码计算模块,并在客户端的初始化过程中加载纠删码算法所需要使用的库文件,使客户端得以支持纠删码计算功能。此外,还在客户端中订阅数据分布映射(map)更新,使得每次存储集群中出现数据分布变化时,不再仅通知存储服务,也会同步通知到客户端,客户端可以同步掌握详细数据分布对应的存储服务,以使客户端可以直接实现数据分布计算。
59、基于上述设置,本方法中将原本于存储集群中的主节点实现的纠删码计算和分布式计算上拉到分布式存储系统中的客户端中进行。进而当客户端接收到客户节点发送的数据传输任务时,可以在本地直接进行纠删码计算以及数据分布计算;当客户节点需要写入数据时,直接将纠删码计算后的k+m-1块数据发送至对应的k+m-1个存储节点中进行存储,不再经由主节点转发;当客户节点需要读取数据时,亦是同理,客户端基于所支持的纠删码计算以及分布式计算功能直接从对应的存储节点中读取相应的数据块,再返回至客户节点,不需要主节点转发。也即,基于本方法实现的数据处理过程,客户端的数据读写请求不再通过主节点转发给各子节点,而是由客户端直接与子节点进行交互。如此,避免了主节点网卡转发的消耗,进而减轻了对网卡的负担,也即减轻了由网卡带来的性能瓶颈。
60、本发明提供的计算机程序产品、分布式存储系统数据处理装置、及非易失性存储介质,与上述方法对应,效果同上。
1.一种分布式存储系统数据处理方法,其特征在于,应用于分布式存储系统中的客户端侧;其中,所述客户端预先部署有纠删码计算模块,所述纠删码计算模块为集成有纠删码算法以及所述纠删码算法所使用接口的模块;所述客户端在初始化时预先加载有纠删码算法所需使用的库文件;所述客户端还订阅有存储池中的数据分布映射更新;
2.根据权利要求1所述的分布式存储系统数据处理方法,其特征在于,所述数据传输请求为数据写入请求;
3.根据权利要求2所述的分布式存储系统数据处理方法,其特征在于,调用所述纠删码计算模块对所述数据传输任务进行处理,以得到多个传输子任务包括:
4.根据权利要求3所述的分布式存储系统数据处理方法,其特征在于,所述存储节点包括:主节点和从节点;
5.根据权利要求4所述的分布式存储系统数据处理方法,其特征在于,还包括:
6.根据权利要求5所述的分布式存储系统数据处理方法,其特征在于,从各所述存储节点的版本日志中,选取一个版本日志作为权威日志包括:
7.根据权利要求1所述的分布式存储系统数据处理方法,其特征在于,所述数据传输请求为数据读取请求;
8.根据权利要求7所述的分布式存储系统数据处理方法,其特征在于,调用所述纠删码计算模块对所述数据传输任务进行处理,以得到多个传输子任务包括:
9.根据权利要求8所述的分布式存储系统数据处理方法,其特征在于,在各所述存储节点完成对应的所述传输子任务后,向所述客户节点返回数据传输成功信息包括:
10.根据权利要求8所述的分布式存储系统数据处理方法,其特征在于,在根据各所述存储节点对应的存储服务信息,将各所述数据块和各所述校验块的读取请求发送至对应所述存储节点的存储服务中之前,还包括:
11.根据权利要求10所述的分布式存储系统数据处理方法,其特征在于,还包括:
12.根据权利要求1至11任意一项所述的分布式存储系统数据处理方法,其特征在于,将各所述传输子任务发送至对应的所述存储节点中,以便于所述存储节点完成对应的所述传输子任务包括:
13.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如权利要求1至12任一项所述的分布式存储系统数据处理方法的步骤。
14.一种分布式存储系统数据处理装置,其特征在于,包括:
15.一种非易失性存储介质,其特征在于,所述非易失性存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至12任意一项所述的分布式存储系统数据处理方法的步骤。