- 分布式架构原理与实践
- 崔皓
- 2319字
- 2022-09-29 10:23:31
前言
为什么要写这本书
大家好,我是崔皓,一名 IT 老兵,从 2002 年参加工作至今已近 20 年,见证了系统设计从单体架构发展到分布式架构的过程。我从 2016 年开始关注分布式架构,并在团队中使用这种架构,遇到过不少问题,也踩过不少坑。每次遇到问题的时候,我都是头疼医头、脚疼医脚,借助搜索引擎、拜访高人、阅读名书。业务处于飞速发展中,面对海量的数据,系统需要提供更加强大的处理能力和扩展能力,分布式架构设计是未来的发展方向。在这种背景下,我为没有系统地学习过相关知识而感到苦恼。于是在 2017 年,我开始写博客,通过输出文字的方式将工作经验和学习所得进行归纳总结。至今我已发表 100 多篇博文,在“51CTO 技术栈”公众号上发表近 30 篇技术长文,并且在“51CTO 博客”中建立了自己的专栏——“秒杀高并发白话实战”。我的老师张千帆女士通过一次偶然的机会找到了我,让我参与编写高校教材的讨论工作,因此我萌生了写书的想法。在 2020 年年初,我发表的文章字数已经超过了 40 万,我想把这么多年积累的经验汇编成书,并分享给更多人,应该是一件很有意义的事情。中国人讲究“观、为、得”,“观”就是看别人做事,“为”就是自己尝试用学到的东西做事,之后才能有所“得”。我想写书也是这样,“观”就是学习的过程,为了写这本书我阅读了 40 多本专业图书,希望能从前辈那里找到灵感;“为”就是通过自己的实践,将书中内容和自身经验结合在一起,最终形成书中的文字,这样才能将知识转化为“得”。总而言之,汇总前人的经验与自己踩过的坑,并分享给需要的人,就是这本书的写作目的。
这本书包括哪些内容
写书一般更关注某技术是什么,怎么做,而忽略了为什么,其实应该把为什么使用某种技术放在第一的位置。只有知道了为什么,心中才会有目标,才懂得使用这门技术的意义。回到本书,要想把为什么说清楚,就需要对分布式技术的历史进行归纳总结,看看架构是如何一步步演变成分布式架构的。在我看来这个行进过程是自然而然、水到渠成的。我会在第 1 章介绍分布式架构的发展历史,同时告诉大家本书的逻辑主线,然后顺着这个逻辑主线展开介绍。
为了应对请求的高并发和业务的复杂性,需要对应用服务进行合理拆分,使之从原来的大而集中变成小而分散。想让这些分散的服务合作完成计算任务,就需要解决它们之间的通信与协同问题。和服务一样,负责存储的数据库也会遇到分散的情况,因此同样要考虑分散存储。如果说所有的服务、数据库都需要资源作为支撑,那么对资源的管理和调度也是必不可少的。此外,软件系统上线以后,还需要对关键指标进行监控。
根据上面的逻辑主线,可以得到本书的主要内容:分布式应用服务的拆分、分布式调用、分布式协同、分布式计算、分布式存储、分布式资源管理和调度、高性能与可用性以及指标与监控等。这些内容各成一章,基本涵盖了分布式技术的要点,读者既可以按照逻辑联系从前往后看,也可以只阅读感兴趣的章节。
本书每章内容都按照“为什么”“是什么”“怎么办”三方面展开。
•“为什么”指明了使用某种技术的原因,通常会指出具体的技术痛点,然后围绕这个痛点提出解决方案,从而引出对应的技术。
•“是什么”针对技术的核心架构展开,分析其原理和结构,让大家从内部了解技术架构,为后面的“怎么办”做铺垫。
•“怎么办”部分主要是根据技术架构的核心概念,形成最佳实践。本书会选择业内经典或者流行的技术架构和方案给大家做参考。
哪些人适合读这本书
在我开始写博客的时候,最先满足的是自己的学习需求,记录知识要点和感悟是我的目的。后来看博客的人多了,特别是在微信公众号上发表文章以后,我就需要考虑对应的阅读人群,考虑他们是否具备和我一样的知识背景和工作经历,我所写的内容能否被他们接受。再者,在职业生涯中,我担任过程序员、技术组长、架构师、业务分析师、项目经理、技术经理等不同角色,深知技术知识并非某一类人的专属物品。所以我需要对技术的核心要点进行抽象和深化,除了要让拥有专业背景的程序员、架构师看懂,也要让相关专业的业务分析师、项目管理者能弄明白。基于这个想法,我将前文提到的“为什么”“是什么”和“怎么办”这三方面分别对应到了思路、机制和实践。
•“为什么”适合程序员、技术组长、架构师、业务分析师、项目管理者阅读。
•“是什么”适合技术组长、架构师阅读。他们需要对技术核心了如指掌,这样才能在架构出现问题的时候,直指问题的根本,站在实现机制的高度看待整个系统架构。
•“怎么办”需要程序员、技术组长、架构师、项目管理者有所了解,对具体应用的落地和工具、架构的选择非常有用。
如何阅读这本书
拿到本书后可以先阅读第 1 章,其中介绍了分布式技术的发展历程以及全书的叙述逻辑。我会按照“拆分→调用→协同→计算→存储→调度→高性能与可用性→指标与监控”这样的逻辑主线展开描述。虽然章节之间有连贯性,但是也可以分开阅读,这并不会影响阅读体验。我在看书的时候喜欢通过画图的方式记录系统架构和数据流程,我把这个习惯也运用到了本书当中,使用了 300 多张图片。一图胜千言,读完一本书以后,记住的文字可能寥寥无几,对图却印象深刻。
感谢
写书是一个漫长的过程,从萌生想法到构思、整理大纲,再到查找资料、编写内容、审稿校验,我前后花了接近两年的时间。其中需要感谢的人太多,感谢华中科技大学的张千帆教授给我写书的启发;感谢陶家龙、李仙、石杉编辑在写作初期对我行文上的指导;特别要感谢的是人民邮电出版社图灵公司的王军花编辑,她从构思、架构、描写诸多方面不厌其烦地帮助我,是我写作上的指路明灯。我的同事和领导给予了我莫大的支持,感谢汪求学、吴晖、冯是聪、胡浩文、伍俊等。最后,感谢我父亲给我的文学熏陶,感谢我妻子近两年的默默付出,还有我 10 岁的女儿,她也一直默默关心和支持我。