分布式

分布式理论

拜占庭问题

假设多位拜占庭将军中没有叛军,信使的信息可靠但有可能被暗杀的情况下,将军们如何达成是否要进攻的一致性决定?

解决方案大致可以理解成:先在所有的将军中选出一个大将军,用来做出所有的决定。

举例如下:假如现在一共有 3 个将军 A,B 和 C,每个将军都有一个随机时间的倒计时器,倒计时一结束,这个将军就把自己当成大将军候选人,然后派信使传递选举投票的信息给将军 B 和 C,如果将军 B 和 C 还没有把自己当作候选人(自己的倒计时还没有结束),并且没有把选举票投给其他人,它们就会把票投给将军 A,信使回到将军 A 时,将军 A 知道自己收到了足够的票数,成为大将军。在有了大将军之后,是否需要进攻就由大将军 A 决定,然后再去派信使通知另外两个将军,自己已经成为了大将军。如果一段时间还没收到将军 B 和 C 的回复(信使可能会被暗杀),那就再重派一个信使,直到收到回复。

共识是可容错系统中的一个基本问题:即使面对故障,服务器也可以在共享状态上达成一致。

分布式一致性算法

分布式选举

分布式事务

分布式锁

分布式互斥

分布式存储

  • 数据复制
  • 数据分片
  • 数据迁移