Merge pull request #247 from songzhibin97/patch-46

Update ch9.md
This commit is contained in:
YIN, Gang 2022-06-11 17:03:05 +08:00 committed by GitHub
commit ebca6af118
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

2
ch9.md
View File

@ -11,7 +11,7 @@
正如 [第八章](ch8.md) 所讨论的,分布式系统中的许多事情可能会出错。处理这种故障的最简单方法是简单地让整个服务失效,并向用户显示错误消息。如果无法接受这个解决方案,我们就需要找到容错的方法 —— 即使某些内部组件出现故障,服务也能正常运行。
在本章中,我们将讨论构建容错分布式系统的算法和协议的一些例子。我们将假设 [第八章](ch8.md) 的所有问题都可能发生:网络中的数据包可能会丢失、重新排序、重复送或任意延迟;时钟只是尽其所能地近似;且节点可以暂停(例如,由于垃圾收集)或随时崩溃。
在本章中,我们将讨论构建容错分布式系统的算法和协议的一些例子。我们将假设 [第八章](ch8.md) 的所有问题都可能发生:网络中的数据包可能会丢失、重新排序、重复送或任意延迟;时钟只是尽其所能地近似;且节点可以暂停(例如,由于垃圾收集)或随时崩溃。
构建容错系统的最好方法,是找到一些带有实用保证的通用抽象,实现一次,然后让应用依赖这些保证。这与 [第七章](ch7.md) 中的事务处理方法相同:通过使用事务,应用可以假装没有崩溃(原子性),没有其他人同时访问数据库(隔离),存储设备是完全可靠的(持久性)。即使发生崩溃,竞态条件和磁盘故障,事务抽象隐藏了这些问题,因此应用不必担心它们。