内容简介 · · · · · ·
本书的内容主要包含以下几部分:1) 架构设计基础,包括架构设计相关概念、历史、原则、基本方法,让架构设计不再神秘;2) 架构设计流程,通过一个虚拟的案例,描述了一个通用的架构设计流程,让架构设计不再依赖天才的创作,而是有章可循;3) 架构设计专题:包括高性能架构设计、高可用架构设计、可扩展架构设计,这些模式可以直接参考和应用;4) 架构设计实战,包括重构、开源方案引入、架构发展路径、互联网架构模板等
作者简介 · · · · · ·
阿里巴巴资深技术专家专注于Java、Linux、MySQL、开源技术、系统分析、架构设计,热爱技术,CSDN社区之星,CSDN博客认证专家,UC资深软件工程师
目录 · · · · · ·
目录
第1部分 概念和基础
第1章 架构基础
1.1 “架构”到底指什么
1.1.1 系统与子系统
1.1.2 模块与组件
1.1.3 框架与架构
1.1.4 重新定义架构
1.2 架构设计的目的
1.2.1 架构设计的误区
1.2.2 以史为鉴
1.2.3 架构设计的真正目的
1.3 复杂度来源
1.3.1 高性能
1.3.2 高可用
1.3.3 可扩展性
1.3.4 低成本
1.3.5 安全
1.3.6 规模
1.4 本章小结
第2章 架构设计原则
2.1 合适原则
2.2 简单原则
2.3 演化原则
2.4 本章小结
第3章 架构设计流程
3.1 有的放矢—识别复杂度
3.2 按图索骥—设计备选方案
3.3 深思熟虑—评估和选择备选方案
3.3.1 业务背景
3.3.2 备选方案设计
3.3.3 备选方案360度环评
3.4 精雕细琢—详细方案设计
3.5 本章小结
第2部分 高性能架构模式
第4章 存储高性能
4.1 关系数据库
4.1.1 读写分离
4.1.2 分库分表
4.1.3 实现方法
4.2 NoSQL
4.2.1 K-V存储
4.2.2 文档数据库
4.2.3 列式数据库
4.2.4 全文搜索引擎
4.3 缓存
4.3.1 缓存穿透
4.3.2 缓存雪崩
4.3.3 缓存热点
4.4 本章小结
第5章 计算高性能
5.1 单服务器高性能
5.1.1 PPC
5.1.2 prefork
5.1.3 TPC
5.1.4 prethread
5.1.5 Reactor
5.1.6 Proactor
5.2 集群高性能
5.2.1 负载均衡分类
5.2.2 负载均衡架构
5.2.3 负载均衡的算法
5.3 本章小结
第3部分 高可用架构模式
第6章 CAP
6.1 CAP理论
6.1.1 一致性(Consistency)
6.1.2 可用性
6.1.3 分区容忍性(Partition Tolerance)
6.2 CAP应用
6.2.1 CP—Consistency/Partition Tolerance
6.2.2 AP—Availability/Partition Tolerance
6.3 CAP细节
6.4 ACID、BASE
6.4.1 ACID
6.4.2 BASE
6.5 本章小结
第7章 FMEA
7.1 FMEA介绍
7.2 FMEA方法
7.3 FMEA实战
7.4 本章小结
第8章 存储高可用
8.1 主备复制
8.1.1 基本实现
8.1.2 优缺点分析
8.2 主从复制
8.2.1 基本实现
8.2.2 优缺点分析
8.3 主备倒换与主从倒换
8.3.1 设计关键
8.3.2 常见架构
8.4 主主复制
8.5 数据集群
8.5.1 数据集中集群
8.5.2 数据分散集群
8.5.3 分布式事务算法
8.5.4 分布式一致性算法
8.6 数据分区
8.6.1 数据量
8.6.2 分区规则
8.6.3 复制规则
8.7 本章小结
第9章 计算高可用
9.1 主备
9.2 主从
9.3 对称集群
9.4 非对称集群
9.5 本章小结
第10章 业务高可用
10.1 异地多活
10.1.1 异地多活架构
10.1.2 异地多活设计技巧
10.1.3 异地多活设计步骤
10.2 接口级的故障应对方案
10.2.1 降级
10.2.2 熔断
10.2.3 限流
10.2.4 排队
10.3 本章小结
第4部分 可扩展架构模式
第11章 可扩展模式
11.1 可扩展概述
11.2 可扩展的基本思想
11.3 可扩展方式
11.4 本章小结
第12章 分层架构
12.1 分层架构类型
12.2 分层架构详解
12.3 本章小结
第13章 SOA架构
13.1 SOA历史
13.2 SOA详解
13.3 本章小结
第14章 微服务
14.1 微服务历史
14.2 微服务与SOA的关系
14.3 微服务的陷阱
14.4 微服务佳实践
14.4.1 服务粒度
14.4.2 拆分方法
14.4.3 基础设施
14.5 本章小结
第15章 微内核架构
15.1 基本概念
15.2 设计关键点
15.3 OSGi架构简析
15.4 规则引擎架构简析
15.5 本章小结
第5部分 架构实战
第16章 消息队列设计实战
16.1 需求
16.2 设计流程
16.2.1 识别复杂度
16.2.2 设计备选方案
16.2.3 评估和选择备选方案
16.2.4 细化方案
16.3 本章小结
第17章 互联网架构演进
17.1 技术演进
17.1.1 技术演进的动力
17.1.2 淘宝
17.1.3 手机QQ
17.1.4 微信
17.2 技术演进的模式
17.3 互联网业务发展
17.3.1 业务复杂性
17.3.2 用户规模
17.3.3 量变到质变
17.4 本章小结
第18章 互联网架构模板
18.1 总体结构
18.2 存储层技术
18.2.1 SQL
18.2.2 NoSQL
18.2.3 小文件存储
18.2.4 大文件存储
18.3 开发层技术
18.3.1 开发框架
18.3.2 Web服务器
18.3.3 容器
18.4 服务层技术
18.4.1 配置中心
18.4.2 服务中心
18.4.3 消息队列
18.5 网络层技术
18.5.1 负载均衡
18.5.2 CDN
18.5.3 多机房
18.5.4 多中心
18.6 用户层技术
18.6.1 用户管理
18.6.2 消息推送
18.6.3 存储云与图片云
18.7 业务层技术
18.8 平台技术
18.8.1 运维平台
18.8.2 测试平台
18.8.3 数据平台
18.8.4 管理平台
18.9 本章小结
第19章 架构重构
19.1 有的放矢
19.2 合纵连横
19.2.1 合纵
19.2.2 连横
19.3 运筹帷幄
19.4 文武双全—项目管理+技术能力
19.5 本章小结
第20章 开源系统
20.1 选:如何选择一个开源项目
20.1.1 聚焦是否满足业务
20.1.2 聚焦是否成熟
20.1.3 聚焦运维能力
20.2 用:如何使用开源方案
20.2.1 深入研究,仔细测试
20.2.2 小心应用,灰度发布
20.2.3 做好应急,以防万一
20.3 改:如何基于开源项目做二次开发
20.3.1 保持纯洁,加以包装
20.3.2 发明你要的轮子
20.4 本章小结
· · · · · · (收起)
第1部分 概念和基础
第1章 架构基础
1.1 “架构”到底指什么
1.1.1 系统与子系统
1.1.2 模块与组件
1.1.3 框架与架构
1.1.4 重新定义架构
1.2 架构设计的目的
1.2.1 架构设计的误区
1.2.2 以史为鉴
1.2.3 架构设计的真正目的
1.3 复杂度来源
1.3.1 高性能
1.3.2 高可用
1.3.3 可扩展性
1.3.4 低成本
1.3.5 安全
1.3.6 规模
1.4 本章小结
第2章 架构设计原则
2.1 合适原则
2.2 简单原则
2.3 演化原则
2.4 本章小结
第3章 架构设计流程
3.1 有的放矢—识别复杂度
3.2 按图索骥—设计备选方案
3.3 深思熟虑—评估和选择备选方案
3.3.1 业务背景
3.3.2 备选方案设计
3.3.3 备选方案360度环评
3.4 精雕细琢—详细方案设计
3.5 本章小结
第2部分 高性能架构模式
第4章 存储高性能
4.1 关系数据库
4.1.1 读写分离
4.1.2 分库分表
4.1.3 实现方法
4.2 NoSQL
4.2.1 K-V存储
4.2.2 文档数据库
4.2.3 列式数据库
4.2.4 全文搜索引擎
4.3 缓存
4.3.1 缓存穿透
4.3.2 缓存雪崩
4.3.3 缓存热点
4.4 本章小结
第5章 计算高性能
5.1 单服务器高性能
5.1.1 PPC
5.1.2 prefork
5.1.3 TPC
5.1.4 prethread
5.1.5 Reactor
5.1.6 Proactor
5.2 集群高性能
5.2.1 负载均衡分类
5.2.2 负载均衡架构
5.2.3 负载均衡的算法
5.3 本章小结
第3部分 高可用架构模式
第6章 CAP
6.1 CAP理论
6.1.1 一致性(Consistency)
6.1.2 可用性
6.1.3 分区容忍性(Partition Tolerance)
6.2 CAP应用
6.2.1 CP—Consistency/Partition Tolerance
6.2.2 AP—Availability/Partition Tolerance
6.3 CAP细节
6.4 ACID、BASE
6.4.1 ACID
6.4.2 BASE
6.5 本章小结
第7章 FMEA
7.1 FMEA介绍
7.2 FMEA方法
7.3 FMEA实战
7.4 本章小结
第8章 存储高可用
8.1 主备复制
8.1.1 基本实现
8.1.2 优缺点分析
8.2 主从复制
8.2.1 基本实现
8.2.2 优缺点分析
8.3 主备倒换与主从倒换
8.3.1 设计关键
8.3.2 常见架构
8.4 主主复制
8.5 数据集群
8.5.1 数据集中集群
8.5.2 数据分散集群
8.5.3 分布式事务算法
8.5.4 分布式一致性算法
8.6 数据分区
8.6.1 数据量
8.6.2 分区规则
8.6.3 复制规则
8.7 本章小结
第9章 计算高可用
9.1 主备
9.2 主从
9.3 对称集群
9.4 非对称集群
9.5 本章小结
第10章 业务高可用
10.1 异地多活
10.1.1 异地多活架构
10.1.2 异地多活设计技巧
10.1.3 异地多活设计步骤
10.2 接口级的故障应对方案
10.2.1 降级
10.2.2 熔断
10.2.3 限流
10.2.4 排队
10.3 本章小结
第4部分 可扩展架构模式
第11章 可扩展模式
11.1 可扩展概述
11.2 可扩展的基本思想
11.3 可扩展方式
11.4 本章小结
第12章 分层架构
12.1 分层架构类型
12.2 分层架构详解
12.3 本章小结
第13章 SOA架构
13.1 SOA历史
13.2 SOA详解
13.3 本章小结
第14章 微服务
14.1 微服务历史
14.2 微服务与SOA的关系
14.3 微服务的陷阱
14.4 微服务佳实践
14.4.1 服务粒度
14.4.2 拆分方法
14.4.3 基础设施
14.5 本章小结
第15章 微内核架构
15.1 基本概念
15.2 设计关键点
15.3 OSGi架构简析
15.4 规则引擎架构简析
15.5 本章小结
第5部分 架构实战
第16章 消息队列设计实战
16.1 需求
16.2 设计流程
16.2.1 识别复杂度
16.2.2 设计备选方案
16.2.3 评估和选择备选方案
16.2.4 细化方案
16.3 本章小结
第17章 互联网架构演进
17.1 技术演进
17.1.1 技术演进的动力
17.1.2 淘宝
17.1.3 手机QQ
17.1.4 微信
17.2 技术演进的模式
17.3 互联网业务发展
17.3.1 业务复杂性
17.3.2 用户规模
17.3.3 量变到质变
17.4 本章小结
第18章 互联网架构模板
18.1 总体结构
18.2 存储层技术
18.2.1 SQL
18.2.2 NoSQL
18.2.3 小文件存储
18.2.4 大文件存储
18.3 开发层技术
18.3.1 开发框架
18.3.2 Web服务器
18.3.3 容器
18.4 服务层技术
18.4.1 配置中心
18.4.2 服务中心
18.4.3 消息队列
18.5 网络层技术
18.5.1 负载均衡
18.5.2 CDN
18.5.3 多机房
18.5.4 多中心
18.6 用户层技术
18.6.1 用户管理
18.6.2 消息推送
18.6.3 存储云与图片云
18.7 业务层技术
18.8 平台技术
18.8.1 运维平台
18.8.2 测试平台
18.8.3 数据平台
18.8.4 管理平台
18.9 本章小结
第19章 架构重构
19.1 有的放矢
19.2 合纵连横
19.2.1 合纵
19.2.2 连横
19.3 运筹帷幄
19.4 文武双全—项目管理+技术能力
19.5 本章小结
第20章 开源系统
20.1 选:如何选择一个开源项目
20.1.1 聚焦是否满足业务
20.1.2 聚焦是否成熟
20.1.3 聚焦运维能力
20.2 用:如何使用开源方案
20.2.1 深入研究,仔细测试
20.2.2 小心应用,灰度发布
20.2.3 做好应急,以防万一
20.3 改:如何基于开源项目做二次开发
20.3.1 保持纯洁,加以包装
20.3.2 发明你要的轮子
20.4 本章小结
· · · · · · (收起)
原文摘录 · · · · · ·
-
逻辑复杂几乎会导致软件工程的每个环节都有问题,假设现在淘宝将这些功能全部在单一的组件中实现,可以想象一下这个恐怖的场景: 系统会很庞大,可能是上百万、上千万的代码规模,“clone”一次代码要30分钟。 ·几十、上百人维护这一套代码,某个“菜鸟”不小心改了一行代码,导致整站崩溃。 需求像雪片般飞来,为了应对,开几十个代码分支,然后各种分支合并、各种分支覆盖。 ·产品、研发、测试、项目管理不停地开会讨论版本计划,协调资源,解决冲突。 版本太多,每天都要上线几十个版本,系统每隔1个小时重启一次。 线上运行出现故障,几十个人扑上去定位和处理,一间小黑屋都装不下所有人,整个办公区闹翻天。 (查看原文) —— 引自章节:2.2 简单原则 -
规模带来复杂度的主要原因就是“量变引起质变”,当数量超过一定的阈值后,复杂度会发生质的变化。常见的规模带来的复杂度有: 1. 功能越来越多,导致系统复杂度指数级上升 例如,某个系统开始只有 3 大功能,后来不断增加到 8 大功能,虽然还是同一个系统,但复杂度已经相差很大了,具体相差多大呢? 我以一个简单的抽象模型来计算一下,假设系统间的功能都是两两相关的,系统的复杂度 = 功能数量 + 功能之间的连接数量,通过计算我们可以看出: 3 个功能的系统复杂度 = 3 + 3 = 6 8 个功能的系统复杂度 = 8 + 28 = 36 可以看出,具备 8 个功能的系统的复杂度不是比具备 3 个功能的系统的复杂度多 5,而是多了 30,基本是指数级增长的 (查看原文) —— 引自章节:1.3.6 规模
喜欢读"从零开始学架构"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"从零开始学架构"的人也喜欢 · · · · · ·
-
- 系统架构 8.8
-
- 架构整洁之道 8.7
-
- 深入理解Java虚拟机(第2版) 9.1
-
- 面向对象葵花宝典 8.1
-
- 数据密集型应用系统设计 9.6
-
- 高伸缩性系统 9.1
-
- 持续交付2.0 8.8
-
- RabbitMQ实战指南 8.3
从零开始学架构的书评 · · · · · · ( 全部 7 条 )
从零开始学架构-书评
1、从零开始 顾名思义作者讲的还是比较大白话,通俗易懂,里面名词比较多 对于初学者来讲 能作为科普作用,相信初学者多年回味还是会醍醐灌顶。 2、对于工作多年开发工程师来讲,算是系统学习一遍架构,理解一遍架构,我认为这本书核心的点是一个架构思维,思想。为人筑造一个...
(展开)
> 更多书评 7篇
以下书单推荐 · · · · · · ( 全部 )
- 【书】所谓知识的另一种 (自娱者小五)
- 工作后购书目录 (张小国)
- T (dhcn)
- 分布式系统架构书单 (joesay)
- 书单|技术 (yahkun)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有1716人想读,手里有一本闲着?
订阅关于从零开始学架构的评论:
feed: rss 2.0


0 有用 zongzuanfeng 2022-03-27 20:29:07
4.5星,比较适合作为整体梳理的参考书。
0 有用 之恒 2022-10-17 09:41:18 广东
架构思路
0 有用 龙在田 2022-11-06 15:34:40 浙江
概览书,全面但不深。这个领域是国内互联网大厂研发部门积累了足够多经验的地方,优势和路径依赖可能都在于此。
0 有用 常典尔竹箱 2020-05-13 11:05:17
适合产品快速过一遍架构知识的框架
0 有用 Realricecake 2023-03-18 10:06:31 上海
guideline之类的书,说的挺全面的,但内容很浅,实操价值不大。