勤奋好学又乐于分享,他就深读了不少开源框架源码
优采云 发布时间: 2021-06-06 20:01勤奋好学又乐于分享,他就深读了不少开源框架源码
前言 1
凯涛勤奋好学,乐于分享。他很早就阅读了大量开源框架源代码,对内核技术了如指掌。他也喜欢看技术英雄的分享,不断与同行交流,学以致用。工作之初,我站在了更高的起点,所以在做系统方面我往往比同龄人更有信心,成绩也更突出。他感恩开源共享,也在践行开源共享之路。每次沉浸在探索中后,他都有一个仔细的总结。有博客就写博客,有微信公众号就发公众号,总结自己的所学和实践。出来的东西是无私的分享。
网站直接面对广大客户,是公司的门户。它必须快速响应,必须持续可用,并且必须能够抵御洪水。任何网站在开发过程中遇到问题,影响客户体验和商业利益。公司业务规模越大,网站的损失就越大。进入京东后,作者在构建永不消失的“网站”上花费了大量精力。作者与同事们一道,攻克了一个又一个难题,把这个口号变成了现实。
本书是高层建筑,抓住了*敏*感*词*高并发网站设计的核心,从设计原理,到高性能、高吞吐量、高可用的系统设计,再到高度灵敏的监控系统概念,以及对应急方案的制定,不失细节,不拘泥于细节。与其他已出版的*敏*感*词*网站架构书籍相比,本书更贴近实战,追求实用性。所有内容均来自实战。 文章的内容也在与同事和网友互动后有所改进。这本书也是
没有段落只是为了构建一个“完整的系统”而充当填充物。本书特别适合快速成长公司网站的建设者,以及互联网行业的研发人员。对更*敏*感*词*的网站的重建也具有参考意义。阅读本书可以避免走弯路和陷阱。 ,许多策略和技巧可以直接使用以节省时间。作为这本书的第一批读者,我发现这本书的内容组织具有参考书的特点,并没有严格的预依赖。可以按章节顺序阅读,也可以随机选择中间章节。文章中公布了作者的*敏*感*词*,方便大家有问题交流。最后希望本书不要成为网站框架共享的终结者。希望更多的同学加入探索与分享的团队,继续克服新的挑战,分享更多的新成果。
——京东商城副总裁、京东Y事业部负责人于永利
前言 2
我们的互联网开发人员都有过这样的经历。构建一个设计精良、功能丰富的网站 并不是一件遥不可及的事情。但要能够支撑庞大的流量,自由地运行,也并不容易。然而,当你有了《亿流量网站架构核心技术》这本书时,这一切又变得如此简单。
《亿流量网站架构核心技术》一书详细阐述了网站高并发高可用开发的一系列关键原则和问题。深入分析如何实现系统高可用和高并发。本书引用了大量真实应用案例,帮助读者深入了解相关知识,让枯燥的讲道变得生动活泼。
本书作者长期服务于京东研发一线,拥有丰富的软件开发经验。秉承对技术的热爱,我们致力于互联网开发者。我希望他的读者能从这本书中受益。
——京东集团首席技术顾问翁志
前言 3
经历过“双11”和“618”的同学都知道,大促期间如何保证系统的高并发、高可用非常重要。因此,在准备大促的时候,一些通用的原则和经验可以帮助我们在遇到高并发时构建更多可用的系统,比如限流、降级、横向扩展、隔离解耦等。通过这些原则,可以在流量超出预期时很好地保护系统,避免因冲击导致系统不可用。
京东在过去遇到过一些高可用问题,比如不合理的超时设置和系统崩溃;限流措施不足,导致负载过高时系统死机;不完全解耦,导致服务崩溃。依赖服务受到影响等,这些都是系统开发运维中非常常见的问题,只要开发者在开发系统时注意这几点,就可以避免。本书的高可用性部分可以帮助读者很好地解决这些问题。
有些人经常讨论如何提高系统性能。最直接的解决方案是扩容,或者通过增加缓存来增加系统的并发,或者使用队列来降低流量高峰,或者使用异步并发机制来提高吞吐量或者接口。性能等。这些技术都是陈词滥调,并不新鲜,但非常实用,人们在实现高并发系统时经常会遇到。本书的高并发部分可以帮助读者理解和使用这些技术。
本书还有一部分介绍了实战案例,包括京东0级系统的“商品详情页”和“商品详情页统一服务”系统。这两个系统每天承载着京东数十亿的流量。深入讲解了这两个系统的核心技术,还通过案例详细介绍了如何使用OpenResty设计开发高性能Web应用,值得仔细阅读。
本书最大的特点就是实用性。书中的原理和经验都是在实战中总结和演进的。市场上系统地介绍高可用和高并发的文章并不多,甚至更少,而且很多都散落在网上。开淘是京东的优秀架构师。具有较强的架构抽象能力、扎实的编程基础能力和丰富的实践经验。他把这些原理整理成一个系统,并添加了很多案例,相信可以帮助读者很好地学习。
并运用这些原则,让读者在读完本书后能够实施实际的项目。
——京东集团架构师吴波
前言 4
*敏*感*词*互联网服务需要不断构建网站系统,通过PC、手机等各种终端与用户进行交互。高流量网站架构如何支持高并发访问并保证高可用,是一个持久且极具挑战性的技术课题。可以毫不夸张地说,互联网行业无数工程师为之奋斗。
开涛是京东优秀技术人才的典型代表。他从研发第一线起步,成长为核心架构师。他的《亿流量网站架构核心技术》分享了高可用高并发网站构建技术,干货十足,特色鲜明。
首先,理论联系实际。本书不仅总结了一系列技术方法论,而且结合实际案例,深入浅出。读者可以直接将这些实用技巧应用到日常工作中。
第二,深度和广度。本书选题非常中肯,侧重于高可用高并发的技术实践,每个方面都详细讲解了一系列技术细节。
第三,技术和业务并重。开淘不单纯谈技术,而是聚焦京东重要业务产品之一的产品详情页,进行进一步的实践经验分享,让读者从业务需求到技术架构都有一个完整的视角。
第四,适合新兵和退伍军人。无论您是人事软件开发第一年的工程师,还是工作多年的老手,都可以从本书中受益。
我个人强烈推荐这本书。相信凯涛的作品不会让大家失望。
——京东商城首席架构师、基础平台负责人刘海峰
前言 5
去年底拿到了这本书的电子版,受邀为它写书评。整本书很长。打开修改视图后,我看到开涛还在不断地添加材料、例子,以及在即将出版之前的深思熟虑的词句。读到某部分时,想到了当时工作中正在做的一个优化,和他详细讨论,他想加上这个方案作为例子。我说,内容够丰富,你觉得书不够厚?
是的,Kai Tao 迫不及待地想在这本书中告诉大家他在自己的领域中学到的和实践的。写一本书是一项艰巨的任务,可能不一定令人高兴。我很佩服他写得这么有耐心(有更多的篇幅有限,链接到他的博客和公众号上的扩展阅读内容)。看到了作者的诚意。
我利用乘地铁的时间阅读了本书的前半部分。虽然我对内容很熟悉,但如果能在看书的时候提前发现一些错误就更好了。我读得很慢。但是,除了一些笔误外,没有发现任何缺陷。后来我犯了假期拖延症,我答应的书评还没写完,就赶紧把后半部分看完了。尤其是Part 4的情况,几乎是开涛之前的作品内容,或多或少是通过其他渠道看到的。
开涛结合自己的工作内容、相关上下游依赖系统的各种方案和架构思路,通过自己的思考和分类,写了一本成本书。其中不仅有很多京东的中前端架构实践和技术,还有很多技术细节甚至是作者在工作过程中用到的代码。 2、3部分更详细、系统的讲解了高可用高并发互联网应用的常见架构思路和设计方法,并针对不同场景展开
比如比较适合有这方面经验的读者。一些常用软件和框架的详细说明,以及大量代码的编写风格,或许能满足想马上实践的读者。
架构注重权衡取舍,但前提之一是在多个相关领域的技术知识水平上拥有尽可能多的经验。因此,架构也非常注重细节。需要充分考虑和权衡诸多因素来进行取舍。在阅读本书的过程中,如果重点是各种架构方法,读者需要注意作者描述的适用场景。如果重点是各种具体的技术细节,不要忘记考虑其背后的架构思想。在实际工作中,很多解决方案都是几种架构方法和技术的综合应用,并且随着业务或场景的变化不断调整,不要卡壳。
突然想起《屠龙记》中张无忌跟张三丰学太极剑,最后张无忌成功忘掉了所有招式。对于武林高手来说,最终还是要融合他们,形成自己的体系,而不受具体招式的束缚。学习结构无非是。
——京东商城交易平台架构师肖飞
序幕 6:动起来
凯涛是一个勤奋的作家,写计划,写代码,写分享,不知疲倦。对于大多数软件开发人员和设计人员来说,编写代码并不是一件容易的事。因为我不是为自己写的,而是为我的同事写的。一方面,技术人员渴求好的技术,另一方面,他们自然会以批判和批判的眼光看待同行的作品。他们是鲁迅先生的同志。正因如此,涛涛在本书内容的质量上下了很大功夫。
开涛的职业生涯始于空中网。 2014年加入京东,投身于超0级体系建设。京东商城商品详情页面改版,商品详情页面统一服务规划实施。这些系统代表了京东的形象,也代表了京东技术团队的形象(开涛也是好看的)。这些系统必须能够承受高峰、不掉线和快速响应。随着业务量的快速增长,预期的瓶颈即将到来。这次关键性的系统改版也是从这些挑战开始的,以后会有“永不消失的单品页面”,本书也有案例和有意总结。
作者停下了发展的步伐,通过思考和总结,动态实践还在纸上,给大家带来了美妙的体验。希望广大读者能够动态应用某个历史时刻的实践总结。现实的发展实践。也希望作者可以开个群或者公众号,邀请技术专家进来,与读者交流,活跃起来。
——林世宏,京东商城建筑师,2016年12月
前言七:开启探索之旅,感受科技魅力
近年来,中国互联网产业以前所未有的速度发展。技术在业务发展中的作用变得越来越重要。随着各种业态的发展,涌现出许多技术应用的成功案例和先进技术的研究成果。在本书中,作者通过对工作的探索和总结,揭开了系统高可用的神秘面纱,让感兴趣的人一窥真相。
在过去的沟通和面试过程中,大部分研发人员在他们开发的系统中机会很少或根本没有,以及上下游系统众多、业务数据海量、部署环境复杂、极端应对灾难(如机房断电、光纤损坏),因此没有机会和计划详细了解和研究系统的高可用性。对系统高可用的理解和实践,大多停留在理论理解和个人实验阶段。机会适用于
在解决实际业务问题时,很难形成自己的技术和理念的积累。而当他们终于有机会开始在海量数据和高并发场景下工作时,他们往往因为没有系统地学习和积累经验而在系统设计、容灾策略和解决问题上挣扎。本书通过简单易懂的概念解读和实际案例,讲解了与系统高可用相关的系统设计原则、系统限流、降级措施等。
“十六计”以非常直接的方式呈现给您。让我们对一些常见的高并发业务场景中的系统设计原则和高可用策略以及思路的扩展有一个清晰的认识。无论是刚刚接触编程的学生,还是已经经历过多次战斗的一线开发者,都能从书中得到很多启发。也许只是一个配置的改变,一条逻辑的优化,一个策略的调整,就可能让我们的系统可用性焕然一新。步骤。
京东的网站系统从静态到动态,从动态到动静,从强依赖DB到多级缓存,从重启服务器到自由切换流量,从害怕503到冷静应对问题,系统从修改代码到处理异常到修改配置的演进。当系统的业务量会导致系统性能和健壮性发生变化时,系统问题伴随着研发人员自身能力的提高和
积累宝贵经验的好时机。与其通过重新启动应用程序和“无法解释的奇怪问题”来掩盖问题,还不如挖掘问题的根本原因。如果你挖掘的足够深,所有的问题都是可以解决的。书中所用的技术和总结的经验,未必能解决书中业务场景之外的问题,但这恰恰是技术的魅力所在。没有任何技术和经验可以作为系统的灵丹妙药,帮助我们一劳永逸地规避一切隐患,但我们可以通过思想的接受和消化来丰富我们的知识体系,让我们成为有思想的研发人员阮一峰在他的书中曾经解释过“如何有思想”,我认为非常适合研发人员。研发人员的想法是什么?当您对需求、业务形式或问题有自己的看法时,您就是在思考。你的意见越多,你就越有可能接近问题的本质,你的想法也会越深刻和丰富。虽然你的观点不一定正确或正确,但作为研究人员,如果你有探索、质疑和证明自己观点的能力,你也会有分析和解决问题的能力。所以当你面对一个看似简单的需求或业务时,或许能看的更透彻,把系统设计得更适用、更合理,遇到书中提到的问题也能轻松上手。
我认为,阅读并理解书中对系统高可用领域的介绍,一定会让你乐在其中。虽然你可能会有些困惑和不解,但作为一个技术人对技术的追求和探索不应该是这样的吗?
最后,邀您踏上探索系统高可用之旅,感受科技魅力。
——京东商城研发总监韩晓月
前言 8
大型分布式系统的构建面临着很多困难和问题,但请记住,对于架构师来说,无论我们要解决多少困难,最重要的是确保系统可用,无论任何环境或任何压力,任何场景,系统必须可用,这是我们的首要任务。在保证系统高可用的前提下,*敏*感*词*分布式系统面临的三个最突出的问题是:如何处理高并发,如何处理海量数据,以及如何处理一系列的问题。分配造成的问题。这也是很多一线架构老司机的认知和共识。
由于一本书的篇幅有限,不可能面面俱到,所以本书以火力为主,系统、详细、专业地讲述:在大型分布式系统中如何保证高可用以及如何应对高并发。涉及到很多技术和细节。例如用于保证高可用:负载均衡和反向代理、隔离、限流、降级、超时和重试等;另一个例子是处理高并发:应用缓存、多级缓存、连接池、异步并发、队列处理等。很多朋友这方面的很多知识早就知道了,不知道知道为什么,更不用说为什么了。学习这本书正好可以弥补大家在这些方面的不足。
作者带着匠人的情怀,从理论到应用,从技术精髓到具体实现,把每一个环节都讲解得很透彻,语言平实热情,辅以实战经验的拓展。 ,不仅可以让读者学习到具体的技术和解决问题的思路,还可以给出具体的问题解决方案。基本上,这些方案都可以直接在实际项目中使用。
特别难得的是,本书还结合了实际的*敏*感*词*应用——京东商品详情页的实现,详细讲解了这些技术和解决方案在真实场景中的组合应用,更好地让知识落地。本书首先介绍了京东商品详情页的基本功能、技术架构的开发、架构设计。当然,也有很多实践经验和经验,以“遇到的坑和问题”的形式出现;然后详细告诉京东。商品详情页服务关闭
循环练习。
为了更好的描述京东商品详情页的具体实现,作者先描述了实现中用到的基础技术——OpenResty,然后详细讲解了如何使用OpenResty开发商品详情页,其中涉及到很多具体的、详细的改造点,都是在实际开发中用到的,值得认真体验。如此真实、详细地描述了这个大型系统的实现,绝对是第一手的技术资料,很有参考价值。
其实市面上有很多描述*敏*感*词*分布式架构的书籍,但基本上都停留在理论和知识层面。他们看起来都是对的,非常“高大”,但就是不能倒在地上。结合实际应用,导致学习效果不佳。而这本书很好地解决了这个问题。不仅讲解了保证高可用、处理高并发的各种技术和方案,而且理论与实践相结合,并采用京东产品详情页的实际案例进行整合。展示了这些技术的应用,以加深大家的理解和领悟,从而更好地将这些技术和解决方案应用到自己的实际项目中。
其实,像这本书这样既有详细技术学习,又有真实典型案例叙述的好书,在市场上并不多见。毕竟真正有这种大型系统完整架构经验的人不多,能说明白的少。这本书的作者恰好是极少数能够传授技能、经验和知识的优秀人物之一。这对读者来说是一笔财富。
细细读完这本书,人们有一种启蒙顿悟,感叹“原来如此”。
坦率地说,这本书不是为初学者写的。有一定开发经验,甚至架构设计经验的人,可以从本书中学到更多。但我仍然坚信,无论是有经验的建筑师,还是想学习建筑知识的初学者,认真深入地阅读本书,一定会有所收获。对于暂时不理解的内容,建议反复阅读,或者过一段时间再阅读,继续深入思考。最好结合实际项目,把所有的知识应用到学到的东西上。这不是作者浪费的。辛苦了。
仔细想想,我已经认识作者八年多了。眼看着作者走出校园,走进职场,从职场中的一个应聘者,到一个带领百人团队的JD技术人。不由得感觉时间像一匹白马一样过去了。在我眼中,作者依旧是一个帅气、阳光、聪明又略带腼腆的大男孩形象;喜欢学习技术,特别是好学、善于思考、能吃苦耐劳,并积极将所学知识应用到实际工作中;喜欢分享技术,常年坚持写技术博文,拥有众多忠实粉丝,也是京东最热门的讲师之一。另外,我要告诉你一个小秘密。作者热爱摄影,绝对专业。
——陈晨,《磨砺设计模式》作者
前言
为什么要写这本书
2011年底,作者本来打算写一本Spring的书,但是因为是Spring的入门书,框架的内容更新太快了,我觉得还是写个博客比较好,所以我写完的手稿《向我学习春天》放在博客上(因为是龙年开通的博客,很多网友都叫我龙年哥),持续更新。现在已经快五年了。当你在网上找资源的时候,你会发现很
多个内容不是一个系统,不能用来系统地学习。这也是我的痛点。所以我博客的一个特点就是坚持文章系列——只要我的博客有技术我就想学。我需要去其他地方再次找到它。到现在为止,已经写了《向我学习Spring》、《Spring 杂谈》、《向我学习Spring MVC》、《向我学习Shiro》、《向我学习Nginx+Lua》等系列,累计访问量已突破1000万。我对写博客还有另一个自私的兴趣:带来新人。当时我们的系统架构是使用OpenResty,团队成员都是Java程序员,所以写了《跟我一起学习OpenResty(Nginx+Lua)开发》。新人只需按照教程重新学习即可。我可以开始了。扫描并关注我的博客。
从2015年开始,作者在个人公众号“开淘的博客”上写了《谈高并发系统》系列文章,先后发表了《谈高并发系统限流特技》和《谈高并发系统》高并发系统”系列文章。 《并发系统降级特技》、《谈高并发系统的队列技术》、《构建需求响应的亿级产品详情页》等文章。这些内容是作者在一线使用的一些技巧,这些技巧是一线程序员或者架构师应该掌握的必备技能。而这个系列也得到了很多读者的反馈和认可,帮助他们解决了系统的一些问题。公众号发表的部分内容偏理论,很多人不知道怎么用,于是就有了充实理论和实际内容,出书的想法。如果你想学习高可用、高并发的系统技巧,这本书就够了,可以当桌面工具使用。
作者花了半年多的业余时间来制作这本书。希望这些可以在实战中使用的技巧可以帮助到读者。
本书中解释的原理不是作者总结的。很多前辈都已经实践过了。作者只是花点时间总结了一些工作中用到的经验和案例,整合到了书中。
成长和进步是一个渐进的过程。读完这本书就想杀龙杀魔是不可能的事了。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?别人还是会走别人走过的路,也会踩别人踩过的坑。正如作者格拉德威尔所著的《异形:不同的成功启示》一书中的一万小时法则:“天才在人们眼中的非凡之处,不是因为它是超人,而是它已经使不断努力。一万小时的培训,是任何人从普通大师向世界级大师转变的必要条件。”
目标受众
本书希望对从事开发工作或解决一线问题的朋友有所帮助。
如何阅读本书
本书内容为理论与实战相结合。涉及的知识点很多。它分为4个部分。读者可以按任意顺序阅读每一部分,但建议阅读第一部分以便系统理解。
第一部分为概述,主要介绍开发高并发系统的一些原则,并阐述本书将要讲解的原则。
Part 2 High Availability,帮助读者理解高可用的一些原理,如负载均衡、限流、降级、隔离、超时和重试、回滚机制、压力测试和计划等,可应用于自己在实践系统中。
Part 3, High Concurrency, introduces some principles for developing high-concurrency systems, such as caching, pooling, asynchronization, capacity expansion, queuing, etc., and cooperates with a large number of cases to help readers better grasp and use them.
Part 4 of the case, introduces the product detail page, unified service and other system architectures that the author has developed, as well as some static architecture ideas to help readers understand some of the principles introduced earlier.
Reading this book requires a certain understanding of Java, OpenResty (Nginx+Lua), Redis, MysQl and other technologies. For OpenResty, please refer to the "Follow Me OpenResty (Nginx+Lua) Development" series in my blog 文章 . Nginx+Lua mentioned in this article is equivalent to OpenResty. You can scan the code to read "Follow Me OpenResty (Nginx+Lua) Development".
Due to space reasons, it is difficult to make the examples in this book comprehensive and detailed. Therefore, your ideas should not be limited to what is written in the book, but learn to use them flexibly and draw inferences from other things. For example, the idea of multi-level caching can be extended to multi-level storage: memory→NVMe/SATASSD→mechanical disk.
Corrigendum and support
Due to the author's limited ability, although I have asked many friends to help with proofreading, some mistakes will inevitably appear in the book. Readers and friends are also invited to criticize and correct. You can scan the following QR code to follow my official account or visit my blog to leave a message and feedback errors and suggestions. The author will actively provide answers.
Thanks
First of all, I would like to thank my colleagues in the architecture team when I entered Jingdong Mall, and thank Sui Jianfeng, Zou Kaihong, Feng Peiyuan, Li Henghong, Xu Tao, Yang Chao, Wang Zhanbing, Zhao Hui, Sun Bingwei, etc. for their help to me, and also thank Yang Siyong and Shang Xin , Xu Shuo, Han Xiaoyue, etc. trusted me and gave me the opportunity to boldly practice the single product page of the mall, as well as my good partner Liu Junhua, as well as Wang Xiaozhong, Liu Haifeng, Lin Shihong, Xiao Fei, He Xiaofeng, Bao Yongcheng, Liu Xing, Zhou Yuxing Wait for my help and
XXII | Billion-level traffic 网站architecture core technology-follow Kaitao to build a high-availability and high-concurrency system support, thank my leaders Xu Chunjun and Yang Jian for their support and affirmation, thank Jingdong and my team, There are many friends who have cooperated and communicated together. Without your help, this book would not have been published.
Thanks to Zhang Zhitong, Xiao Fei, Zhao Yunxiao, Ma Shunfeng, Liu Bing, Zhang Liang, Yan Sheng, Zeng Bo, Sun Wei, Wang Jing, Huang Yangjun, Wang Junfu, Li Jin, Liu Jianan, Liu Yifei, Wu Zhengxuan, Shao Dongfeng, Sun Proofreading and suggestions from Peng, Zhang Jinli, Ren Jingbiao, Liu Ran, Chen Yumiao, Wang Xiaowen, Li Lewei, Chao Zhigang, Wang Xiangwei, Zhao Xiangjian, You Fengkai, etc. Thanks to Lin Shihong, Xiao Fei, and Zhao Yunxiao for providing materials for this book. I also thank those friends who have left messages and encouraged me on my blog and official account. Finally, I would like to thank Shao Xia and Lu Yang from the Publishing House of Electronics Industry for their support.