分布式高可用算法
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2 算法模型

并发执行算法的模型与顺序执行算法不一样。在设计顺序执行算法时,我们的出发点是如何减少执行的步数(时间开销)和内存的占用空间(空间开销),我们会很习惯地思考第一步做什么、第二步做什么。但在面对并发执行算法时,其执行轨迹空间与进程数、步数的阶乘成正比,这种第一步做什么、第二步做什么的思维就会面临巨大的困难。

为分布式算法编写过代码的读者一定有这样的经历:在编写每行代码时,都要考虑有哪些进程的哪行代码可能会与本行代码并发执行?如果并发执行会造成什么后果?等等。看似简单的十几行代码可能会耗费我们一整天的时间去思考它的正确性,就是因为这寥寥数行代码对应的执行轨迹空间太大了!若要保证每个执行轨迹都是正确的,需要大量的脑力。常见的情况是,即使我们对着十几行代码盯了一整天,可代码运行一阵子后还是出错了,于是我们只能继续修改。最无奈的情况是,我们即使绞尽脑汁,也只能让错误出现得更晚一点。所以,我们必须换一个思路去设计分布式算法。