基于区块链技术的分布式系统避免死锁处理方法及装置

文档序号:31135700发布日期:2022-08-13 11:54阅读:92来源:国知局
基于区块链技术的分布式系统避免死锁处理方法及装置

1.本发明涉及区块链领域,尤其涉及一种基于区块链技术的分布式系统避免死锁处理方法及装置。


背景技术:

2.区块链是一种去中心化的链式数据结构,它由一系列有序的区块链接而成,它本质上是一个去中心化的数据库,是一串使用密码学方法关联产生的数据区块。每隔一段时间,区块链网络中最先解出密码学难题的节点生成的区块被当成最新的区块,并广播同步给其他节点进行验证和确认,经确认有效的新区块将加入链中,作为该区块链当前的最高区块。这个最高区块将可以使得整个区块链网络节点中的区块保持实时一致性。区块链通过维护数据块的链式结构,可以维持持续增长的、不可篡改的实时全局一致性数据记录。
3.在分布式系统中,当一组进程中的某些成员由于无法访问到组中其他成员占用的资源而被无限期阻塞时,就产生了死锁。死锁浪费了满足其他请求所需要的资源,从而极大地阻碍了系统性能。而避免死锁就需要知道如何请求资源,如何动态检查资源分配状态,以保证没有无限期阻塞发生。因此,死锁避免的一个潜在问题是要能实时地收集到分布式系统资源的一致性全局状态信息,以便能实时检查资源分配状态,从而避免死锁。然而,由于分布式系统没有全局时钟,从而各个节点资源状态信息很难保持实时全局一致性,因此分布式系统很少使用死锁避免。


技术实现要素:

