罗马不是一天建成的,能够支撑亿级交易量的大型网站也不是一蹴而就的。作者以一名亲历者的身份,阐述了一个大型网站在数年时间内从雏形成长为巨人时所经历的技术选型思考、方案选择,以及遇到的众多性能瓶颈和优化方案。
全书可分成上下两篇。上篇主要介绍整个网站由于业务发展所经历的几次主要的架构演进,包括从PHP 到Java 的改造、分布式改造、无线化改造、中台的改造、国际化改造。下篇主要介绍如何从不同的层次解决整个网站在大流量情况下遇到的性能瓶颈,包括端和管道的优化、应用层代码级优化、应用架构的优化、端到端的全链路优化。最后介绍做架构和性能优化的过程中必须面对的稳定性问题——如何体系化地解决网站的稳定性,是非常关键的。
书中提供的经验教训、优化思路,对于相关从业人员而言,均是宝贵的参考。
2018-06-12《大型网站技术架构演进与性能优化》从一名亲历者的角度,阐述了一个网站在业务量飞速发展的过程中所遇到的技术转型等各种问题及解决思路。从技术发展上看,网站经历了Web应用系统从分布式、无线多端、中台到国际化的改造;在解决大流量问题的方向上,涉及了从端的优化到管道到服务端甚至到基础环境优化的各个层面。
《大型网站技术架构演进与性能优化》总结的宝贵经验教训可以帮助读者了解当网站遇到类似问题时,应如何思考不同的解决思路、为什么要这样做、并最终做出合适的方案选择。
君山经历了淘宝网发展速度和架构变化最快的时代,这是一个机会和挑战并存的时代,许许多多无法用常理理解的需求不断涌现,许许多多从未遇见过的问题横在面前,许许多多新的创新的解法横空出世!君山把传统的软件工程开发理念和新机遇下的技术创新相结合 ,在性能优化领域不断创新:小到字节码层面的优化、大到架构上的重建——他的探索工作在淘宝网的技术发展史留下了痕迹。
君山做事情有几个特点:一是能把技术和业务相结合 ,在处理业务需求和问题时轻车熟路,在处理完业务需求的同时还会带来技术上的创新;二是善于推动技术创新落地,用自己的实践诠释了“创新只有被人使用、在业界形成潮流才算是真正的创新”这句话;三是善于总结思考,他每次都把技术和业务上遇到的问题和解法总结下来,并乐于分享,让团队共同成长!
——阿里巴巴研究员 小邪
做技术做到后期才会发现写代码并不是全部。随着业务的快速迭代,对系统的架构演进和相关技术的权衡会变得越来越重,在不同的阶段会有不同的取舍。特别是大型系统,除了要考虑技术,还要考虑相匹配的组织架构、工程文化等因素——这些挑战是很难通过亲历来获取的,毕竟成功的大型系统不算太多。
作者曾是淘宝网一线的技术专家,亲身经历了淘宝网业务飞速增长的过程,并将其中的经验和学习的过程记录下来,完整地为我们展现了一个初级系统在演化成一个全球、分布式的系统的过程中,从语言选择、分布式框架改造、平台化演进、系统优化到稳定性建设等关键过程的思考,内容翔实可信。从这些最佳实践中,技术点也许并不是最重要的,读者可收获多维度的启发和共鸣,推荐阅读!
——阿里云研究员 禇霸
一家伟大的互联网企业一般都离不开高超技术的支撑,而高超技术的养成又离不开每天迎面而来的各种挑战。本书作者有幸经历了淘宝网这些年的技术巨变,碰到了无数的问题,积攒了很多并发架构设计和性能优化的经验。好的架构是一个系统的根本,好的性能是一个系统稳定运行的保证,本书应该可以给大家带来不一样的收获。
——PerfMa CEO 你假笨(寒泉子)
针对C端用户的互联网业务是爆发式的、井喷式的,其带来的用户流量压力和对计算能力的要求也是非常惊人的,如何利用廉价的架构设计来部署分布式服务以应对亿级流量的场景是个非常严峻的问题。《大型网站技术架构演进与性能优化》一书讲解了高可用架构演化的进程,并提供了互联网架构性能优化的方法。正所谓互联网技术唯“快”而不破——解决了性能问题,其他问题也就迎刃而解。如果你的业务正处于流量并发暴增与系统架构变革的十字路口,那么本书恰好就是你的菜。这是一本关于互联网高并发架构设计的优秀书籍,它从各角度剖析系统设计的演化与优化,循序渐进地将一系列复杂问题阐述得清晰、简单、易懂,是一本理论与实践相结合的实用书籍。
——《分布式服务架构:原理、设计与实战》、《可伸缩服务架构:框架与中间件》作者 李艳鹏
对于一个高并发大流量网站的架构师而言,你的系统到底能够承受多高的并发、多大的流量,只有在你的系统经历了更高的并发、更大的流量以后才能知道。事前再多的设计、评审、测试、预演也只能让你相信,而不能让你知道。淘宝网作为全球最大的电子商务网站,每年的双十一都会承受这个星球上可能是最大的并发访问压力,那么淘宝的技术人员遇到了哪些挑战?做了哪些工作?感谢这本《大型网站技术架构演进与性能优化》,让我们一窥究竟。
——《大型网站技术架构:核心原理与案例分析》作者 李智慧
君山老师曾多次出席技术大会SDCC担任讲师及出品人,为技术总监、架构师等参会者带去了很多干货实料的分享。实践出真知,任何脱离实际工作的讨论无疑在浪费宝贵的时间成本,作者在淘宝网经历了Web应用系统从分布式、无线多端、中台以及到国际化的改造;在解决大流量问题的方向上,积累了很多从端的优化到管道到服务端甚至到基础环境优化的经验,这些助力他真正成为我们技术社区的明星专家,相信此书肯定会给广大的技术开发者带去最为一线的知识和成长。
——CSDN主编 钱曙光
1 构建大型网站:分布式改造 1
1.1 为什么要做分布式化 1
1.2 典型的分布式架构 2
1.3 分布式配置框架 4
1.4 分布式RPC 框架 6
1.5 分布式消息框架 8
1.6 分布式数据层 11
1.7 分布式文件系统 12
1.8 应用的服务化改造 15
1.9 分布式化遇到的典型问题 16
1.10 分布式消息通道服务的设计 19
1.11 典型的分布式集群设计思路 21
1.12 总结 24
2 无线化:无线时代下的架构演进 26
2.1 无线环境下的新挑战 26
2.2 端的演进 28
2.3 无线链路的优化 32
2.4 服务端的演进 36
2.5 思考:开发语言选择的思考 44
2.5 总结 46
3 大型网站平台化演进:大中台小前台 49
3.1 为什么需要中台 49
3.2 什么是中台 53
3.3 提升中台的效率 55
3.4 中台是否能解决一切问题 64
3.5 总结 65
4 全球化下的网站演进:全球部署方案 66
4.1 国际化的背景 67
4.2 面临的技术挑战 68
4.3 全球部署的目标架构 69
4.4 何为单元化 69
4.5 单元化解决什么问题 70
4.6 单元化数据分片方案 70
4.7 数据路由方案 74
4.8 接入层路由 78
4.9 服务层路由 79
4.10 数据层路由 81
4.10 Sequence ID 的冲突问题 83
4.11 异地多活 84
4.12 多语言问题 85
4.14 多时区问题 86
4.15 全球数据同步与数据路由 89
4.16 通用版与定制版的选择 90
4.17 全球化部署中遇到的坑 91
4.18 总结 92
5 应用程序优化:代码级优化 93
5.1 优化思路 93
5.2 影响性能的关键因素 97
5.3 Java 特性的优化 102
5.4 减少并发冲突 104
5.5 减少序列化 105
5.6 减少字符到字节的转换 105
5.7 使用长连接 106
5.8 总结 106
6 应用架构探索:合并部署 108
6.1 什么是架构 108
6.2 什么是合并部署 110
6.3 能解决什么问题 112
6.4 如何解决 114
6.5 取得的效果 118
6.6 更进一步地做多版本部署 118
6.7 关于高密度部署的思考 121
6.8 总结 122
7 链路优化:大秒系统的极致优化思路 123
7.1 一些数据 123
7.2 热点隔离 124
7.3 动静分离 125
7.4 基于时间分片削峰 133
7.5 数据分层校验 134
7.6 实时热点发现 136
7.7 关键技术优化点 137
7.8 大促热点问题思考 140
7.9 总结 141
8 全局基础设施优化:资源调度优化 142
8.1 什么是资源调度 142
8.2 资源抽象层 144
8.3 物理资源调度 149
8.4 应用层调度 152
8.5 遇到的问题 155
8.6 总结 164
9 网站高可用建设:大型网站的稳定性建设 165
9.1 故障带来的影响 165
9.2 网站的可用性指标 166
9.3 稳定性建设思路 167
9.4 高可用体系化建设 171
9.5 研发人员的转变 180
9.5 稳定性组织保障 182
9.6 疑难问题排查思路 183
9.7 总结 190
附录 给新人成长的几点建议 191
参考资料 197