










这篇书评可能有关键情节透露
值得放在床头反复阅读的神书。
这本书其实讲的是一种道,如何去设计数据密集型应用【当今互联网绝大多数系统都是数据密集型系统】,而系统设计的核心目标其实就是可靠性(高可用)、可扩展性、可维护性。我们日常工作中其实用到的各种术,mysql、redis、hadoop 等如何使用,其实都不是这本书所讨论的目标,这本书所讨论的目标在于,类似于 mysql 等的数据是如何组织的,我们应该在什么场景下使用这个中间件,如何去选择适合我们的中间件。
关于系统的本质讲的非常透彻,尤其是关于存储与分布式数据这块,醍醐灌顶,将自己很多比较零散的知识点都串联起来了。如何做横向扩展,做横向扩展会遇到那些问题,数据自平衡的代价,分布式事务的代价,分布式系统下多节点如何达成共识等常见问题都做了比较深的剖析。
从单机的数据系统走向分布式的数据系统,其实如何保证统一性,都能以统一的接口对外提供服务,这个问题也挺有意思的。设计之中就是各种 trade off,尤其是关于 CAP 理论相关,以及 BASE 理论相关,强一致性基本都是在互联网系统中被牺牲的点,大家都能接受最终一致性。
关于设计哲学这块
Unix 的设计是为程序员提供一种相当低层次的硬件的逻辑抽象,而关系数据库则希望为应用程序员提供一种高层次的抽象
系统设计的本质就是抽象,如何更好地抽象,满足当前系统的要求,以及后续的扩展。虽然我们用机器码和汇编也能写程序,但谁不喜欢用 go 或者 php 这种抽象程度更高的语言呢,这何尝又不是一种 trade off 呢?
其实工程的本质就是 trade off,读完一遍这本书之后最大的感受。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。