在分布式系统中,各组件运行在不同的进程或不同的机器上。这些组件可以是应用服务、数据库副本或后台工作进程。由于系统被划分为众多部分,一个组件常常需要与另一个组件通信才能完成某项工作,并且可能不得不等待该组件的响应。
可以把协调理解为组件之间的这种相互通信。例如,一个服务可能需要等待另一个服务批准请求;数据库可能需要等待其副本的确认;工作进程可能需要等待一把锁。每一种等待都会增加依赖,而依赖正是分布式系统出现问题的根源。
本文探讨协调为何对分布式系统而言是一项挑战。内容包括协调为何变得困难、协调如何随系统规模扩大而增长,以及如何减少协调。能够将组件必须相互等待的环节降到最少的设计者,可以构建出更具弹性、更具可扩展性、也更易于运维的系统。
核心观点是,独立性通常优于协调。当一个组件无需等待他人就能自行推进时,系统往往能更从容地应对故障、延迟峰值和负载压力。当协调无法避免时,处理协调的策略将是接下来各节的重点。
来源: ByteByteGo · 由HeadlinesBriefing整理摘要