4.本发明提供了一种基于区块链技术的分布式系统避免死锁处理方法,包括执行以下步骤:
5.步骤1:根据分布式系统的规模和耦合程度,选取某一个区块链,然后把分布式系统所有节点都加入到该区块链。
6.步骤2:在分布式系统中建立一张资源查询表。
7.步骤3:把该资源查询表广播到整个区块链,验证成功后放到该区块链当前最高区块里。
8.步骤4:当分布式系统中的某一个进程准备请求某一个资源时,先从当前最高区块里读取资源查询表,然后判断资源状态是否被占用;如果该资源状态是“已占用”,则该进程请求失败,并进入等待状态,直至下一次收到区块链广播资源查询表的信息,就再次进行读取资源查询表,如果该资源状态是“未占用”,则请求该资源成功,然后在资源查询表中把该资源状态修改为“已占用”,并把更新后的资源查询表广播到整个区块链。
9.步骤5:当分布式系统中的某一个进程释放某一个资源后,就把区块链当前最高区块里资源查询表进行更新,把该资源状态修改为“未占用”,并把更新后的资源查询表广播到整个区块链,然后返回执行步骤4。
10.作为本发明的进一步改进,在所述步骤1中,按照耦合程度,所述分布式系统分为
紧密耦合分布式系统和松散耦合分布式系统,所选取的区块链包括公链、联盟链或私链。
11.作为本发明的进一步改进,在所述步骤1中,对于松散耦合分布式系统,区块链选取公链或联盟链,对于紧密耦合分布式系统,区块链选取私链。
12.作为本发明的进一步改进,在所述步骤1中,所述公链包括比特币系统、以太坊系统。
13.作为本发明的进一步改进,在所述步骤1中,如果选取以太坊系统,则采用智能合约实现资源查询表的实时全局一致性,如果选取联盟链或者私链,则采用超级账本实现资源查询表的实时全局一致性。
14.作为本发明的进一步改进,在所述步骤1中,所述分布式系统是由多个相互连接的处理资源组成的计算系统,它们在整个系统的控制下合作执行一个共同的任务;所述处理资源可以是物理上相邻的,也可以是地理上分散的。
15.作为本发明的进一步改进,在所述步骤2中,分布式系统中的每一个资源都被赋予一个唯一的编号,并且每一个资源都设置有是否已被其他进程占用的状态信息,即资源状态,从而形成一张资源查询表,该资源查询表包括多个字段。
16.作为本发明的进一步改进,在所述步骤2中,分布式系统中的每一个资源都被赋予一个唯一的编号,如果都是固定ip地址,编号用ip地址开头,然后再把此ip地址的计算机节点上的资源按某种顺序编号。
17.作为本发明的进一步改进,在所述步骤2中,所述字段包括:资源编号、资源名称、资源状态、资源被哪个进程占用、被占用的时间。
18.本发明还公开了一种基于区块链技术的分布式系统避免死锁处理装置,包括:存储器、处理器以及存储在所述存储器上的计算机程序,所述计算机程序配置为由所述处理器调用时实现本发明所述分布式系统避免死锁处理方法的步骤。
19.本发明的有益效果是:1.本发明的分布式系统避免死锁处理方法利用区块链的实时广播同步机制,弥补了分布式系统没有全局时钟的不足。2.本发明的分布式系统避免死锁处理方法通过设置一个资源查询表,并把该资源查询表上链,可以有效地避免分布式系统死锁的发生,从而大大提高了分布式系统的性能。
附图说明
20.图1是本发明分布式系统避免死锁处理方法的流程图;
21.图2是本发明分布式系统避免死锁处理方法的实施示意图。
具体实施方式
22.如图1所示,本发明公开了一种基于区块链技术的分布式系统避免死锁处理方法,包括执行以下步骤:
23.步骤1:根据分布式系统的规模和耦合程度,选取某一个区块链,可以选取公链、联盟链或私链,然后把分布式系统所有节点都加入到该区块链。
24.步骤2:分布式系统中的每一个资源都被赋予一个唯一的编号,并且每一个资源都设置有是否已被其他进程占用的状态信息,即资源状态,从而形成一张资源查询表,该资源查询表有三个字段,一是资源编号,二是资源名称,三是资源状态,还可以加入其他的一些
字段,比如资源被哪个进程占用,以及被占用的时间等。如果都是固定ip地址,编号可以考虑用ip地址开头,然后再把此ip地址的计算机节点上的资源按某种顺序编号。
25.本发明分布式系统避免死锁处理方法的资源查询表如下:
26.资源编号资源名称资源状态1resource a未占用2resource b已占用
………
nresource m未占用
27.步骤3:把该资源查询表广播到整个区块链,验证成功后放到该区块链当前最高区块里。
28.步骤4:当分布式系统中的某一个进程准备请求某一个资源时,先从当前最高区块里读取资源查询表,然后判断资源状态是否被占用;如果该资源状态是“已占用”,则该进程请求失败,并进入等待状态,直至下一次收到区块链广播资源查询表的信息,就再次进行读取资源查询表,如果该资源状态是“未占用”,则请求该资源成功,然后在资源查询表中把该资源状态修改为“已占用”,并把更新后的资源查询表广播到整个区块链;步骤5:当分布式系统中的某一个进程释放某一个资源后,就把区块链当前最高区块里的资源查询表进行更新,把该资源状态修改为“未占用”,并把更新后的资源查询表广播到整个区块链,然后返回执行步骤4。
29.所述步骤1中,所述分布式系统是由多个相互连接的处理资源组成的计算系统,它们在整个系统的控制下合作执行一个共同的任务,最少依赖于集中的程序、数据和硬件;所述处理资源可以是物理上相邻的,也可以是地理上分散的。
30.在所述步骤1中,按照耦合程度,所述分布式系统分为紧密耦合分布式系统和松散耦合分布式系统。
31.对于大规模的松散耦合分布式系统,区块链可以选取公链,比如比特币系统、以太坊系统等。考虑到分布式系统资源调度的效率,优先选取产生区块频率高且系统稳定的公链。比如可以考虑以太坊系统,每15秒钟左右产生一个新的区块,且系统很稳定。而比特币系统虽然稳定,但每10分钟左右才产生一个新的区块,对分布式系统来说,效率太低。
32.对于中小规模的松散耦合分布式系统,区块链可以选取联盟链,比如fabric(联盟链开源项目),当然也可以使用其他的企业级联盟链。
33.对于小规模的紧密耦合分布式系统,区块链可以选取私链。
34.如果考虑以太坊系统,则可以采用智能合约实现资源查询表的实时全局一致性;如果考虑联盟链或者私链,则可以采用超级账本实现资源查询表的实时全局一致性。
35.本发明提出的基于区块链技术的分布式系统避免死锁处理方法可以解决分布式系统如何避免死锁的难题。首先,区块链每隔一段时间就会动态同步产生一个新的区块,并且区块是由矿工一直维护且一直持续增长下去,从而保证了区块链所有节点的实时全局一致性;其次,让分布式系统所有计算机节点都加入到区块链,保证了分布式系统所有节点都有实时全局一致的区块链,从而解决了分布式系统中避免锁死所需要的全局时钟的问题;再次,在分布式系统中建立一张资源查询表,把该资源查询表放到该区块链当前最高区块里,并广播同步到整个区块链;最后,分布式系统中的进程请求资源时,先去查询区块链当
前最高区块里的资源查询表,若请求成功,则更新资源查询表的内容,再把更新后的资源查询表广播同步到整个区块链。
36.本发明还公开了一种基于区块链技术的分布式系统避免死锁处理装置,包括:存储器、处理器以及存储在所述存储器上的计算机程序,所述计算机程序配置为由所述处理器调用时实现本发明所述分布式系统避免死锁处理方法的步骤。
37.本发明的有益效果:1.本发明的分布式系统避免死锁处理方法利用区块链的实时广播同步机制,弥补了分布式系统没有全局时钟的不足。2.本发明的分布式系统避免死锁处理方法通过设置一个资源查询表,并把该资源查询表上链,可以有效地避免分布式系统死锁的发生,从而大大提高了分布式系统的性能。
38.以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1