本书共5章,每一章的内容几乎都是独立的,大家完全可以有选择性地阅读。第1章以大规模服务化架构作为全书的开篇,主要介绍了分布式系统架构的演变过程,以及在大规模服务调用场景下,如何实施服务治理。第2章重点介绍了在大促前夕,如何在线上实施全链路压测,以及有指导性地进行容量规划和性能优化,让系统坚如磐石。第3章重点介绍了如何有效地对流量实施管制,若采用合理且有效的方式管制住峰值流量,使其井然有序地对系统进行访问,则在任何情况下,系统就都能稳定运行。第4章重点介绍了在大促抢购的场景下,如何解决高并发读和高并发写等核心技术难题。第5章详细地介绍了关系型数据库的架构演变过程,还重点介绍了在实际的订单业务场景下,如何保证数据的最终一致性。
每一章都是重点,每一章都是解决方案
毫无保留地阐述了作者多年在互联网企业的架构设计经验
一本从实战出发的经典作品
云集在成立的 4 年多时间里,业务飞速发展,经常上演各种脉冲式销量神话,比如,一个单品单日销售额达 3 亿多元。对我们的技术团队而言,这是一个快速成长、颇具挑战的机会。翔龙是一个非常热爱技术且沉醉于技术的人,其带领的基础架构团队,在应对高并发、大流量等方面发挥了很大的作用,也积累了宝贵的一线经验。本书的所有
内容,并不是对架构理论的泛泛而谈,而是云集技术架构从 0 到 1 演变的宝贵实践经验。我崇尚技术,也推崇技术,业务能够推动技术迅速成长,技术反过来也能推动业务加速增长。
我从本书的内容中感受到:超大流量分布式系统的架构必然是简单和清晰的,是需要不断 PDCA(计划、执行、查验与行动)的,也在不断的迭代、演进中。我相信,本书所呈现的宝贵实战经验对大家大有裨益,会为大家的实际工作带来诸多帮助。
肖尚略
云集 CEO
前言
本书的创作初衷
任何一本书,都是一个用于承载和传递知识的载体,读者可以从中探寻自己想要的答案。对我而言,书本就是带我领略奇妙计算机世界的最快途径。之所以想创作一本与大型网站架构相关的书籍,是因为最近几年我在实际的开发过程中经历了太多的技术难题,每当我和我的技术团队尝试解决这些问题之前,都会先尝试从市面上现有的技术书籍中寻求解决方案;但事与愿违,目前市面上高歌架构理论的读物居多,真正讲解大型网站架构解决方案的书籍却寥寥无几。对于这块领域的空白,我想尝试着去创作,把我这些年的经历和经验写出来,让更多人受益,毕竟架构是需要落地的,否则便是一纸空谈。
本书内容重点
本书一共 5 章,而每一章的内容几乎都是独立的,大家完全可以有选择性地进行阅读。在第 1 章中,笔者特意选择了以服务化架构作为全书的开篇,结合笔者多年来的实践经验,从 0 到 1 为大家讲解了大型网站架构的演变过程,以及在大规模服务化场景下企业应该如何实施服务治理。
验证系统所能够承受的最大负载是否接近于预期,是否经得住大流量的冲击,绝非是一件易事。有过分布式系统开发经验的同学都应该非常清楚,简单对某个接口、子系统进行压测,并不能够准确探测出系统整体的容量水位,这是由分布式系统与生俱来的复杂性决定的,并且对环境、目标都有着极为严苛的要求。近些年,全链路压测似乎备受追捧,基本上各大互联网企业,比如,阿里、京东等都会在大促前夕利用自研的“军演系统”在线上进行压测实战演练,其目的就是确保大促来临时核心链路的整体稳定。在第 2 章中,笔者重点为大家介绍了如何在大促前夕对
线上环境实施全链路压测,以及如何做到有指导地在大促前进行容量规划和性能优化,让系统坚如磐石。
像天猫这种级别的大型电商网站,主要的技术挑战是来自庞大的用户规模所带来的大流量、高并发,以及海量数据,在“双 11”“双 12”等大促场景下尤为明显。如果不对流量进行合理管制,肆意放任大流量冲击系统,那么将会导致一系列的问题出现,比如一些可用的连接资源被耗尽、分布式缓存的容量被撑爆、数据库吞吐量降低,最终必然会导致系统产生雪崩效应。在第 3 章中,笔者重点讲解了如何有效地对流量实施管制,只要我们能够采用合理且有效的方式管制住峰值流量,使其井然有序地对系统进行访问,那么无论在任何情况下,系统都能够稳定运行。
热点数据的大并发读/写操作,可谓是秒杀、限时抢购等场景下最核心的 2 个技术难题。针对热点数据的大并发读操作,尽管我们可以通过分布式缓存来提升系统的 QPS,但是缓存系统的单点容量还是存在上限的,一旦超过临界水位,分布式缓存容易被瞬间击穿。而热点数据的大并发写操作,势必会下潜至数据库,那么这就会引起大量的线程相互竞争 InnoDB 的行锁,并发越大时,等待的线程就越多,这会严重影响数据库的 TPS,导致 RT 线性上升,最终导致系统发生雪崩。在第 4 章中,笔者会重点为大家讲解大促抢购核心技术难题的一系列解决方案。
在第 5 章中,笔者详细为大家讲解了在互联网场景下关系型数据库的架构演变过程。当大家清楚为什么关系型数据库需要进行分库分表后,笔者又实战演示了如何使用 Shark 中间件来完成数据路由,以及业务实施分库分表后的诸多注意事项和数据库的 HA 方案等。最后,还结合了实际的订单业务场景为大家重点讲解了如何保证数据的最终一致性。
本书面向的读者
本书适用于任何对大型网站架构感兴趣的架构师、开发人员,以及运维人员。我尽量用通俗易懂的文字描绘书中的各章知识点,更是结合了实际的业务场景引入了大量的真实案例,相信阅读完本书后你将能有所裨益。
读者讨论
由于能力有限,书中难免会出现一些错误或者不准确的地方,大家可以通过邮件 gao_xianglong@sina.com 将问题反馈给我,我会及时予以答复。
致谢
首先我要感谢我的妻子,是你的支持和鼓励才让我有了继续创作的勇气。每当我头痛欲裂思绪全无时,你的陪伴点燃了我在每个凌晨的斗志,我爱你。
其次,本书的顺利出版离不开孙学瑛老师及博文视点团队的共同努力,感谢你们的辛苦付出。最后,还要感谢那些一路支持我的读者朋友们,谢谢你们。