知识卡片

分区容忍性定义的精确化:从work到function,从丢包到网络分区

普通读书笔记卡

内容

分区容忍性(Partition Tolerance)的定义精确化体现在两处关键换词。第一版是”出现消息丢失或者分区错误时系统能够继续运行”(System continues to work despite message loss or partial failure),第二版是”当出现网络分区后,系统能够继续履行职责”(The system will continue to function when network partitions occur)。差异一:第一版用”work”,第二版用”function”——”work”强调的只是”运行”,系统没宕机就算在work,哪怕一直返回错误、哪怕直接拒绝服务,广义上也能说它在work;而”function”强调的是”发挥作用”“履行职责”,这个标准和[[可用性定义的精确化:合理响应不等于正确响应]]是一脉相承的——只有真正返回了”合理响应”才算得上function,第二版的措辞明显更严格、更明确。差异二:第一版描述分区成因时用”message loss or partial failure”(消息丢失或部分故障),第二版直接用”network partitions”(网络分区)这个更概括的说法——第一版是在直接指出一个具体原因(丢包),但丢包只是造成网络分区现象的其中一种情况;第二版不去纠结具体是什么原因导致的,而是直接描述”分区”这个现象本身——不管是丢包、连接中断,还是网络拥塞,只要最终结果是节点之间无法正常通信、系统被割裂成互相看不见的部分,都统一归入”网络分区”这个现象。这个演变思路和一致性、可用性两处的精确化是一致的:用更贴近”现象/结果”的表述取代容易引发歧义或范围过窄的”原因/字面动作”式表述。

参考来源

- 位置:《从零开始学架构》第22讲《想成为架构师,你必须知道CAP理论》"分区容忍性(Partition Tolerance)"(源文件:_epub-src/OEBPS/text00002.html) - 结论依据:原文对比第一版"System continues to work despite message loss or partial failure"与第二版"The system will continue to function when network partitions occur",说明"work 强调'运行'……而 function 强调'发挥作用''履行职责'……第一版描述分区用的是 message loss or partial failure……第二版直接用 network partitions……不管是什么原因,可能是丢包,也可能是连接中断,还可能是拥塞,只要导致了网络分区,就通通算在里面",直接支撑本卡片结论。 - 原始内容:work 强调"运行",只要系统不宕机,我们都可以说系统在 work……function 强调"发挥作用""履行职责"……第二版直接用 network partitions……只要导致了网络分区,就通通算在里面。