近年来,随着移动互联网的蓬勃发展,数字经济迎来爆发式增长。百花齐放的互联网服务已经潜移默化地渗透到人们衣、食、住、行的方方面面。软件服务的运行质量,已经不仅仅影响着用户体验,更成为关系到社会民生的大事。
从信息化、数字化时代迈入智能化时代,软件系统架构也是不断演进的,从传统的单体式,发展到SOA,再到微服务,乃至如今火热的云原生。在不断地以技术创新驱动业务创新的同时,所面临的技术挑战也在与日俱增。对于高并发、大流量的互联网分布式系统来说,一个微小的技术方案差异,就可能导致性能表现天壤之别。而性能问题不仅仅带来了运行成本的增加,更是系统稳定性的隐患。
构建高性能、高可靠的软件系统,是无数开发者的不懈追求。然而软件架构设计是一项高度依赖理论知识体系与工程实践经验的工作,如果没有合适的学习渠道,往往进步缓慢。
本书作者对软件性能有着独到见解,在软件架构设计、性能保障方面均有丰富经验。本书首先站在体系化的理论高度,从软件质量的特性维度出发,推导出软件性能的度量模型,解答了“什么是高性能软件架构”。并且结合多年经验,贯穿完整技术栈介绍了提升软件架构性能的知识与技巧。最后用一个实战案例,帮助读者充分消化理解所学的知识。这是一本值得广大技术爱好者与从业者品读学习的好书。
童庭坚
PerfMa首席技术官
TVP腾讯云最具价值专家
中商联智库顾问
?
2019年我出版了《通用源码阅读指导书——MyBatis源码详解》一书,向大家分享源码阅读相关的知识和技巧。书籍面市后,收到了不错的反响,有的读者表示学到了许多的编程知识,有的读者表示透彻理解了MyBatis的源码,有的读者表示终于迈入了源码阅读的大门。繁体版也在台湾地区上市了,这让我感觉每个坐在电脑前十指连弹的夜都是值得的。
然而,我也发现很多开发者在进行软件架构设计时缺乏体系化的思维,只能在试错、总结中不断摸索提升,痛苦而缓慢。而且,这种提升方式容易留下知识盲区。可是这些问题都很难通过源码阅读来补足。
因此,我决定写一本体系化的架构书籍分享给大家。书籍中不仅要包含理论知识、实践技巧、工程方案,更要将这些知识体系化地连接起来,以帮助大家建立一个完备的知识体系。这就是我写作本书的原因。
在本书中,我们将从“高性能架构”这一点出发,系统地介绍高性能架构相关的各个方面。
书中涉及很多理论知识,我尽量通过示例使得它们简单易懂;书中有很多架构技巧,我尽量通过总结使得它们清晰明了。在本书的最后,还会以书中的架构体系为依据,开发一套高性能的分布式权限系统。
从理论知识到架构技巧,再到项目实践,本书力求给出一套完整的知识体系,指引大家完成高性能系统的架构设计。
第1章介绍了高性能和架构这两个概念。包括高性能代表的具体指标,架构的具体含义与主要内容。
第2章介绍了分流设计。即如何使用内容分发网络、多地址直连、反向代理等手段将用户的请求分散到不同的系统上,从而降低每个系统的并发数。
第3章介绍了与服务并行相关的设计。首先,介绍了并行与并发的概念。其次,在此基础上介绍了集群系统、分布式系统、微服务系统。包括各类系统的特点、实现难点等。服务并行设计能够进一步将系统内的请求进行分流,从而提升系统性能。
第4章介绍了多进行、多线程、多协程等运算并发手段,并给出了相应的实例。尤其是对常见的多线程进行了深入介绍,包括线程的状态转换、应用场景、使用方法、协作方法等。通过运算并发设计,能够显著提升系统的并发能力。
第5章介绍了输入输出设计。首先介绍了IO的分类维度、层级。然后详细介绍了常见的五种IO模型,包括这些模型之间的演化逻辑,并给出了这些模型的实际使用示例。
第6章介绍了数据库设计与优化手段。从最基本的关系型数据库设计开始,介绍了关系型数据库设计的设计范式、反范式。在此基础上,还介绍了各类索引的原理、使用条件,各类锁的特点,死锁的产生与解除,事务及其隔离级别等。在章节的最后还介绍了面向巨量存储数据时数据库该如何优化,以及一些非传统的数据库和数据库中间件。
第7章介绍了缓存设计的方法和技巧。这一章从缓存的收益说起,推导提升缓存收益的方法。然后在此基础上,给出了提升缓存收益的具体实施手段,包括缓存要素的设计、更新机制的设计、清理机制的设计、风险点的处理、位置的设计等。最后还介绍了写缓存的收益计算和实践方案。
第8章介绍了系统可靠性设计的相关知识。首先,介绍了可靠性的概念与具体的衡量指标。其次,在此基础上介绍了提升系统可靠性的手段。这一章将帮助我们构建高可靠性的系统。
第9章介绍了应用保护的基础知识和实践手段。这些知识和手段能提升应用在突发状况下的工作状况。
第10章介绍了前端高性能的相关知识。这是一个相对独立的一章。首先,分析了前端工作过程中的性能关键点。其次,针对这些关键点给出了前端性能优化的手段。具有较强的概括性和指导性。
第11章介绍了架构设计中架构设计风格和软件生命周期这两个方面的基础知识。这些知识将指导我们体系化地进行软件架构工作。
第12章是一个项目实践。本章以前面各章介绍的高性能架构知识为依据,完整地开展了一个高性能软件系统的架构工作,包括理论推导、模型设计、概要设计、详细设计等各个环节,向读者展示了一个完整的高性能架构过程。本章的内容能帮助读者学会如何在实践中灵活运用前面各章的知识。
本书力求理论联系实践,既给出了高性能架构的相关理论与推导,又给出了具体的实施策略与技巧,还通过项目实践完成了一个高性能软件的架构设计。希望大家在阅读本书后,能够建立高性能架构领域的完整知识体系。
致谢
书籍的写作出版要经历很长的过程,从规划到研究,从初稿到终稿,从编辑到面市。在这个过程中,我要感谢许多人。其间,我得到了领导的大力支持和鼓励,得到了业内专家的审阅和指导,也得到了国内外学术及工程领域多位朋友的帮助。性能领域的资深专家童庭坚在百忙中审阅了书籍初稿,并为本书作序。电子工业出版社的众多编辑也为本书倾力付出。
信息技术浪潮带来了巨大的机会,作为软件开发者的你我有幸站到了这一机会面前,我们每个人都应该做出自己的一份贡献,或伟大,或渺小,为自己,为社会。
真心希望本书能够给你带来架构能力和软件开发能力的提升。
加油,愿你我早日成为自己的灿烂星辰!
易哥
2020年10月于上海
?