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

一种基于分布式云平台的档案块同步方法与流程

2021-10-29 21:20:00 来源:中国专利 TAG:档案 镜像 同步 是在 方法


1.本发明属于网络档案块同步技术领域,涉及一种基于分布式云平台的档案块同步方法,特别是在云数据中心内进行镜像档案块分发时,对新、旧不同版本镜像档案块进行差异比较而基于特殊档案块分块方式的镜像档案块同步方法。


背景技术:

2.一个网络系统中可能共享规模巨大的档案块,并需要在各个主机端保持档案块版本的一致。例如在大型数据中心中向各个主机分发新版本的操作系统镜像时,为了同步系统内各主机所保存的镜像档案块,需要把新版本档案块分发给系统中每一个主机。但是,传输整个镜像档案块不仅耗时长,而且会导致网络压力过大。由于新版本镜像档案块往往与旧版本档案块差异很小,与完整的镜像档案块相比,这些差异仅仅是一小部分。因此,如何获取这些差异之处,以实现差异档案块与旧版本档案块的合并成为解决上述问题的瓶颈。
3.近年来,为了探查两个档案块的不同,研究涉及操作系统、远程桌面、p2p镜像档案块部署等等多个方面,所取得的成果主要有:
4.(1)档案块分块方法:该方法首先将需要传输的档案块分为若干块,之后以档案块为单位比较新旧两个档案块的差异,按块校验数据。linux下diff命令按“行”为单位进行差异比较也采用类似思想。对档案块分块,相当于把大档案块的档案块数量缩小,并把档案块的数据量抽象为档案块的数量。计算得到的档案块差异同样以档案块为最小单位。计算所得差异量越小,方法的精度越高。不过,如果档案块所分块足够多,也就是一个档案块足够小,那么分块计算得到的差异量很接近于实际上的差异量。
5.(2)档案块定长分块法:
6.对于档案块定长分块,目前最主要的分块方式来自于固定分块检测技术(fixed

sized partition,fsp)。此方法非常简单,时间效率很高,广泛用于下载软件的档案块正确性测试。方法输入量为档案块总长度与所需分块数量,即可将此档案块按照“档案块长度=文件总长度/所需分块数量”的结果来固定划分档案块,末尾长度不足,直接划分为一块。对于此分块方法,在进行差异运算的过程中,完全可以一一对应计算。即把需要对比的两个档案块均按照同样块长度分块,且依次编写档案块号,之后对比两个档案块中相同块号的档案块内容是否一致。
7.(3)档案块不定长分块法:
8.不定长分块又称变长分块,是为了克服定长分块在对比差异时“错位”问题而提出的。目前效果较好的已有方法是基于内容的不定长分块(content

defined chunking,cdc)。此方法考虑档案块的内容,定位分块的标志点并划分块,之后在档案块的分块描述中记录下每个块的分块标志,并以此描述指导另一个档案块的划分。
9.对于以上问题分析得知,导致档案块对比差异不精确的问题正是上述“错位”问题的存在。而如何解决错位问题成为本领域的一大难题。尤其,随着分布式区块链技术的运用,结合区块链架构对档案块进行同步的技术亟待更大提升。


技术实现要素:

