一种面向不确定环境的高性能随机化一致性方法与流程

文档序号:37156284发布日期:2024-02-26 17:18阅读:21来源:国知局
一种面向不确定环境的高性能随机化一致性方法与流程

本发明涉及计算机,具体为一种面向不确定环境的高性能随机化一致性方法。


背景技术:

1、在分布式执行环境中处理海量并发读/写时,维护数据一致性尤为重要。比如,多个节点需要存储相同的数据或提供相同的读取结果。为了实现不同节点间的数据一致性,需要在各节点中运行一套共识方法:节点间就各自的提议进行若干轮协商,最终达成一致的决策。目前主流的paxos类共识方法依赖于同步或部分同步系统,即节点间的时钟频率之差和通信及处理延迟存在已知或未知的上限,这对硬件和执行环境提出了较高要求。由生产工艺带来的cpu、内存、计时器等硬件资源差异,使得在不确定环境下实现高性能一致性极其困难。目前国内外的常用方法是使用高成本物理器件来保证一致性,我国在高性能芯片领域与国际领先水平(例如纳米级cpu)存在一定的技术差距,大量依赖进口,成为了近些年的“卡脖子”问题。这种传统的方法不仅价格昂贵,而且对于整个系统所处环境条件要求较为苛刻,无法在异常的温度、压强、湿度等外界环境下正常工作,因此,需要大量额外的辅助设备,例如风扇、空调、液冷/水冷设备等,能源消耗量巨大。

2、根据flp理论,异步环境下,即节点间的时钟频率之差或通信及处理延迟无上限的情况下,paxos类的共识方法没有活性,可能一直在协商而无法最终达成一致;而paxos类共识方法为解决该“活锁”问题引入leader节点,由其负责写入数据并同步给其他节点,该方法会使leader节点的负载过高,造成负载不均衡。我们可以利用随机性来解决上述问题,目前常见的随机共识方法包括“二值共币”和“多值共币”。当没有任何一个提议被多数节点认可时,便从收到的提议中随机选择一个作为下一轮的提议,该过程称为“抛币”。如果各节点的“抛币币值”完全相同,则称为完美匹配,此时可快速达成一致。“二值共币”中完美匹配可利用伪随机算法每轮产生随机数来实现,只要随机种子相同,同轮次不同节点生成的随机数必然相同。但“二值共币”提议的值域只能是{0,1},应用范围有限。“多值共币”将已收到的提议集合作为值域,可支持任意提议值。为实现完美匹配,“多值共币”不仅需要随机种子和轮次均相同,还需要收到的提议集合相同,并且任意两个提议之间存在严格全序关系(都能比较大小),条件严苛、性能较低。现有技术缺少一种面向不确定环境的高性能随机化一致性方法。


技术实现思路

1、(一)解决的技术问题

2、针对现有技术的不足,本发明提供了一种面向不确定环境的高性能随机化一致性方法,具备在时钟频率漂移、网络不稳定、任务阻塞等异常条件下依然可以进行高性能一致性运算等优点,解决了现有技术缺少一种面向不确定环境的高性能随机化一致性方法的问题。

3、(二)技术方案

4、为实现上述在时钟频率漂移、网络不稳定、任务阻塞等异常条件下依然可以进行高性能一致性运算目的,本发明提供如下技术方案:一种面向不确定环境的高性能随机化一致性方法,包括以下步骤:

5、步骤一、为每个进程植入统一的随机种子,用于保证相同轮次中各个进程产生的随机数相同;

6、步骤二、每个进程为提议附加进程id,产生本地提议值p;

7、步骤三、按统一顺序生成所有进程id的全排列数组id_seq;

8、步骤四、通过可靠广播将本地提议值p发送给其他进程;

9、步骤五、将提议进程id连同提议值p一同加入到集合values中;

10、步骤六、进入第一轮次的阶段1;

11、步骤七、进入第一轮次的阶段2;

12、步骤八、在阶段2中当阶段1里用于保存本地提议值p的数组val中某个值v出现的次数严格大于f时,形成共识,则步骤结束,否则返回阶段1,直至值v出现的次数严格大于f,其中,f为可以容忍的错误进程数目。

13、优选的,所述第一轮次的阶段1按照下列步骤进行:

14、a1、通过尽力广播向所有进程发送本地提议值p;

15、a2、等待所有进程发送的本地提议值p,并将其保存在数组val中;

16、a3、判断数组val收到的提议数是否严格过半,是,则进行a4步骤,否,则返回上一步;

