分布式系统模式
2023
2019 年 11 月的开幕日,我的收件箱里收到了一封来自我们印度的一位高级开发人员的邮件。他观察到开发人员在理解核心分布式系统概念方面遇到了困难,而这些概念对于有效地使用 Kafka、Cassandra 和 Zookeeper 等现代工具至关重要。他尝试教授分布式系统中关键概念背后的理论,但发现他的同事难以完全理解其后果。因此,他尝试了一种更以代码为中心的做法。他探索了驱动这些核心开源系统的代码,并构建了简化的实现,旨在突出显示和教授理论概念。这更成功,他的邮件是关于如何进一步开展这项培训的。
我们决定开发一系列模式将是一个不错的方向,并开始了为期四年的旅程。与软件开发的大多数方面相比,分布式系统设计通常需要形式化方法等工具提供的数学分析。但尽管理解理论如何运作具有挑战性,但从论文中出现的理论到可以在实际系统中实现的理论之间仍然存在相当大的差距。通过研究每天运行我们在线系统的系统的代码(通常需要学习新的语言和框架),Unmesh 能够将嵌入此代码中的常见解决方案提炼成更通用的模式。构建这些模式的骨架实现确保他正确理解了经常难以捉摸的行为和权衡。
为了传达他学到的知识,他起草了模式,将它们发送给我和其他感兴趣的 Thoughtworks 员工,反思了评论,并将开发的草稿发布在这里供更广泛的受众使用。随着模式集的形成,他联系了 Pearson 将其改编成一本书,我很自豪地将这本书添加到我的签名系列中。
最终的书包含 三十种模式,每种模式都配有说明性文本,许多模式配有序列图来解释复杂的交互,所有模式都配有代码示例来阐明所有重要的细节。理解这些模式为理解分布式系统的工作原理奠定了坚实的基础。特别是,它们阐明了这些系统面临的最棘手的问题:如何确保数据可以分布以提高可用性和弹性,而不会在多个写入者尝试同时更新时遇到悖论。