高性能架构之道

书籍简介

《高性能架构之道》是一本理论联系实际的架构书籍。书中对高性能、架构、软件质量指标等概念进行了细致的阐述。并分章节详细介绍了实现高性能架构的手段,涵盖分布式、并发编程、数据库调优、缓存、IO、高可用、前端性能优化等众多知识。同时,在每个方面均涵盖相关的理论知识、实践技巧、工程方案。该书最后还运用书中知识完成了一个实际软件项目的架构设计工作,向大家完整展示了软件架构的全过程。

本书适合软件架构师、工程师、学生阅读,能极大帮助读者完善软件开发知识体系和提升其软件架构能力。

书籍购买地址: 京东

高性能架构之道

书籍购买地址: 京东

书籍目录

书籍内容

本页面提供《高性能架构之道》中部分章节的试读。

试读章节未经校审,以出版的书籍内容为准。

书籍购买地址: 京东


推荐序

近年来,随着移动互联网的蓬勃发展,数字经济迎来爆发式增长的契机。百花齐放的互联网服务正在潜移默化地渗透到人们衣、食、住、行的方方面面。软件服务的运行质量,已经不仅仅影响着用户体验,更成为关系到社会民生的大事。

从信息化、数字化时代迈入智能化时代,软件系统架构也是不断演进的,从传统的单体式,发展到SOA,再到微服务,乃至如今火热的云原生。在不断地以技术创新驱动业务创新的同时,所面临的技术挑战也在与日俱增。对于高并发、大流量的互联网分布式系统来说,一个微小的技术方案差异,就很可能导致天壤之别的性能表现。而性能问题不仅仅带来了运行成本的增加,更是系统稳定性的隐患。

构建高性能、高可靠的软件系统,是无数开发者不懈的追求。然而软件架构设计是一项高度依赖理论知识体系与工程实践经验的工作,如果没有合适的学习渠道,往往进步缓慢。

本书作者对软件性能有独特的见解,在软件架构设计、性能保障方面均有丰富经验。本书首先站在体系化的理论高度,从软件质量的特性维度出发,推导出软件性能的度量模型,解答了“什么是高性能软件架构”。并且结合多年经验,贯穿完整技术栈介绍了提升软件架构性能的知识与技巧。最后用一个实战案例,帮助读者充分消化理解所学知识。这是一本值得广大技术爱好者与从业者品读学习的好书。

PerfMa首席技术官,TVP腾讯云最具价值专家,中商联智库顾问 童庭坚

前言

半年前我出版了《通用源码阅读指导书——MyBatis源码详解》一书,向大家分享源码阅读相关的知识和技巧。书籍面市后,收到了不错的反响,有的读者表示学到了许多的编程知识,有的读者表示理解透彻了MyBatis的源码,有的读者表示终于迈入了源码阅读的大门。这让我感觉每个坐在电脑前十指连弹的夜都是值得的。

然而,我也发现很多开发者在进行软件架构设计时缺乏体系化思维,于是,只能在试错、总结中不断摸索提升,痛苦而缓慢。而且,这种提升方式容易留下知识盲区。可这些都很难通过源码阅读来补足。

因此我决定写一本体系化的架构书籍分享给大家。书籍中不仅要包含理论知识、实践技巧、工程方案,更要将这些知识体系化地连接起来,以帮助大家建立一个完备的知识体系。这就是我写作本书的原因。

在本书中,我们将从“高性能架构”这一点出发,体系化地介绍高性能架构相关的各个方面。

书中涉及很多理论知识,我尽量通过示例使得它们简单易懂;书中有很多架构技巧,我尽量通过总结使得它们清晰明了。在本书的最后,还会以书中的架构体系为依据开发一套高性能的分布式权限系统。

从理论知识,到架构技巧,再到项目实践,本书力求给出一套完整的知识体系,指引大家完成高性能系统的架构设计。

本书第一章介绍了高性能和架构这两个概念。包括高性能所代表的具体指标,架构的具体含义与主要内容。

本书第二章介绍了分流设计。即如何使用内容分发网络、多地址直连、反向代理等手段将用户的请求分散到不同的系统上,从而降低每个系统的并发数。

本书第三章介绍了与服务并行相关的设计。首先介绍了并行与并发的概念,然后在此基础上介绍了集群系统、分布式系统、微服务系统。包括各类系统的特点、实现难点等。服务并行设计能够进一步将系统内的请求进行分流,从而提升系统性能。

本书第四章介绍了多进行、多线程、多协程等运算并发手段,并给出了相应的实例。尤其是对常见的多线程进行了深入的介绍,包括线程的状态转换、应用场景、使用方法、协作方法等。通过运算并发设计,能够显著提升系统的并发能力。

本书第五章介绍了输入输出设计。首先介绍了IO的分类维度、层级。然后详细介绍了常见的五种IO模型,包括这些模型之间的演化逻辑,并给出了这些模型的实际使用示例。

本书第六章介绍了数据库设计与优化手段。从最基本的关系型数据库设计开始,介绍了关系型数据库设计的设计范式、反范式。在此基础上,还介绍了各类索引的原理、使用条件,各类锁的特点,死锁的产生与解除,事务及其隔离级别等。在章节的最后还介绍了面向巨量存储数据时数据库该如何优化,以及一些非传统的数据库和数据库中间件。

本书第七章介绍了缓存设计的方法和技巧。这一章节从缓存的收益说起,推导提升缓存收益的方法。然后在此基础上,给出了提升缓存收益的具体实施手段,包括缓存要素的设计、更新机制的设计、清理机制的设计、风险点的处理、位置的设计等。最后还介绍了写缓存的收益计算和实践方案。

