新書推薦:
《
银行业架构网络BIAN(全球数字化时代金融服务业框架)(数字化转型与创新管理丛书)
》
售價:NT$
449.0
《
金托邦:江湖中的沉重正义
》
售價:NT$
275.0
《
易经今解:释疑·解惑·见微
》
售價:NT$
403.0
《
东欧史(全二册)-“中间地带”的困境
》
售價:NT$
1010.0
《
虚拟资本:金融怎样挪用我们的未来
》
售價:NT$
352.0
《
刻意练习不生气
》
售價:NT$
179.0
《
大宋理财:青苗法与王安石的金融帝国(全彩插图本)
》
售價:NT$
500.0
《
安全感是内心长出的盔甲
》
售價:NT$
305.0
|
編輯推薦: |
?沉浸式设计:基于多个真实大厂架构设计文档进行重构,通过贴合真实高并发工作场景的设计文档形式、求同存异的典型系统架构设计方案,体验作为大厂架构师的沉浸式设计心路。?实用性强:本书介绍的多个应用场景与技术方案,可解决现实工作中80%以上的高并发共性问题,真正做到学以致用。?知识体系完备:本书介绍的知识点覆盖面广,应用场景多,包括微博、百科、搜索引擎、短视频、交友软件、网约车等各种应用,以及秒杀系统、区块链架构、分布式存储、DDD重构等关键技术,构建了完整的高并发系统架构知识体系。?内容专业:作者李智慧是知名架构师,将自己多年的实践经验和理论知识融合,让读者真正、全面地理解高并发系统开发。?读者好评如潮:本书内容由极客时间畅销专栏改编、扩充而来,内容广受读者好评。
|
內容簡介: |
本书包含 20 余个高并发系统案例,每个案例看似相互独立,实则相辅相成。根据高并发系统的特点,高并发与高性能、高可用的关系,本书分为 6 篇。基础篇,概要介绍专栏所用的软件建模方法、设计文档写法、高并发架构设计方法。高并发系统的海量数据处理架构篇,讨论海量数据如何存储、如何传输、如何进行并发控制。高并发系统的高性能架构篇,讨论在高并发场景下,如何保证系统的响应性能。高并发系统的高可用架构篇,通过微博、百科、限流器等架构案例分析,寻求保障高并发系统高可用的方案。安全系统架构篇,通过Web防火墙、加解密平台、区块链设计等,讨论面对恶意请求、敏感数据泄露的风险,如何保证系统足够安全可靠。网约车架构专题篇,深入讨论一个网约车架构。
|
目錄:
|
CONTENTS
目 录
前言
第1章 系统架构蓝图:软件建模与文档1
1.1 软件建模2
1.2 软件设计方法3
1.2.1 类图3
1.2.2 时序图4
1.2.3 组件图5
1.2.4 部署图6
1.2.5 用例图7
1.2.6 状态图8
1.2.7 活动图8
1.3 软件设计文档10
1.4 小结12
第2章 面对高并发如何对症下药13
2.1 高并发系统架构的方法论14
2.2 高并发系统架构的主要技术15
2.2.1 分布式应用15
2.2.2 分布式缓存17
2.2.3 分布式消息队列17
2.2.4 分布式关系数据库18
2.2.5 分布式微服务19
2.3 系统并发指标20
2.4 小结21
第3章 百亿短URL生成器设计23
3.1 需求分析24
3.1.1 短URL生成器的用例图25
3.1.2 性能指标估算25
3.1.3 非功能性需求26
3.2 概要设计27
3.2.1 单向散列函数生成短URL27
3.2.2 自增长短URL28
3.2.3 预生成短URL28
3.2.4 整体部署模型28
3.3 详细设计32
3.3.1 重定向响应码32
3.3.2 短URL预生成文件及预加载33
3.3.3 用户自定义短URL34
3.3.4 URL Base64编码35
3.4 小结36
第4章 千亿级网页爬虫设计38
4.1 需求分析39
4.1.1 性能指标估算39
4.1.2 非功能性需求39
4.2 概要设计41
4.2.1 爬虫处理流程42
4.2.2 系统部署模型44
4.2.3 分布式爬虫45
4.3 详细设计46
4.3.1 URL调度器算法46
4.3.2 去重算法50
4.3.3 高可用设计50
4.4 小结51
第5章 万亿GB网盘系统设计53
5.1 需求分析54
5.1.1 负载指标估算55
5.1.2 非功能性需求55
5.2 概要设计56
5.3 详细设计60
5.3.1 元数据库设计60
5.3.2 限速61
5.3.3 秒传61
5.4 小结63
第6章 支撑3000万用户同时在线的短视频系统设计64
6.1 需求分析65
6.2 概要设计66
6.3 详细设计70
6.3.1 视频存储系统设计70
6.3.2 性能优化与CDN设计72
6.3.3 缩略图生成与推荐设计73
6.4 小结76
第7章 高可用分布式存储系统设计77
7.1 需求分析78
7.2 概要设计79
7.3 详细设计80
7.3.1 路由算法80
7.3.2 高可用设计83
7.3.3 集群伸缩设计86
7.4 小结87
第8章 应对万人抢购的秒杀系统设计89
8.1 需求分析90
8.1.1 独立开发部署秒杀系统90
8.1.2 防止跳过秒杀页面直接下单90
8.2 概要设计90
8.2.1 独立秒杀系统页面设计91
8.2.2 秒杀系统的流量控制92
8.2.3 秒杀活动启动机制设计95
8.2.4 秒杀系统部署模型96
8.3 小结98
第9章 基于LBS的交友系统设计99
9.1 需求分析100
9.2 概要设计101
9.3 详细设计102
9.3.1 SQL邻近算法103
9.3.2 地理网格邻近算法104
9.3.3 动态网格算法105
9.3.4 GeoHash算法107
9.3.5 Liao的终算法选择111
9.4 小结112
第10章 全网搜索引擎设计113
10.1 概要设计114
10.2 详细设计116
10.2.1 索引116
10.2.2 PageRank排序算法120
10.3 小结123
第11章 反应式编程框架设计124
11.1 需求分析125
11.2 概要设计127
11.3 详细设计129
11.3.1 服务注册131
11.3.2 流程编排132
11.3.3 流式微服务设计133
11.4 小结136
第12章 支撑亿级用户的微博系统设计138
12.1 需求分析139
12.1.1 功能需求139
12.1.2 性能指标估算140
12.2 概要设计141
12.3 详细设计144
12.3.1 微博发表/订阅问题144
12.3.2 缓存使用策略146
12.3.3 数据库分片策略148
12.4 小结149
第13章 百科应用系统设计150
13.1 概要设计151
13.1.1 整体架构设计151
13.1.2 多数据中心架构153
13.2 详细设计156
13.2.1 前端性能优化156
13.2.2 服务端性能优化157
13.2.3 存储端性能优化157
13.3 小结158
第14章 高可用的限流器设计160
14.1 需求分析161
14.2 概要设计161
14.2.1 限流模式设计162
14.2.2 高可用设计163
14.3 详细设计163
14.3.1 配置文件设计164
14.3.2 固定窗口限流算法165
14.3.3 滑动窗口限流算法167
14.3.4 漏桶限流算法168
14.3.5 令牌桶限流算法171
14.4 小结172
第15章 安全可靠的Web应用防火墙设计174
15.1 需求分析175
15.2 概要设计176
15.3 详细设计179
15.3.1 XSS攻击179
15.3.2 SQL注入攻击182
15.3.3 CSRF攻击184
15.3.4 注释与异常信息泄露185
15.4 小结186
第16章 敏感数据的加解密服务平台187
16.1
|
內容試閱:
|
前 言
很多软件工程师的职业规划是成为架构师,但是要成为架构师很多时候要求先有架构设计经验,而不做架构师又怎么会有架构设计经验呢?那么要如何获得架构设计经验呢?一方面可以通过工作来学习,观察所在团队的架构师是如何工作的,协助他做一些架构设计和落地的工作。同时,思考如果你是架构师,你将如何完成工作,哪些地方可以做得更好。
另一方面,也可以通过阅读来学习,看看那些典型的、耳熟能详的应用系统是如何设计的。同样,你也可以在阅读的过程中思考:如果你是这个系统的架构师,将如何进行设计?如何输出你的设计结果?哪些关键设计需要进一步优化?
通过这样不断地学习和思考,你就会不断积累架构设计的经验,等你有机会成为架构师的时候,就可以从容不迫地利用你学习与思考获得的经验和方法,开始你的架构师职业生涯。
本书的所有案例都是基于真实场景的,甚至有些案例本身就是由真实设计文档改编的。希望你在阅读本书的过程中,能把自己带入真实的系统设计场景中,把文章当成真实的设计文档,把自己想象成文档作者的同事,也就是说,你正在评审我做的设计。
你可以一边阅读一边思考:这个设计哪些地方考虑不周?哪些关键点有缺漏?然后你可以把自己的思考记录下来,当作你的评审意见。重要的是,通过这种方式,你拥有了和我一样的关于每一个软件设计案例的现场感:你不是一个阅读书籍的读者,而是置身于互联网大厂的资深架构师,你在评审同事的设计,也在考虑公司的未来。
本书特点
本书主要针对高并发系统架构设计的典型应用场景,采用标准的软件架构设计文档格式,描述如何设计常见的高并发系统架构,期望能够帮助你站在大厂架构师的视角,理解高并发系统的设计思路。
为了帮助你获得这种身临其境的大厂架构师视角,本书提供了三条途径。
足够真实的高并发系统设计场景
高并发是系统架构设计的核心,也是很多大厂的关注焦点。在应聘大厂架构师岗位的时候,如果你对高并发架构说不出什么,恐怕面试就凶多吉少了。但是看过了不少高并发系统设计的技术资料之后,你可能还是会有这样的困惑:为什么我还是对设计一个完整的高并发系统没有概念?
这主要是因为你学习的是具体的高并发架构知识,而不是学习一个完整的高并发系统如何设计,所以也就无法形成一个整体的系统架构设计思路。
本书大部分案例都是针对我们日常接触的各种高并发应用的,比如微博、短视频、网约车、网盘、搜索引擎等,具体又分为高并发系统的海量数据处理架构、高性能架构、高可用架构以及安全架构。
在学习这些系统架构设计案例的时候,一方面可以学习各种应用系统如何进行整体设计,另一方面也可以学习高并发系统架构设计的模式和技巧,两者结合起来,就是一个完整的高并发系统设计的知识体系。
贴合工作场景的设计文档形式
你可能会觉得设计文档和自己关系不大:一是平时不怎么写,也不愿意写,觉得写文档价值不大;二是自己不擅长写文档,觉得写也写不好,甚至不太知道设计文档该怎么写。
但工作了这么多年,我发现写东西可以帮助人更好地思考。技术人员如果不写设计文档,就会缺少对技术的深刻思考,缺乏对技术方案的优点和缺点的系统认识,也就不知道如何找到更好的技术和更合理的方案。很显然,这会阻碍技术人员的职业发展。
不仅如此,如果不写设计文档,缺乏对技术的深度思考,那么开发出来的软件就缺乏创新,产品在市场上就缺乏竞争力。
可以粗暴一点地说:没有设计文档就没有设计,没有设计就没有技术的进步。
所以,本书将以软件设计文档的形式去展现一系列软件的系统架构设计,这些设计文档的风格是相对统一的。我希望你可以在这些“重复”的设计文档所展现的组织方式、软件建模与架构方式中,掌握一般的软件设计方法和软件设计文档的写作方法。
求同存异的典型系统架构案例
我精挑细选了18个系统架构案例,这些案例大多是目前大家比较关注的高并发、高性能、高可用系统。它们是高并发架构设计的优秀“课代表”,它们的技术可以解决现有的80%以上的高并发共性问题。所以在阅读文档的过程中,你可以进一步学习与借鉴这些典型的分布式互联网系统架构,构建起自己的系统架构设计方法论,以指导自己的工作实践。
为了避免每篇文档中都出现大量重复、雷同的设计,我在内容方面进行了取舍,精简了一些常规的、技术含量较低的内容,而尽量介绍那些有独特设计思想的技术点,尽可能做到在遵循设计文档规范的同时,又突出每个系统自己的设计重点。
此外,本书中还有一部分设计是针对大型应用系统的,比如限流器、防火墙、加解密服务、大数据平台等。
但需要强调一点,本书会针对这些知名的大厂应用重新进行设计,而不是分析现有应用是如何设计的。一方面,重新设计完全可以按自己的意愿来,不管是设计方案还是需求分析、性能指标估算,都是一件很有意思的事;另一方面,因为现有应用中的某些关键设计并没有公开,我们要想讨论清楚这些高并发应用的架构设计,没有现成的资料,还是需
|
|