华信教育资源网
高性能架构之道:分布式、并发编程、数据库调优、缓存设计、IO模型、前端优化、高可用(第2版)
丛   书   名: 数智技术丛书
作   译   者:易哥 出 版 日 期:2025-01-01
出   版   社:电子工业出版社 维   护   人:刘小琳 
书   代   号:TP492450 I S B N:9787121492457

图书简介:

本书是一本理论联系实际的软件架构设计指导书,旨在帮助读者完成高性能软件系统的架构设计工作。本书先阐明了高性能与架构的概念,然后从分流设计、服务并行设计、运算并发设计、输入输出设计、数据库设计与优化、缓存设计、可靠性设计、应用保护设计、前端高性能设计等方面,全面介绍了高性能架构的理论和实践知识。内容涵盖CDN与反向代理,分布式系统,并发编程,IO模型,数据库范式、索引、调优、分库分表,Redis原理与应用,Elasticsearch原理与应用,图数据库,缓存更新清理机制与风险解决方案,服务熔断、降级、隔离、限流、恢复,Hystrix框架应用,前端性能分析与调优等知识。本书还总结了常用的架构设计理论,并运用书中知识展现了一个实际软件项目的架构设计步骤,向读者展示高性能架构设计的项目实践全貌。本书适合软件架构师、工程师、学生阅读,也可作为教材,以帮助读者完善软件开发知识体系和提升软件架构设计能力。
您的专属联系人更多
关注 评论(0) 分享
配套资源 图书内容 样章/电子教材 图书评价
  • 配 套 资 源

    本书资源

    本书暂无资源

    会员上传本书资源

  • 图 书 内 容

    内容简介

    本书是一本理论联系实际的软件架构设计指导书,旨在帮助读者完成高性能软件系统的架构设计工作。本书先阐明了高性能与架构的概念,然后从分流设计、服务并行设计、运算并发设计、输入输出设计、数据库设计与优化、缓存设计、可靠性设计、应用保护设计、前端高性能设计等方面,全面介绍了高性能架构的理论和实践知识。内容涵盖CDN与反向代理,分布式系统,并发编程,IO模型,数据库范式、索引、调优、分库分表,Redis原理与应用,Elasticsearch原理与应用,图数据库,缓存更新清理机制与风险解决方案,服务熔断、降级、隔离、限流、恢复,Hystrix框架应用,前端性能分析与调优等知识。本书还总结了常用的架构设计理论,并运用书中知识展现了一个实际软件项目的架构设计步骤,向读者展示高性能架构设计的项目实践全貌。本书适合软件架构师、工程师、学生阅读,也可作为教材,以帮助读者完善软件开发知识体系和提升软件架构设计能力。

    图书详情

    ISBN:9787121492457
    开 本:16(185*260)
    页 数:292
    字 数:467

    本书目录

    第2版前言
    
    目    录
    
    第1章  高性能架构	001
    1.1  软件架构	001
    1.2  软件的质量	002
    1.3  高性能概述	004
    1.4  软件性能指标	005
    1.4.1  吞吐量	005
    1.4.2  并发数	005
    1.4.3  平均响应时间	006
    1.4.4  可靠性指标	007
    1.5  性能指标之间的关系	007
    1.5.1  并发数对吞吐量的影响	007
    1.5.2  并发数对平均响应时间的影响	009
    1.5.3  平均响应时间对并发数的影响	010
    1.5.4  可靠性指标与其他指标的关系	011
    1.6  高性能架构总结	011
    第2章  分流设计	012
    2.1  内容分发网络	012
    2.1.1  内容分发网络的结构	013
    2.1.2  内容分发网络的原理	014
    2.2  多地址直连	017
    2.3  反向代理	018
    第3章  服务并行设计	022
    3.1  并行与并发	022
    3.2  集群系统	023
    3.2.1  无状态的节点集群	024
    3.2.2  单一服务节点集群	024
    3.2.3  信息共享的节点集群	026
    3.2.4  信息一致的节点集群	027
    3.3  分布式系统	028
    3.4  微服务系统	030
    第4章  运算并发设计	032
    4.1  多进程	032
    4.2  多线程	033
    4.2.1  线程的状态及转换	033
    4.2.2  多线程的应用场景	034
    4.2.3  多线程的创建	035
    4.2.4  线程池	039
    4.2.5  多线程资源协作	042
    4.2.6  多线程进度协作	048
    4.3  多协程	060
    4.4  运算并发总结	062
    第5章  输入输出设计	064
    5.1  概念梳理	064
    5.1.1  同步与异步	064
    5.1.2  阻塞与非阻塞	065
    5.2  IO模型	066
    5.3  IO模型的层级关系	068
    5.4  阻塞式IO模型	068
    5.5  非阻塞式IO模型	070
    5.6  信号驱动式IO模型	071
    5.7  复用式IO模型	071
    5.8  异步式IO模型	074
    5.9  输入输出模型总结	077
    第6章  数据库设计与优化	078
    6.1  数据库设计概述	078
    6.2  关系型数据库设计	079
    6.2.1  设计范式介绍	080
    6.2.2  反范式设计	087
    6.3  索引原理与优化	088
    6.3.1  索引的原理	088
    6.3.2  索引生效分析	092
    6.3.3  索引的使用	094
    6.3.4  索引的利弊	099
    6.4  数据库引擎	100
    6.5  数据库锁	101
    6.5.1  乐观锁	101
    6.5.2  悲观锁	102
    6.6  死锁	103
    6.7  事务	105
    6.7.1  事务并发导致的问题	105
    6.7.2  事务隔离级别	107
    6.7.3  自建事务	109
    6.8  巨量数据的优化	110
    6.8.1  表分区	110
    6.8.2  分库分表	113
    6.8.3  读写分离	115
    6.9  数据库中间件	118
    第7章  非关系型数据库	120
    7.1  键值数据库	121
    7.1.1  Redis概述	121
    7.1.2  数据类型与对应操作	121
    7.1.3  应用场景	132
    7.2  文档数据库	132
    7.2.1  Elasticsearch概述	133
    7.2.2  Elasticsearch的使用	135
    7.3  宽列存储数据库	139
    7.4  图数据库	142
    7.5  面向对象数据库	144
    ?
    第8章  缓存设计	148
    8.1  缓存的收益	148
    8.2  缓存的键与值	149
    8.2.1  缓存的键	149
    8.2.2  缓存的值	153
    8.3  缓存的更新机制	155
    8.3.1  时效性更新机制	155
    8.3.2  主动更新机制	156
    8.4  缓存的清理机制	159
    8.4.1  时效式清理	160
    8.4.2  数目阈值式清理	160
    8.4.3  非强引用式清理	164
    8.4.4  清理策略使用实践	166
    8.5  缓存的风险点	167
    8.5.1  缓存穿透	167
    8.5.2  缓存雪崩	168
    8.5.3  缓存击穿	168
    8.5.4  缓存预热	169
    8.6  缓存的位置	169
    8.6.1  客户端缓存	171
    8.6.2  静态缓存	173
    8.6.3  服务缓存	174
    8.6.4  数据库缓存	174
    8.7  写缓存	175
    8.7.1  写缓存的收益问题	175
    8.7.2  写缓存实践	176
    第9章  可靠性设计	178
    9.1  软件可靠性概述	178
    9.2  软件可靠性指标	179
    9.2.1  失效概率	179
    9.2.2  失效强度	179
    9.2.3  失效率	179
    9.3  模块连接方式与可靠性	180
    9.3.1  串联系统的可靠性	180
    9.3.2  并联系统的可靠性	180
    9.3.3  冗余系统的可靠性	180
    9.3.4  模块连接方式的可靠性讨论	181
    9.4  软件失效模型	181
    9.5  可靠性设计	182
    9.5.1  消除单点依赖	182
    9.5.2  化串联为并联	183
    9.5.3  采用集群	183
    第10章  应用保护	185
    10.1  应用保护概述	185
    10.2  应用保护方案	186
    10.2.1  降级	186
    10.2.2  熔断	188
    10.2.3  隔离	188
    10.2.4  限流	190
    10.2.5  恢复	195
    10.2.6  应用保护方案小结	196
    10.3  Hystrix	196
    10.3.1  运行原理	196
    10.3.2  运行设置	198
    10.3.3  命令参数	200
    10.3.4  使用举例	203
    第11章  前端高性能	218
    11.1  前端工作分析	218
    11.1.1  前端加载过程	218
    11.1.2  前端性能分析	219
    11.2  资源下载优化	221
    11.2.1  资源压缩	221
    11.2.2  减少请求	222
    11.2.3  资源缓存	227
    11.3  页面解析优化	231
    11.3.1  顺应解析流程	231
    11.3.2  应用新型前端框架	232
    11.4  懒加载	232
    11.5  预操作	233
    第12章  架构设计理论	234
    12.1  软件架构风格	234
    12.1.1  管道过滤器架构风格	235
    12.1.2  面向对象架构风格	235
    12.1.3  基于组件的架构风格	236
    12.1.4  事件驱动架构风格	236
    12.1.5  分层架构风格	236
    12.1.6  C/S架构风格	237
    12.1.7  三层C/S架构风格	237
    12.1.8  B/S架构风格	238
    12.2  软件生命周期	239
    12.2.1  需求阶段	240
    12.2.2  模型设计	241
    12.2.3  概要设计	241
    12.2.4  详细设计	242
    12.2.5  质量指标设计	242
    12.2.6  方案预研	243
    12.2.7  软件开发	243
    第13章  高性能架构实践	244
    13.1  需求概述	244
    13.2  权限系统的相关理论	246
    13.2.1  权限模型	247
    13.2.2  访问控制方式	252
    13.3  模型设计	252
    13.3.1  模型调研	253
    13.3.2  模型应用	253
    13.4  概要设计	259
    13.5  数据层详细设计	262
    13.5.1  RBAC数据表的范式设计	262
    13.5.2  RBAC数据表的反范式设计	263
    13.5.3  RBAC数据表的最终设计	265
    13.5.4  MatrixAuth管理类数据表设计	266
    13.5.5  MatrixAuth的数据层结构	268
    13.6  缓存详细设计	268
    13.7  服务端详细设计	269
    13.7.1  数据源动态切换	270
    13.7.2  数据冗余的一致性保证	271
    13.7.3  服务端的操作接口	271
    13.8  客户端详细设计	272
    13.8.1  可控角色的权限验证	273
    13.8.2  自由角色的权限验证	274
    13.8.3  用户信息、角色关联信息推送	275
    13.9  MatrixAuth项目实践总结	275
    13.9.1  MatrixAuth的高性能设计	276
    13.9.2  需求完成度分析	277
    13.9.3  MatrixAuth的使用简介	277
    
    
    
    
    
    展开

    前     言

    第2版前言
    
    转眼间,本书第1版已经发行三年多了。期间,书籍收到了不错的反响,多次登上畅销榜并发行了繁体版。作为作者,我很是欣慰,也感谢大家对本书的认可。
    在此期间,出版社和我也收到了不少反馈,了解到许多高校将本书作为教材,许多学生和编程初学者将本书作为架构入门书籍。出版社也联系我编写本书的第2版。针对以上情况,本书第2版主要进行了如下两点更新。
    首先,为方便高校师生获取书籍示例代码,第2版提供下面两种免费下载途径: 
    示例代码的开源项目:https://github.com/yeecode/PerformanceDemo
    我的主页:https://yeecode.top
    其次,为了帮助学生、编程初学者更容易地理解软件架构与高性能开发方面的知识,第2版对非关系型数据库、应用保护框架等内容进行了更详细的介绍,并附带具体的实践指导。
    在第2版即将付印之际,我还是想回顾下几年前我为什么要写作本书。
    当时,我已经出版了《通用源码阅读指导书——MyBatis源码详解》一书,向大家分享源码阅读相关的知识和技巧。书籍面市后,收到了不错的反响,有的读者表示学到了许多编程知识,有的读者表示理解透彻了MyBatis的源码,有的读者表示终于迈入了源码阅读的大门。这让我感觉每个坐在计算机前十指连弹的夜都是值得的。
    然而,我也发现很多开发者在进行软件架构设计时缺乏体系化思维,于是,只能在试错、总结中不断摸索提升,痛苦而缓慢,并且这种提升方式容易留下知识盲区。但是,这些都很难通过源码阅读来补足。
    于是,当时的我决定写一本体系化的架构书籍。书籍中不仅要包含理论知识、实践技巧、工程方案,更要将这些知识体系化地连接起来,以帮助大家建立一个完备的知识体系。
    这就是几年前我写作本书的原因。后来,本书第1版在2021年年初上市。
    在书中,我们将从“高性能架构”这一点出发,体系化地介绍高性能架构相关的各个方面。
    书中涉及很多理论知识,我尽量通过示例使它们简单易懂;书中有很多架构技巧,我尽量通过总结使它们清晰明了。本书的最后,还会以书中的架构体系为依据,融会贯通开发一套高性能的分布式权限系统。
    从理论知识,到架构技巧,再到项目实践,本书力求给出一套完整的知识体系,指引大家完成高性能系统的架构设计。
    经过这次第2版的更新后,本书的内容进一步扩充,共13章,整体结构如下。
    第1章介绍了高性能和架构这两个概念,包括高性能所代表的具体指标,架构的具体含义和主要内容。
    第2章介绍了分流设计,即如何使用内容分发网络、多地址直连、反向代理等手段将用户的请求分散到不同的系统上,从而降低每个系统的并发数。
    第3章介绍了与服务并行相关的设计。首先介绍了并行与并发的概念;然后在此基础上介绍了集群系统、分布式系统、微服务系统,包括各类系统的特点、实现难点等。服务并行设计能够进一步将系统内的请求进行分流,从而提升系统性能。
    第4章介绍了多进程、多线程、多协程等运算并发手段,并给出了相应的示例。尤其是对常见的多线程进行了深入的介绍,包括线程的状态转换、应用场景、使用方法、协作方法等。运算并发设计,能够显著提升系统的并发能力。
    第5章介绍了输入输出设计。首先介绍了IO的分类维度、层级;然后详细介绍了常见的5种IO模型,包括这些模型之间的演化逻辑,并给出了这些模型的实际使用示例。
    第6章介绍了数据库设计与优化手段。从最基本的关系型数据库设计开始,介绍了关系型数据库的设计范式、反范式。在此基础上,本章介绍了各类索引的原理、使用条件,以及各类锁的特点、死锁的产生与解除、事务及其隔离级别等。本章最后还介绍了面向巨量存储数据时数据库该如何优化。
    第7章介绍各类非关系型数据库,包括键值数据库、文档数据库、宽列存储数据库、图数据库、面向对象数据库,并对常用的数据库Redis和Elasticsearch进行了详细的讲解。
    第8章介绍了缓存设计的方法和技巧。这一章从缓存的收益说起,推导提升缓存收益的方法。然后,在此基础上,本章给出了提升缓存收益的具体实施手段,包括缓存要素的设计、更新机制的设计、清理机制的设计、风险点的处理、位置的设计等。最后,本章介绍了写缓存的收益计算和实践方案。
    第9章介绍了系统可靠性设计的相关知识。首先介绍了可靠性的概念与具体的衡量指标,然后在此基础上介绍了提升系统可靠性的手段。这一章将帮助我们构建高可靠性的系统。
    第10章介绍了应用保护的基础知识和实践手段,并深入剖析了Hystrix框架的原理与使用方法。这些知识和手段能提升应用在突发状况下的工作状况。
    第11章介绍了前端高性能的相关知识。这是一个相对独立的章节,首先分析了前端工作过程中的性能关键点,然后针对这些关键点给出了前端性能优化的手段。本章具有较强的概括性和指导性。
    第12章介绍了架构设计中软件架构设计风格和软件生命周期这两个方面的基本知识。这些知识将指导我们体系化地进行软件架构设计工作。
    第13章是一个项目实践章节。该章以前面各章介绍的高性能架构知识为依据,完整地开展了一个高性能软件系统的架构工作,包括理论推导、模型设计、概要设计、详细设计等各个环节,向读者展示了一个完整的高性能架构过程。该章节的内容能帮助读者学会如何在实践中灵活运用前面各章的知识。
    本书力求理论联系实践,既给出了高性能架构的相关理论与推导,又给出了具体的实施策略与技巧,还通过项目实践完成了一个高性能软件的架构设计。希望大家在阅读本书后能够建立高性能架构的完整知识体系。
    本书的写作出版经历了很长的过程,从规划到研究,从初稿到终稿,从编辑到印刷,从几年前的第1版到现在的第2版。在这个过程中,我要感谢许多人。期间,我得到了领导的大力支持和鼓励,得到了国内外学术及工程领域多位专家的指导。性能领域的资深专家童庭坚百忙中审阅了书籍初稿,并为本书初版作序。在本书资料收集、图片绘制等方面,崔宝顺老师贡献颇多。电子工业出版社的众多编辑也为本书倾力付出。谢谢!
    在本书第2版的筹备和写作过程中,家中也迎来了聪明可爱、萌气十足的小宝宝。
    以此书献给进进小朋友,祝他健康快乐成长。
    
    易哥      
    2024年8月于上海
    
    
    
     
    
    展开

    作者简介

    易哥,高级软件架构师,毕业于浙江大学、山东大学。擅长高并发、分布式、研发协同等领域。设计实现或负责任务协作管理系统、应用交付流水系统、通用流处理平台、抢购平台等众多系统或平台。同时也是一名活跃的开源开发者。著有书籍《通用源码阅读指导书》《高性能架构之道》《分布式系统原理与工程实践》等。
  • 样 章 试 读
    本书暂无样章试读!
  • 图 书 评 价 我要评论
华信教育资源网