前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈分布式系统的不可信问题

浅谈分布式系统的不可信问题

作者头像
哒呵呵
发布2021-06-17 20:13:40
6850
发布2021-06-17 20:13:40
举报
文章被收录于专栏:鸿的学习笔记

在讨论分布式系统之前,我们首先要保证可信:网络之间传输的数据是可信的、节点之间是可信的。

首先讨论网络的可信。我们要如何保证两个节点互相传输的数据是可以信任的,A节点传输给B节点的数据,B节点会相信这个数据是没被更改的?假设我们采用类似的确认机制,比如A节点传输一条消息给B节点,按常理,B节点应该返回A节点一条消息确认消息已收到,并确定消息是这一条,但是A节点又要考虑B这条消息的可信性了,又要回传新的确认信息给B节点,于是如此往复。如何才能保证A和B节点传输消息的可靠性呢?这在计算机理论里被称为“两位将军问题”。

第二个问题是节点的可信性。我们要如何保证几个节点之间是可以信任的。假设有三个节点构成了一个分布式系统,三个人约定三个人之中只要有两个人达成了共识,那么分布式系统本身就选择这个共识作为系统的共识。假如此时有一个节点被攻破了,变成“间谍”,那么其它两个节点如何知道这个节点“变质”了。更想深一点,这个节点发出的消息是错误消息,如何确认这个消息是错误的,甚至发现这个消息是伪装的。对这个问题的最好概况被称为“拜占庭将军问题”。

用比较严肃点的话来说:

在分布式计算中,不同的计算机通过通讯交换信息达成共识而按照同一套协作策略行动。但有时候,系统中的成员计算机可能出错而发送错误的信息,用于传递信息的通讯网络也可能导致信息损坏,使得网络中不同的成员关于全体协作的策略得出不同结论,从而破坏系统一致性。拜占庭将军问题被认为是容错性问题中最难的问题类型之一。

这两个问题在工程上解决的核心思路都是成本。两位将军的问题选择了三次握手的TCP协议,以一定的不可靠性换得整体分布式系统的数据传输的可信性(这也是有最终解法的,那就是量子纠缠效应);拜占庭将军问题的解决是依赖于提高节点当“间谍”成本,从而让这个节点不得不放弃当“间谍”,最经典的解法就是区块链的PoW(Proof of Work)工作量共识机制。

量子纠缠理论:处于量子纠缠态的两个粒子,无论相隔多远都能够彼此同步。

当然在大部分情况下,企业内部使用分布式系统是不需要考虑这两个问题的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档