序言
当今IT 技术的发展越来越快,更新换代可谓日新月异,让从业者们应接不暇。然而,无论技术如何变化和发展,有些恒久而弥新的知识和能力,依然可以稳定地沉淀下来,它们跨越了不同的开发语言、不同的运行平台,始终是我们关注的焦点。
架构,在每年的技术大会上都是热门的话题。架构的关键设计在很大程度上决定了一个系统的非功能属性,如可用性、可扩展性和可维护性等。这也是我们如此重视架构的原因,一个好的架构就像一个好的制度,我们虽然不会时时刻刻感受到它的存在,但在关键时刻,它决定了系统能够到达的高度。
现实的系统往往很复杂,很难表述,它包含了太多的细枝末节,以及未来的不断变化。但优雅而简洁的架构设计能在很大程度上将系统的精髓剥离和抽象出来,化繁为简,以不变应万变。无论什么时候,衡量一个系统的架构设计是否优秀的标准都是高可用、高性能、低成本和高扩展性,例如:
在遇到各种突发网络状况,甚至单个机房发生故障时,系统是否依然稳定运行,高可用;
在亿万量级访问的高并发下,系统是否能在7×24 小时内一直稳定运行,是否能在毫秒级别依然准确而稳定地返回数据;
如果业务访问量超出预期、成倍增加,系统是否不需要修改大量代码,只需要调整配置,扩容服务器,即可快速支持;
如果业务需求快速变化,系统是否可以通过业务架构的良好扩展能力,无须大量改动代码就能够轻松应对……
要想实现上述目标,完成一个优秀的架构设计,必须以架构师丰富的实战经验为依托。而在何种场景下采用何种架构设计,并真正解决问题,才是体现架构师能力的关键。所以,要想成为一名优秀的架构师,需要技术人员保持“空杯心态”,不断地学习、交流、实践,才能修成正果,这也是我们出版这本书的初衷。
从2016 年开始,我们持续在“携程技术”微信公众号发表相关文章,每年年底还会编辑成合辑,和大家分享携程每年的技术成长和经验积累。2019 年年初,电子工业出版社的编辑联系我们,希望我们把这几年的相关文章编撰成书以整体呈现携程的技术架构,大家一拍即合,于是有了本书。
虽然介绍特定技术产品架构的文章很多,但能在一本书中将整个公司的技术架构浓缩是很难得的。本书可以帮助读者了解支撑一家大型企业所需要的核心技术产品,以及它们的架构和面临的挑战。不同领域的架构关注点各有侧重,但是方法论是相通的。希望读者通过本书了解携程的架构实践,拓宽视野,丰富自己的架构工具箱,在遇到难题时,看看其他领域的解决思路,就可能碰撞出意想不到的“火花”。
携程技术副总裁 李小林
前言
重回首,去时年,揽尽风雨苦亦甜。不知不觉,携程已经走过了20 多年的历程。多年来,携程不断地深耕在线旅游(OTA)行业,力求为用户提供更加多元、舒适的服务。时至今日,作为国内优秀的OTA 企业,携程正逐渐成为推动全球旅游行业发展的中坚力量。
与众不同的业务基因,决定了携程必须走出一条适合自身发展的技术道路。随着携程业务规模的快速扩张,其技术体系也在持续沉淀。技术领域没有银弹,技术体系必然会随着业务需求的变更而不断演进,并且在演进过程中,每一次成功或失败所积累的经验教训都会在下一次实践过程中得到体现。本书将从流量接入层、后端系统和技术保障三方面出发,介绍携程在各个技术领域的最新实践及相关思考。
第一部分主要介绍流量接入层。流量接入层是用户使用携程服务的入口,直接影响用户的服务体验。这部分首先介绍携程在前端技术领域,尤其是移动开发框架与周边设施的实践方案;然后阐述如何通过提升网络层访问的性能和质量,来进一步改善用户体验;最后解析携程优质服务的核心系统——呼叫中心是如何构建的。
第二部分主要介绍后端系统。可靠的后端系统是处理海量用户请求的关键,其主要特征包括高可用、高并发、高性能。这部分从分布式消息队列、微服务、配置中心等核心中间件入手,剖析携程在框架中间件体系建设过程中遇到的一系列难题及其应对措施。同时针对如何构建高效、可靠的数据访问层及存储体系等,与读者进行深入探讨。
第三部分主要介绍技术保障。产品从立项到研发、测试、上线,再到运行时的监控、弹性扩缩容,其生命周期的每一个阶段都需要完善的技术保障支持。这部分涵盖了持续集成、监控告警及多数据中心架构等内容,以及携程如何在持续提升研发效率的同时,降低甚至避免快速迭代对网站可用性产生的负面影响。
中国抓住了信息革命的机遇,造就了很多世界级的互联网公司,也拥有了众多互联网领域的“独角兽”,但市场上还没有能够全面介绍一家公司的完整技术体系的书籍,本书的初衷正在于此。我们从一线研发工程师中遴选出本书的作者团队,将架构演进过程中遇到的挑战、走过的弯路及最新的实践方案编撰成书,在给读者呈现携程技术架构体系的同时,也希望给读者带来一些启发,共同推动技术进步。
我们并不完美,但我们心怀敬畏。愿各位永葆对技术的憧憬与热忱。
《携程架构实践》编委会