10.为解决当前档案块同步时面临的种种问题,本技术请求保护一种基于分布式云平台的档案块同步方法,采用分布式区块链网络完成档案块同步,其特征在于,包括:
11.客户端和服务端进行通信交互,保证档案块的传输,采用tcp/ip链路,使用多线程方式提高传输效率;
12.数据层对整个区块进行控制管理,完成调度,区块产生故障的信息都会反馈进行处理,处理产生的故障信息,一旦产生故障就通知故障区块进行处理,从而保证客户端与服务端的正常持续运行;
13.实时监控指定目录或档案块的变化情况,当被监控的档案块发生变化时,会将档案块变更以账本的形式生成队列,等待控制处理,至少包含目录或档案块监控、账本队列处理;
14.应用层以档案块分区的方式寻找增量,再将增量部分的档案块通过档案块层进行同步,至少包括档案块控制、档案块分区、分区校验;
15.共识层采用共识机制,识别节点之间的不信任情况,使交易双方在无需第三方参与的情况下达成一致,信息由所有档案块共同维护。
16.进一步地,所述客户端和服务端进行通信交互,保证档案块的传输,采用tcp/ip链路,使用多线程方式提高传输效率,还包括:
17.初始化开始首先读取配置档案块信息,获取至少ip地址、网络端口信息;
18.通过createmainthread()函数创建主线程,主要负责网络通信链接。执行主线程,监听获取到的网络端口,等待服务端响应消息;
19.服务端响应来自客户端的请求时,主线程响应请求创建子线程,主要负责两端的档案块传输;
20.子线程完成通信传输后关闭,主线程仍保持监听端口,等待下一次链接。
21.进一步地,所述数据层对整个区块进行控制管理,完成调度,区块产生故障的信息都会反馈进行处理,处理产生的故障信息,一旦产生故障就通知故障区块进行处理,从而保证客户端与服务端的正常持续运行,还包括;
22.负责流程内部各区块之间的协调合作、记录日志、故障处理;
23.产生日志消息,日志记录运行时发生的一些状况,至少包括系统运行的日志和档案块变更的日志;故障消息的处理,定义一个消息队列,并使用api对其进行管理维护;
24.使用initcontrol()函数进行初始化,接着创建消息队列,设置必要的全局变量并且初始化;
25.使用msgrcv函数接收指定的消息,然后做出响应;
26.如果收到消息继续判断消息类型,没有收到消息则继续等待;
27.判断接收的消息类型,根据不同的类型转给下一步进行操作,如果是日志类型则转给日志子区块进行处理,如果是故障则转给故障子区块进行处理;
28.重复接收消息,直到主动结束;
29.所述产生日志消息,日志记录运行时发生的一些状况,至少包括系统运行的日志和档案块变更的日志,日志的消息处理还包括:
30.首先初始化区块,包括各种参数初始化、读取系统日志和档案块变更日志的档案
块路径;
31.根据读取的信息判断日志类型,并解析日志的详细内容;
32.根据不同的类型写入对应的日志档案块,如果日志类型是档案块变更类型则把其记录到档案块变更日志中,否在就记录到系统日志中;
33.根据不同的日志类型按照对应的格式内容记录到相应的日志中;
34.所述故障消息的处理还包括:
35.首先初始化区块,包括需要的参数和档案块路径初始化;
36.接收到故障消息后,获取其故障类型和详细的故障描述,根据不同的故障类型进行不同的处理;
37.将不同的故障类型及内容按照上述的格式记录到系统日志中,以便查看时可以更快地找到故障来源并修复;
38.如果判断故障非常严重,已有处理方法无法解决时,会通知管理人员进行检测维护。
39.所述实时监控指定目录或档案块的变化情况,当被监控的档案块发生变化时,会将档案块变更以账本的形式生成队列,等待控制处理,至少包含目录或档案块监控、账本队列处理,还包括:
40.读取配置档案块中需要被监控的对象,如果是档案块,则直接对该档案块进行监控,如果是目录,则需要对该目录进行递归遍历所有的子目录,对其所有子目录创建监控实例进行监控;利用epoll技术以账本驱动作为响应的级别,只对产生了账本触发的档案块描述符进行处理,当被监控的档案块描述符上有可读写账本发生时,epoll_wait()会通知处理程序去读写;
41.如果这次没有把档案块全部读写完,那么下次调用epoll_wait()时,它不会再次通知,也就是它只会通知一次,直到该档案块描述符上出现第二次可读写账本才会通知。
42.进一步地,所述应用层以档案块分区的方式寻找增量,再将增量部分的档案块通过档案块层进行同步,至少包括档案块控制、档案块分区、分区校验,还包括:
43.文件初始字节开始读取数据;
44.把读取到的数据存入校验区间尾部,其中定义校验区间为长度为len的窗口;
45.判断校验区间的数据量是否等于且不大于len,如果否,则继续执行上一步,如果是,则进入下一步;
46.计算校验区间中各字节数据中比特为1的总数量n,并判断n是否大于或等于设定的阈值threshold,如果是,则可确定校验区间尾部为分块边界,使用的是ramm不定长算法分区;
47.校验区间往后滑动一个字节,再次计算校验区间中各字节数据中比特为1的总数量n,并判断n是否大于threshold,如果是,则可确定校验区间尾部为分块边界,如果否,则进入下一步;
48.判断当前校验区间尾部与上一分块右边界距离是否大于等于阈值变动间隔d,如果否,则重新进入上面的步骤,如果是,则令当前threshold减1,然后再重新进入此步骤,直到找到分块边界为止;
49.客户端向服务端发送所有验证序列码序列,对每个分区计算强验证序列码g1、g2、
g3、g4、g5”,采用md5,当找到分块边界后,重置当前threshold为初始值;
50.重复,直至校验区间尾部达到文件末尾字节;
51.把位于文件尾部的不符合分块条件的尾部数据块作为单独一块.其中不符合分块条件是指文件尾部的数据块中不存在任何一个长度为len的区间,使得区间内各字节数据中比特为1的总数量n大于或等于当前阈值threshold;
52.服务端对旧档案块进行同样分区,grid1’、grid2’、grid3’、grid4’、grid5’,同样使用ramm算法分区,同样计算各个档案块的强验证序列码g1’、g2’、g3’、g4’、g5’;
53.根据收到来自客户端发送的验证序列码g1、g2、g3、g4、g5”生成布隆过滤器,然后对g1’、g2’、g3’、g4’、g5’,通过布隆过滤器进行判断是否存在差异;
54.发送差异信息给客户端请求客户端发送差异档案块;
55.客户端收到请求,根据差异信息发送响应的差异档案块给服务端;
56.服务端收到差异档案块后,把旧档案块进行重组完成档案块同步;
57.对于删除档案块,如果在第i个档案块中删除k档案块,不会删除至下一档案块,所述第i个档案块的分块信息包括:第i个档案块的校验值和长度,所述档案块的分块信息包括:档案块的偏移值;如果在第i个档案块中删除k档案块,会删除至下一档案块甚至删除至第j个档案块,所述第i个档案块的分块信息包括:第i个档案块的校验值和长度,所述第i 1个档案块的分块信息包括:第i 1个档案块的校验值、长度、偏移值和索引编号,所述档案块的分块信息包括:档案块的偏移值和索引编号。
58.进一步地,所述共识层采用共识机制,识别节点之间的不信任情况,使交易双方在无需第三方参与的情况下达成一致,信息由所有档案块共同维护,还包括:
59.选取一部分受信节点组成一个验证节点列表l,p
l
={p1,p2,p3,...p
n
},给节点赋予初始积分iv
i
=1,每个节点都需要为其他节点提供服务来维持积分,每一轮共识选择最佳档案块区块用于将验证节点打包,用系数γ降低最差档案块区块打包验证节点的积分,即iv
i
=γiv
i
,γ∈(0,1);当验证节点列表l中的节点积分低于某规定值时,该节点将被清除出列表,当列表所剩节点不足2/3时,将解散列表,并重新生成新的验证节点列表l。
60.本发明所请求保护的一种基于分布式云平台的档案块同步方法,按层级和模块化方式设计并实现了增量同步备份工具,底层负责数据存储,负责通信和数据传输,针对实时同步需求,采用inotify机制监控文件,核心数据同步采用ramm算法和无分区单哈希布隆过滤器实现了高效的增量同步,而控制模块负责整体的控制和调度,还有日志记录和异常处理等,以档案块分区的方式寻找增量,再将增量部分的档案块通过档案块层进行同步。同时,本发明全面结合当前分布式区块链技术架构,共识层采用共识机制,识别节点之间的不信任情况,使交易双方在无需第三方参与的情况下达成一致,信息由所有档案块共同维护。
附图说明
61.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
62.图1为本发明的一种基于分布式云平台的档案块同步方法的工作流程图。
具体实施方式
63.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
64.为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
65.参照附图1,本技术请求保护一种基于分布式云平台的档案块同步方法,采用分布式区块链网络完成档案块同步,其特征在于,包括:
66.客户端和服务端进行通信交互,保证档案块的传输,采用tcp/ip链路,使用多线程方式提高传输效率;
67.数据层对整个区块进行控制管理,完成调度,区块产生故障的信息都会反馈进行处理,处理产生的故障信息,一旦产生故障就通知故障区块进行处理,从而保证客户端与服务端的正常持续运行;
68.实时监控指定目录或档案块的变化情况,当被监控的档案块发生变化时,会将档案块变更以账本的形式生成队列,等待控制处理,至少包含目录或档案块监控、账本队列处理;
69.应用层以档案块分区的方式寻找增量,再将增量部分的档案块通过档案块层进行同步,至少包括档案块控制、档案块分区、分区校验;
70.共识层采用共识机制,识别节点之间的不信任情况,使交易双方在无需第三方参与的情况下达成一致,信息由所有档案块共同维护。
71.进一步地,所述客户端和服务端进行通信交互,保证档案块的传输,采用tcp/ip链路,使用多线程方式提高传输效率,还包括:
72.初始化开始首先读取配置档案块信息,获取至少ip地址、网络端口信息;
73.通过createmainthread()函数创建主线程,主要负责网络通信链接。执行主线程,监听获取到的网络端口,等待服务端响应消息;
74.服务端响应来自客户端的请求时,主线程响应请求创建子线程,主要负责两端的档案块传输;
75.子线程完成通信传输后关闭,主线程仍保持监听端口,等待下一次链接。
76.进一步地,所述数据层对整个区块进行控制管理,完成调度,区块产生故障的信息都会反馈进行处理,处理产生的故障信息,一旦产生故障就通知故障区块进行处理,从而保证客户端与服务端的正常持续运行,还包括;
77.负责流程内部各区块之间的协调合作、记录日志、故障处理;
78.产生日志消息,日志记录运行时发生的一些状况,至少包括系统运行的日志和档案块变更的日志;故障消息的处理,定义一个消息队列,并使用api对其进行管理维护;
79.使用initcontrol()函数进行初始化,接着创建消息队列,设置必要的全局变量并且初始化;
80.使用msgrcv函数接收指定的消息,然后做出响应;
81.如果收到消息继续判断消息类型,没有收到消息则继续等待;
82.判断接收的消息类型,根据不同的类型转给下一步进行操作,如果是日志类型则转给日志子区块进行处理,如果是故障则转给故障子区块进行处理;
83.重复接收消息,直到主动结束;
84.所述产生日志消息,日志记录运行时发生的一些状况,至少包括系统运行的日志和档案块变更的日志,日志的消息处理还包括:
85.首先初始化区块,包括各种参数初始化、读取系统日志和档案块变更日志的档案块路径;
86.根据读取的信息判断日志类型,并解析日志的详细内容;
87.根据不同的类型写入对应的日志档案块,如果日志类型是档案块变更类型则把其记录到档案块变更日志中,否在就记录到系统日志中;
88.根据不同的日志类型按照对应的格式内容记录到相应的日志中;
89.所述故障消息的处理还包括:
90.首先初始化区块,包括需要的参数和档案块路径初始化;
91.接收到故障消息后,获取其故障类型和详细的故障描述,根据不同的故障类型进行不同的处理;
92.将不同的故障类型及内容按照上述的格式记录到系统日志中,以便查看时可以更快地找到故障来源并修复;
93.如果判断故障非常严重,已有处理方法无法解决时,会通知管理人员进行检测维护。
94.所述实时监控指定目录或档案块的变化情况,当被监控的档案块发生变化时,会将档案块变更以账本的形式生成队列,等待控制处理,至少包含目录或档案块监控、账本队列处理,还包括:
95.读取配置档案块中需要被监控的对象,如果是档案块,则直接对该档案块进行监控,如果是目录,则需要对该目录进行递归遍历所有的子目录,对其所有子目录创建监控实例进行监控;
96.利用epoll技术以账本驱动作为响应的级别,只对产生了账本触发的档案块描述符进行处理,当被监控的档案块描述符上有可读写账本发生时,epoll_wait()会通知处理程序去读写;
97.如果这次没有把档案块全部读写完,那么下次调用epoll_wait()时,它不会再次通知,也就是它只会通知一次,直到该档案块描述符上出现第二次可读写账本才会通知。
98.进一步地,所述应用层以档案块分区的方式寻找增量,再将增量部分的档案块通过档案块层进行同步,至少包括档案块控制、档案块分区、分区校验,还包括:
99.文件初始字节开始读取数据;
100.把读取到的数据存入校验区间尾部,其中定义校验区间为长度为len的窗口;
101.判断校验区间的数据量是否等于且不大于len,如果否,则继续执行上一步,如果是,则进入下一步;
102.计算校验区间中各字节数据中比特为1的总数量n,并判断n是否大于或等于设定的阈值threshold,如果是,则可确定校验区间尾部为分块边界,使用的是ramm不定长算法分区;
103.校验区间往后滑动一个字节,再次计算校验区间中各字节数据中比特为1的总数量n,并判断n是否大于threshold,如果是,则可确定校验区间尾部为分块边界,如果否,则进入下一步;
104.判断当前校验区间尾部与上一分块右边界距离是否大于等于阈值变动间隔d,如果否,则重新进入上面的步骤,如果是,则令当前threshold减1,然后再重新进入此步骤,直到找到分块边界为止;
105.客户端向服务端发送所有验证序列码序列,对每个分区计算强验证序列码g1、g2、g3、g4、g5”,采用md5,当找到分块边界后,重置当前threshold为初始值;
106.重复,直至校验区间尾部达到文件末尾字节;
107.把位于文件尾部的不符合分块条件的尾部数据块作为单独一块.其中不符合分块条件是指文件尾部的数据块中不存在任何一个长度为len的区间,使得区间内各字节数据中比特为1的总数量n大于或等于当前阈值threshold;
108.服务端对旧档案块进行同样分区,grid1’、grid2’、grid3’、grid4’、grid5’,同样使用ramm算法分区,同样计算各个档案块的强验证序列码g1’、g2’、g3’、g4’、g5’;
109.根据收到来自客户端发送的验证序列码g1、g2、g3、g4、g5”生成布隆过滤器,然后对g1’、g2’、g3’、g4’、g5’,通过布隆过滤器进行判断是否存在差异;
110.发送差异信息给客户端请求客户端发送差异档案块;
111.客户端收到请求,根据差异信息发送响应的差异档案块给服务端;
112.服务端收到差异档案块后,把旧档案块进行重组完成档案块同步;
113.对于删除档案块,如果在第i个档案块中删除k档案块,不会删除至下一档案块,所述第i个档案块的分块信息包括:第i个档案块的校验值和长度,所述档案块的分块信息包括:档案块的偏移值;如果在第i个档案块中删除k档案块,会删除至下一档案块甚至删除至第j个档案块,所述第i个档案块的分块信息包括:第i个档案块的校验值和长度,所述第i 1个档案块的分块信息包括:第i 1个档案块的校验值、长度、偏移值和索引编号,所述档案块的分块信息包括:档案块的偏移值和索引编号。
114.进一步地,所述共识层采用共识机制,识别节点之间的不信任情况,使交易双方在无需第三方参与的情况下达成一致,信息由所有档案块共同维护,还包括:
115.选取一部分受信节点组成一个验证节点列表l,p
l
={p1,p2,p3,...p
n
},给节点赋予初始积分iv
i
=1,每个节点都需要为其他节点提供服务来维持积分,每一轮共识选择最佳档案块区块用于将验证节点打包,用系数γ降低最差档案块区块打包验证节点的积分,即iv
i
=γiv
i
,γ∈(0,1),
116.;当验证节点列表l中的节点积分低于某规定值时,该节点将被清除出列表,当列表所剩节点不足2/3时,将解散列表,并重新生成新的验证节点列表l。
117.进一步的,所述共识过程在动态数据存储系统中,p
l
={p1,p2,p3,...p
n
}为验证节点的集合,p
n
的待验证候选集合为c(p
n
),合并后的待验证候选集合为
[0118][0119]
终端提交的打包档案块区块b
i
={px1,px2…
px
m
},px
m
∈c(p
l
),获其他验证组合及收益集合表示为o
i
={φ
i1
,φ
i2

φ
im
:μ
i
}。由某个终端p
i
进行打包的档案块区块b
i
组成的
各个终端验证组合(φ
i1
,φ
i2

φ
im
)中,任意参与验证的p
k
对p
i
提交档案块区块b
i
的验证结果表示为φ
ik

