文章目录
- 一、简介
- 二、问题
- 1. 什么是拜占庭将军问题?
- 2. 哪些场景需要 拜占庭式容错?
- 3. 平时开发(互联网)需要考虑这些嘛?
一、简介
二、问题
1. 什么是拜占庭将军问题?
有 N 位将军分别在不同的地点建立了营地,两两之间通讯只能通过信使进行沟通。即:如果某个系统中即使发生部分节点故障,甚至不遵从协议,或者恶意攻击、干扰网络,但仍可以继续正常运行,那么称之为 拜占庭式容错系统
这 N 位将军需要达成共识,但其中存在一些叛徒试图阻挠达成共识。
大多数的将军都是忠诚的,发出了真实的信息,但是叛徒则试图通过发送虚假或不真实的信息来欺骗和混淆他人(同时努力隐藏自己)。而且大家事先并不知道叛徒是谁。
2. 哪些场景需要 拜占庭式容错?
- 航空航天领域。
计算机内存或CPU寄存器中的数据可能会被辐射而发生故障,导致以不可预知的方式响应其他节点。
这种情况下如果将系统下线,代价异常昂贵(例如,可能出现飞机撞毁,杀死船员,或致使火箭与国际空间站相撞等),飞行控制系统必须做到容忍拜占庭故障。
- 多个参与者系统(区块链)
在多个参与者的系统中,某些参与者可能会作弊或者欺骗他人。这时节点不能完全相信另一个节点所发送的消息,它可能就是恶意的。例如,像比特币和其他区块链一样的点对点网络就是让互不信任的当事方就某项交易达成一致,且不依赖于集中的机制。
3. 平时开发(互联网)需要考虑这些嘛? 一般假定不需要,即假定没有拜占庭式的故障。
【【分布式理论】之 拜占庭式将军问题】因为服务内部通信是在内部网(局域网),内部通信的信任的,安全的。