本书深刻总结了作者在大型互联网公司长期的实战经验,系统化地阐述了构建大型分布式系统所需要的技术架构与业务架构方法论,并辅与详尽的实践剖析。全书分为三大部分:第1部分完整讨论了分布式架构的几大核心问题,包括高并发、高可靠性、高可用、数据一致性(包括分布式事务、Paxos/Raft一致性算法)、跨城容灾与异地多活、CAP理论;第2部分从业务架构思维、需求分析、业务建模、领域驱动设计与微服务等角度探讨业务架构;第3部分是案例实战,通过众多的业界实际案例来对理论有一个更为直观的介绍。通过本书,读者可以对构建大型复杂系统的方法论有全局的认识,对软件架构的核心能力有深刻的理解,对个人的技术成长起到一定的借鉴作用,提升思维认知。
本书不仅适合工程师、架构师阅读,也适合企业系统开发人员在内的软件开发从业人员阅读。
作者权威,《软件架构设计》《Java并发实现原理:JDK源码剖析》作者,互联网公司架构师。
内容丰富,系统化地阐述了构建大型分布式系统所需要的技术架构与业务架构方法论,并辅与详尽的实践案例剖析
体系完整,从分布式架构的几大核心问题入手,过渡到业务架构思维、需求分析、业务建模、领域驱动设计与微服务等,探讨业务架构,最后通过众多的业界实际案例来对理论有一个更为直观的介绍。
前言
本书是《软件架构设计:大型网站技术架构与业务架构融合之道》的进阶版本:和上一本书相比,本书省略了基础理论知识、计算机功底、技术管理的相关内容,更聚焦于分布式架构和业务架构这两个最重要的板块,在方法论上做更深入细致的探讨,同时补充了更为翔实的实战案例。
自始至终,作者最在意的还是“方法论”的建立。在《软件架构设计:大型网站技术架构与业务架构融合之道》中也是以“方法论”为主线的,但更偏重理论,没有详细展开讲实战案例。本书将一步步由浅入深地展开介绍很多详细的案例,同时在方法论层面进行更为细致的论述。
这里所讲的方法论,不是讨论解决问题的“具体技术或者框架”,而是真实解决“问题”本身。不是说解决问题的方案不重要,而是“定义问题,提出问题,往往比解决问题更加重要!”同样的问题,用C++、Java等不同语言和技术框架解决时,解决方案会有差异;在电商、广告、金融等不同业务场景中,解决方案也会有差异,但问题本身却是一样的。
比如分布式ID生成器,不管用什么语言写,也不管用在什么业务场景中,都有它本身固有的几个问题要解决。
比如消息中间件,要实现消息的不重不漏,也是一个无论在何种开发语言和业务场景中都需要解决的共性问题。
比如高可用切换导致的“脑裂“问题,无论在基础架构,还是在业务系统中,都会遇到。
比如高可用切换导致的数据一致性问题,无论在Kafka、MySQL,还是在Redis等系统中也会遇到。
方法论的作用是建立“迁移学习”的思维。迁移学习指的是当遇到新业务、新技术时,可以把之前的分析和解决问题的方法,快速地用到新的领域,提升学习效率。
而实践是什么呢?实践只是针对这个问题,在某种特定的业务场景下的其中一种解决方案。本书会列举不少实践案例,但不管怎么列举,都没办法把所有业务场景或实践全部枚举出来。解决方案可能是无穷的,但问题本身却是有限的。只有明白了这点,才能在新的业务场景和技术框架下,用同样的思考方式去解决问题:技术框架一直在变,业务场景也一直在变,解决问题的方案也随之在变,但那些“问题”却是永恒的。
本书结合作者多年在大型互联网公司的各种项目经验,将对于方法论的总结和思考贯穿于全书。希望读者最终收获的不仅是某个实战案例,还有理论的提升。
如何阅读本书?
对于刚入行的新人来说,建议先阅读《软件架构设计:大型网站技术架构与业务架构融合之道》,对架构的知识体系有一个全面认知,之后再重点阅读本书的相关章节。
对于有经验的从业者,可以选取自己感兴趣的章节阅读。
具体来说,全书分成了三大部分:
第1部分:分布式架构。这部分将介绍如何应对高并发、高可靠、高可用、一致性、跨城容灾等方面的问题。
第2部分:业务架构。这部分将介绍如何从技术延展到业务,如何做需求分析、建模、领域驱动设计和微服务拆分等。
第3部分:案例实战。结合作者在大型互联网公司的各种案例,把第1部分和第2部分综合在一起考虑,讲解分布式架构和业务架构的思维是如何在项目中运用的。
由于时间有限,书中不足之处在所难免,敬请广大读者批评指正!
作者