零基础一文读懂分布式系统(14)

\n

试想 , 你百分百在星巴克得到一杯咖啡 , 但星巴克并不能百分百收到钱 , 这并不符合大多数人能理解的世界运转规则 。 所以非确定性机制有它自己的短板 , 以及不适合的场景 。

\n

另一方面 , Finality 系统在保证了结果的确定性后 , 系统设计就要反过来追求 Liveness;而 Liveness 系统在保证了网络的开放性后 , 系统设计就要反过来追求 Finality 。 中本聪共识为了提高结果的确定性或安全性 , 就需要做出其他让步 , 比如 TPS 。

\n

以比特币为例 。 比特币可以把出块时间从 10 分钟提高到 1 分钟 , TPS 会大幅提升 , 但 1 分钟的时间不够把消息传遍全网 , 系统中就会出现很多分叉 , 导致结果的可确定性变低;比特币也可以把区块大小从 1MB 提高到 100MB , TPS 也会提升 , 但大区块对网络和节点的要求高 , 会增加节点的进入门槛从而带来中心化 , 导致输出结果容易被篡改 。

\n

所以你看 , 设计分布式系统就像与撒旦做交易 , 你得到一些 , 必然要交出一些 。 没有最好的系统 , 只有适合解决某类问题的系统;没有单纯的指标比较 , 只有是在什么设定下实现这种指标 。

推荐阅读