从零开始学架构:照着做,你也能成为架构师 出版时间:2018内容简介 架构设计是技术人员成长和晋升过程中必须掌握的技能,但目前业界缺乏架构师学习和培养方面体系化的知识和实践的指导,本书结合作者多年在架构设计方面的学习、思考、实践,提出了完整的一套架构设计方法论,包括什么是架构、架构设计的目的、架构设计原则、架构设计流程、架构设计模式和技巧、互联网公司技术演进等内容。这套架构设计方法论适合不同行业,比如互联网、企业应用等;也适合不同的技术领域,比如后端架构设计、前端架构设计、客户端架构设计、测试平台架构设计、运维平台架构设计等。 本书由浅入深地阐述了架构设计的相关内容,比较适合以下类型的读者: · 没有架构设计经验,但对架构设计非常有兴趣,希望学习架构设计技术,提升技术能力,成为“大厂面霸”的读者; · 已经尝试了一些架构设计,但挖了各种“坑”或踩了各种“坑”,希望知道“为什么”的技术人员; · 具备一定的架构设计经验,想进一步系统化地提升架构设计能力,成为令人羡慕的“高级技术专家”“资深技术专家”的读者。目录第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 NoSQL4.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 PPC5.1.2 prefork5.1.3 TPC5.1.4 prethread5.1.5 Reactor5.1.6 Proactor5.2 集群高性能5.2.1 负载均衡分类5.2.2 负载均衡架构5.2.3 负载均衡的算法5.3 本章小结第3部分 高可用架构模式第6章 CAP6.1 CAP理论6.1.1 一致性(Consistency)6.1.2 可用性6.1.3 分区容忍性(Partition Tolerance)6.2 CAP应用6.2.1 CP―Consistency/Partition Tolerance6.2.2 AP―Availability/Partition Tolerance6.3 CAP细节6.4 ACID、BASE6.4.1 ACID6.4.2 BASE6.5 本章小结第7章 FMEA7.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 手机QQ17.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 SQL18.2.2 NoSQL18.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 CDN18.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 本章小结 上一篇: 反应式Web应用开发 下一篇: 图解深度学习与神经网络:从张量到TensorFlow实现