17、a3、判断数组val中某个提议值v出现的次数是否严格过半,是,则把本地提议值p改成v,否,则改为⊥并进入阶段2。

18、优选的,所述第一轮次的阶段2按照下列步骤进行:

19、b1、清空数组val用于接收阶段2的提议值;

20、b2、每个进程再次通过尽力广播把自己的本地提议值p广播给所有进程;

21、b3、等待所有进程发送的提议值,并将其保存在数组val中;

22、b4、判断数组val接收到的提议值的个数是否不少于n-f,是,则进入b5步骤,否,则返回上一步;

23、b5、调用抛币步骤,生成新的随机数,并对数组id_seq的大小取余,记做a;

24、b6、判断数组val中提议值是v的个数是否大于f,是,则进行b7步骤,否,则进行;

25、b7、当数组val中提议值是v的个数大于f时,共识达成一致,进程把本地决策值赋值为v,并调用可靠广播向所有进程广播消息以推动所有进程交付决策值;

26、b8、收到本地决策值v之后,若本地尚未决定,则决定v并提交;

27、b9、根据共识结果生成新的随即种子,以保证下次共识各进程随机数一致并结束步骤;

28、b10、当数组val中提议值是v的个数小于f时,判断数组val中的元素是否全为⊥,是,则选取进程id排序id_seq[a],按照id_seq[a]的顺序从values中选取最大值b,并把本地提议值p改成币值b,开始下一轮次,否,则从val中挑选任意一个非⊥的提议值w,然后把本地提议值p赋值为w,并开始下一轮次。

29、优选的,所述b5中抛币步骤分为以下两个步骤:

30、c1、用伪随机算法生成新的随机数,并对全排列数组id_seq取余,记作a,a表示进程id的全排列中的第几个排列,统一的随机数种子保证了相同轮次中各进程选择的排列相同,该排列记作id_seq[a];

31、c2、按照提议的进程在id_seq[a]中的顺序,从集合values中选取最大的提议值作为币值b,进程执行抛币步骤c1获得a。

32、优选的,所述a3步骤表示该进程没有发现被大多数进程认可的提议,此时,进程表示为pi,提议值表示为vi,当进程pi看到提议值vi出现的次数严格过半,而另一进程pj看到提议值vj出现的次数严格过半,则vi与vj相等,令vi=vj=v*,然后进入第一轮次的阶段2。

33、优选的,所述步骤三中,初始时,每个进程的本地提议值p、本地决策值、提议数组val以及提议集合values均设置为⊥,其中⊥表示空。

34、优选的,所述步骤五中,当各个进程收到了上层应用的提议请求后,将其作为本地提议值p,并将自身的进程id连同p加入集合values中,然后通过可靠广播将p发送给其他进程,一旦某个进程通过可靠广播接收到来自其他进程的提议值,则将提议进程id连同提议值一同加入到集合values中,可靠广播用于保证各个进程的集合values最终都相同。

35、优选的,所述c2步骤中,当某个进程获得a时,如果数组val中某个值v出现的次数严格大于f,则说明共识已经达成而且决策值就是v,此时的v就是阶段1中的v*,无需计算币值。

36、优选的,所述b8步骤中,任何接收消息的进程会检查本地决策值是否为空,若为空,则将其赋值为v并交付该值,用于保证只交付一次决策值。

37、优选的,所述b9步骤中,根据本次共识的决策值计算hash值作为下次共识的随机种子,决策值的一致用于保证随机种子的一致,其中,hash值为软件中的唯一标识符。

38、与现有技术相比,本发明提供了一种面向不确定环境的高性能随机化一致性方法,具备以下有益效果:

39、1.本发明可以保证在异步环境中仍有活性,使得系统在面对如时钟频率漂移、网络不稳定、任务阻塞等突发异步情况时,仍然可以正常工作,提升了系统的可用性。

40、2.本发明降低了系统对硬件和执行环境的要求(可用廉价硬件构造系统,不需要额外的制冷设备),降低了硬件和运行维护成本,节省能源,降低碳排放。

41、3.本发明不依赖严格的预设条件就可使共识快速达成一致,实现简单,容易移植到各共识系统中,无需leader,可避免leader失败时重新选举的开销,可替代广泛使用的paxos类共识方法,使共识系统适应异步环境,比如,可用于替换zookeeper的选主部分、etcd和consul的raft方法等。

42、4.本发明使任意节点均可公平提议,不存在某个节点提议优先级更高的情况,可保证整个集群负载均衡。

43、5.本发明可避免某些高频当选leader节点的设备过度损耗,降低更换设备的成本,并提高系统的鲁棒性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1