本书第八章介绍了系统可靠性设计的相关知识。首先介绍了可靠性的概念与具体的衡量指标,然后在此基础上介绍了提升系统可靠性的手段。这一章节将帮助我们构建高可靠性的系统。

本书第九章介绍了应用保护的基础知识和实践手段。这些知识和手段能提升应用在突发状况下的工作状况。

本书第十章介绍了前端高性能的相关知识。这是一个相对独立的章节,它首先分析了前端工作过程中的性能关键点,然后针对这些关键点给出了前端性能优化的手段。具有较强的概括性和指导性。

本书第十一章介绍了架构设计中架构设计风格和软件生命周期这两个方面的基本知识。这些知识将指导我们体系化地进行软件架构工作。

本书第十二章是一个项目实践章节。该章节以前面各章节介绍的高性能架构知识为依据,完整地开展了一个高性能软件系统的架构工作,包括理论推导、模型设计、概要设计、详细设计等各个环节,向读者展示了一个完整的高性能架构过程。该章节的内容能帮助读者学会如何在实践中灵活运用前面各个章节的知识。

本书力求理论联系实践,既给出了高性能架构的相关理论与推导,又给出了具体的实施策略与技巧,还通过项目实践完成了一个高性能软件的架构设计。希望大家能在阅读本书后够建立高性能架构完整知识体系。

书籍的写作出版要经历很长的过程,从规划到研究,从初稿到终稿,从编辑到面市。在这个过程中,我要感谢许多人。期间,我得到了领导的大力支持和鼓励,得到了业内专家的审阅和指导,也得到了国内外学术及工程领域多位朋友的帮助。性能领域的资深专家童庭坚在百忙中审阅了书籍初稿,并为本书作序。电子工业出版社的众多编辑也为本书倾力付出。谢谢!

信息技术浪潮带来了巨大的机会,对于坐在这本书前的你和我而言,对于走在复兴路上的国家和民族而言。作为软件开发者的你我有幸站到了这一机会面前,我们每个人都应该做出自己的一份贡献,或伟大,或渺小,为自己,为社会。

真心希望本书能够给你带来架构能力和软件开发能力的提升。

加油,愿你我早日成为自己的灿烂星辰。

易哥

2020年10月,于上海

第1章 高性能架构

现代软件对性能的要求越来越高,因此必须在软件的架构过程中着重提升软件的性能指标,即对软件开展高性能架构。

然而高性能架构的开展是一项涉及理论、实践、工程等多领域的工作。软件开发者知识体系中的任何欠缺都可能会给软件带来设计上的缺陷,导致软件性能指标的下降。这使得软件架构成为了一项高度依赖知识、经验的工作。

本书旨在提升软件开发者在高性能架构方面的知识和经验。书中包含相关理论知识的阐述,并在理论知识的基础上推导出具体的实践方案,最后还向大家展示了一个完整的项目架构过程。进而由理论到实践、由实践到工程,帮助读者建立软件架构的完整知识体系,快速提升读者的高性能架构能力。

在这一章节,我们先介绍软件架构和软件质量这两个概念,并在此基础上明确“高性能”的具体定义。之后,我们会进一步分析软件的性能指标以及各指标之间的关系,为后续各章节做好铺垫。

1.1 软件架构

架构是一个来源于传统领域的古老概念,用来指对房屋、桥梁等实体物理结构的设计与研究。后来,架构的概念被引入到软件系统领域,指对软件系统总体结构的设计。

我们可以类比传统工程设计领域的概念,将软件系统领域的研究由上到下地分为三层:

可见软件架构位于承上启下的中间层。因此,做出良好的架构需要我们对理念层面和技术层面的知识均由较为深刻的认识。理念层面的知识为我们的架构提供了思路和目标上的指引,技术层面的知识为我们的架构提供了手段和工具上的支撑。

《通用源码阅读指导书——MyBatis源码详解》是一本兼具架构层面和技术层面的书籍。它以优质开源项目的源代码为基础,分析了源码所涉及的基础知识、实现逻辑、架构技巧,能使得读者在架构层面和技术层面均有较大的提升。是一本帮助程序员从技术开发领域迈入架构设计大门的良好书籍。

在软件开发过程中,架构发生在需求之后、规划之前。经过需求、架构、规划、开发几个主要步骤后,一个软件便从最初模糊的需求演变为最终可运行的实体。

软件架构是在软件系统结构、行为和属性的高级抽象基础之上展开的全面的系统设计,其主要内容包括概要设计和详细设计两大步骤。在概要设计阶段,研究构成系统的抽象组件以及组件之间的连接规则;在详细设计阶段,将这些抽象组件细化为模块、类、对象等实际的组件,并通过设计通信规则完成它们之间的连接。

软件系统架构的好坏对软件的质量有着重要的影响。在算法研究中,我们常使用时间复杂度和空间复杂度等指标来衡量算法的性能。然而,在一个完整的软件项目中,算法的研究与优化只是软件开发阶段的一个小环节,其对系统质量的影响是有限的。相比于算法优化,软件系统架构则是从顶层对软件系统的软硬件结构进行设计,其设计的好坏对系统质量的影响更为重大。

因此,要想搭建高性能的系统,要先从架构层面出发对软件进行高性能架构,而不应将责任直接推给算法设计和代码优化。

在了解什么是高性能架构之前,我们需要先了解什么是软件的质量。

试读章节结束。

书籍购买地址: 京东