[0120]
具体共识的步骤包括:
[0121]
(1)生成验证节点列表l,对最早出现的p
i
∈p
l
,且μ
i

i1
,φ
i2

φ
im
)=n,选取p
i
打包档案块区块为最佳档案块区块,转步骤(4);否则执行步骤(2);
[0122]
(2)使得n>μ
i

i1
,φ
i2
...φ
im
)>μ
j

j1
,φ
j2

φ
jm
),选取p
i
打包档案块区块为最佳档案块区块,转步骤(4);否则执行步骤(3);
[0123]
(3)若n>μ
i

i1
,φ
i2

φ
im
)=μ
j

j1
,φ
j2
...φ
jm
)>
[0124]
μ
k

k1
,φ
k2

φ
km
)
[0125]
则从p
i
,p
j
中选取最早到达μ
i
当前值的验证节点打包档案块区块为最佳档案块区块;
[0126]
(4)若μ
i

i1
,φ
i2

φ
im
)<μ
j

j1
,φ
j2

φ
jm
),则选取p
i
打包档案块区块为最差档案块区块,并执行iv
i
=γiv
i
,γ∈(0,1),以降低该节点积分,设置积分规定值为ε,若iv
i
<ε,则判定p
i
节点失效,将其清除出列表l
[0127]
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0128]
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质中。
[0129]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

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

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

相关文献

  • 日榜
  • 周榜
  • 月榜