亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统
  • 推荐0
  • 收藏10
  • 浏览1.2K

亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统

张开涛 (作者)  杨璐 (责任编辑)

  • 书  号:978-7-121-30954-0
  • 出版日期:2017-03-30
  • 页  数:477
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:张春雨

相关图书

MyBatis技术内幕

徐郡明 (作者)

本书以MyBatis 3.4为基础,针对MyBatis的架构设计和实现细节进行了详细分析,其中穿插介绍了MyBatis源码中涉及的基础知识、设计模式以及笔者自己...

¥79.00

人人都是架构师:分布式系统架构落地与瓶颈突破

高翔龙 (作者)

本书注重大型网站技术架构方案的落地,以及实战实施。本书不仅会从宏观的角度去阐述大型电商网站系统的架构设计,更重要的是,会结合笔者实际的工作经验,深入剖析大型电商...

¥69.00

Node.js硬实战:115个核心技巧

Alex R. Young ,Marc Harter (作者) 李旭翔 (译者)

Node.js 是一个持续走热的供开发人员开发服务器端应用的平台,但是目前Node.js is的相关实例仍明显不足,尤其与实践差距较大。本书汇总了115种Nod...

¥69.00

SPA设计与架构:理解单页面Web应用

Emmit Scott (作者) 卢俊祥 (译者)

单页的Web应用程序(SPA)是网络软件发展的下一阶段,SPA能够使浏览器应用像原生桌面应用一样流畅易用。 开发SPA需要新的开发理念,并掌握那些支持更复杂应用...

¥79.00

互联网创业核心技术:构建可伸缩的web应用

ArturEjsmont (作者) 李智慧 (译者)

《大型网站技术架构:核心原理与案例分析》作者李智慧的翻译力作!<br>读透一本好书,少走十年弯路。<br>对于创业人来说,在瞬息万变的移动互联网世界求生存,寸秒...

¥89.00

深入浅出Java互联网持久框架MyBatis

杨开振 (作者)

当前已经是移动互联网时代,Java持久框架Hibernate没有办法适应高性能,灵活,大数据,可优化等要求,这时MyBatis就进入了我们的视野,随着移动互联网...

¥69.00
通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web 安全、系统发布、运维监控等在内的大型网站开发全景视图。
万众期待→十万火急→百万含金量→千万级博主→解密亿级网站
序1
开涛勤奋好学又乐于分享,他很早就深读了不少开源框架源码,吃透了内核技术,又非常喜欢看技术大侠们的分享,不断与同行交流,并学以致用,一开始参加工作就站在了较高的起点上,所以往往比同龄人做系统更加有信心,成果更加突出。他感恩于开源和分享,也践行着开源分享之路,每次埋头探索之后都有细心总结,有博客时写博客,有微信公众号时发公众号,把学到的和在实践中总结出来的,都无私分享出来。
网站是直接面对广大客户的,是公司的门户,必须快速响应,必须持续可用,必须抗得住洪峰。任何一个网站的发展过程中都出现过问题,影响客户体验和商业利益,公司业务规模越大,网站出现问题的损失越大。作者进入京东后,花了不少精力从事了“永不消失的网站”建设工作。作者和同事一起,克服了一个又一个难题,将口号变成了现实。
本书高屋建瓴,抓住了大型高并发网站设计的核心,从设计原则,到高性能、高吞吐量、高可用的系统设计,到高灵敏的监控系统构思、再到应急方案的制定,不失细节,又不拘泥于细节。相比其他已出版的关于大型网站的架构类的书籍,此书更加贴近实战,追求实用,所有内容来自于实战,文章内容也是与同道和网友们互动后改进的,本书也
没有那些为了构建一个“完整的体系”而只起到填充作用的段落。此书特别适合那些快速成长型企业网站的建设者,互联网行业的研发人员,对较大规模网站的重构也有借鉴意义,看这本书可以少走些弯路,少踩些坑,其中的许多策略和技术可以直接拿来用,从而节省时间。作为本书的第一批读者,发现这本书的内容组织上兼具工具书的特点,没有严格的前后依赖,可以按章节顺序阅读,也可以随机选取中间的一章。文中公布了作者的联络方式,有问题能方便地交流。最后,希望这本书不要成为一个网站架构分享的终结者,希望有更多同学加入到探索和分享的队伍中来,不断克服新的挑战,分享更多新成果。
——京东商城 副总裁、京东 Y 事业部 负责人 于永利

序2
我们的互联网开发者都曾经有过这样的经验。搭建一个设计精良,功能丰富的网站并不是一个高不可攀的事情。但能够支持巨大的流量而运行自如就不是一件容易的事情了。可是,当你拥有《亿级流量网站架构核心技术》这本书时,这一切又变得那么轻松。
《亿级流量网站架构核心技术》一书详细地阐述了开发高并发高可用网站的一系列关键原则问题。就如何实现系统高可用,流量高并发进行了深刻剖析。本书例举了大量的真实应用案例,帮助读者深入了解相关知识,并且使得枯燥的说教变得生动,活泼。
本书作者长期服务于京东研发的第一线,拥有丰富的软件开发经验。秉持着对技术的热爱,为互联网开发者奉献自己的心路历程。希望他的读者能够从这本书中受益。
——京东集团首席技术顾问 翁志

序3
经历过“双 11”和“618”的同学都知道,在大促时如何保证系统的高并发、高可用是非常重要的事情。因此在备战大促时,有些通用原则和经验可以帮助我们在遇到高并发时,构建更可用的系统,如限流、降级、水平扩展和隔离解耦等。通过这些原则可以在流量超预期时,很好地保护系统,避免冲击导致的系统不可用。
以前京东也遇到过一些高可用问题,如超时设置不合理导致系统崩溃;限流措施不到位,导致负载过高时系统崩溃;解耦不彻底,导致某个服务挂掉时所有依赖服务受影响等。这些都是在开发和运维系统中很常见的问题,只要开发人员在开发系统时注意下这些点就可以很好地避免。书中的高可用部分可以很好地帮助读者解决这些问题。
也经常有人讨论如何提升系统性能,最直接的解决方案是扩容,或通过如加缓存来提升系统并发能力,或使用队列进行流量削峰,也可以使用异步并发机制提升吞吐量或者接口性能等。这些技术老生常谈,并不新鲜,但很实用,大家在实现高并发系统时经常会遇到。书中的高并发部分可以帮助读者理解和使用这些技术。
这本书还有一部分介绍实战案例,其中包含了京东 0 级系统“商品详情页”和“商品详情页统一服务”系统,这两个系统每天承载了京东几十亿的流量,书中深入讲解这两个系统的核心技术,还通过案例详细介绍如何使用 OpenResty 设计和开发高性能 Web应用,值得认真阅读。
本书最大的特点是实用,书中的原则和经验是在实战中总结和进化出来的。市面上系统化地介绍高可用和高并发的文章并不多,成体系的就更少了,很多都是散落在网络上。开涛是京东优秀的架构师,有很强的架构抽象能力、扎实的编程基本功和丰富的实战经验,他将这些原则整理成体系,而且加了很多案例,相信可以很好地帮助读者学习
和使用这些原则,让读者读完此书后能落地到实际项目中。
——京东集团架构师 吴博

序4
大型互联网业务需要持续建设网站系统并通过 PC、移动等各种终端来与用户进行交互。大流量网站架构如何支持高并发访问并且保证高可用性,这是一个持久的、极具挑战的技术话题。毫不夸张地说,无数互联网行业的工程师为之奋斗。
开涛是京东优秀技术人才的典型代表。他从研发一线做起,脚踏实地成长为核心架构师。他所著《亿级流量网站架构核心技术》一书,分享高可用与高并发网站构建技术,干货满满,特点鲜明。
第一,理论与实践结合。本书不仅总结出一系列技术方法论,而且配合真实的案例,娓娓道来,深入浅出。读者可以直接将这些实用技术运用到自己的日常工作中。
第二,深度与广度兼具。本书选题极具针对性,专注于高可用与高并发两方面技术实践,每个方面均详解一系列技术细节。
第三,技术与业务并重。开涛并没有纯谈技术,而是围绕商品详情页——京东重要的业务产品之一,来展开更进一步的实践经验分享,给读者从业务需求到技术架构的完整视图。
第四,新兵与老将咸宜。无论是第一年人事软件开发的工程师,还是工作多年的资深人士,均可从本书中受益。
我个人强烈推荐此书。相信开涛的作品不会让大家失望。
——京东商城总架构师、基础平台负责人 刘海锋

序5
去年年底我拿到本书的电子版,受邀为其写书评。全书篇幅很长,打开修订视图后,看到开涛在即将出版之前仍然在不断补充素材、示例,推敲着词句。在读到其中的某个部分的时候,我联想到当时工作中正在做的一个优化,还跟他详细讨论过,他想把这个方案也补充进去作为示例。我说,内容已经够翔实了,还嫌书不够厚吗?
是的,开涛恨不得在这本书中,一股脑儿地告诉大家他所在领域中所学到和实践的知识。写书是一个吃力还不一定能讨好的活儿,很佩服他居然能耐心写了这么多(还有很多限于整书篇幅,链接到他的博客和公众号上的扩展阅读内容)。我看到了作者的诚意。
全书前半部分我是利用坐地铁的时间看的,虽然内容我比较熟悉,但想在看书的同时如果能提前发现一些错误就更好了,看得极慢。不过,除了一些笔误之外也没发现什么硬伤。后来假期拖延症犯了,答应的书评还迟迟没有写完,后半部分就快速看过。尤其是第 4 部分案例,差不多就是开涛自己之前的工作内容,这些或多或少地都通过其他渠道看过了。
开涛结合自己的工作内容,以及相关上下游依赖系统中的各种方案、架构思想,通过自己的思考和归类总结写成本书。其中不仅有很多京东的中前端的架构实践和技术,还有作者在工作过程中用到的很多技术细节甚至代码。第 2、3 部分比较详细和系统地说明了高可用、高并发互联网应用的常用架构思想和设计方法,并配合不同的场景进行
举例阐述,比较适合对此已经有了一些经验的读者。针对一些常见软件和框架的细节使用说明,以及提供很多代码的行文风格,也许能满足那些想立即动手实践的读者。
架构讲究权衡和取舍,但是前提之一是尽可能在多个相关领域的技术知识层面有经验,因此架构也很重视细节,需要对很多因素有充分思考和权衡,才有取舍。读者在阅读本书的过程中,关注点如果是各种架构方法,则需要注意作者描述的适用场景。如果关注点是各种具体的技术细节,也不要忘记思考背后所体现的架构思想。在实际的工作中,很多方案是若干架构方法和技术的综合运用,并且随着业务或场景的变化而不断调整的,不要拘泥。
突然想到了《倚天屠龙记》中张无忌向张三丰学太极剑一节,最后张无忌成功忘记了所有的招式。对于武功高手来说,最后都是要融会贯通,形成自身体系,不要被特定的招式所束缚。学习架构,也不外乎是吧。
——京东商城 交易平台架构师 肖飞

序6:动起来
开涛是个勤奋的写手,写方案,写代码,写分享,孜孜不倦。对于大多数软件开发和设计人员来说,写作不是一件容易的事。因为写出来并不是给自己看的,是要给同行们看。技术人员一方面对好的技术追求若渴,另一方面又天然地用批判和挑剔的眼光看同行的作品,算是鲁迅先生的同道吧。也正因为如此,开涛为此书内容的质量下了不少功夫。
开涛的职业生涯从空中网开始,2014 年加入京东,一头扎进了超 0 级系统的建设过程中,京东商城商品详情页改版、商品详情页统一服务规划与落地。这些系统代表着京东的形象,代表着京东技术团队的形象(开涛也是高颜值)。这些系统必须能抗峰值、不掉线、响应快,随着业务量的猛增,预期的瓶颈很快会到来,这次关键的系统改版也是从这些挑战开始,后来也就有了“永不消失的单品页”,也就有了这本书中的案例和用心总结。
作者停下开发的脚步,通过思考和总结,把动态的实践静止到了纸张上,给大家带来了精彩,愿各位读者能够把这些发生在某个历史瞬间的实践总结动态地运用到现实的开发实践中。也期望作者可以开放群或者公众号,邀请技术专家进来,与读者进行交流,动起来。
——京东商城架构师 林世洪 2016 年 12 月

序7:开启探索之旅,感受技术的魅力
近年来,中国的互联网产业正在以前所未有的速度迅猛发展。而技术在业务发展中所扮演的角色日益重要,随着各个业务形态的发展涌现出了许多技术应用上的成功案例和先进技术的研究成果。而作者在本书中则通过对工作中的探索和总结来将系统高可用这个神秘莫测的面纱揭开,让对此有兴趣的人得以窥其真容。
在以往的交流和面试过程中,大多数的研发人员在其所研发的系统中很少有机会或确实不需要和繁多的上下游系统、海量的业务数据、复杂的部署环境以及极端灾难(如机房断电、光纤损坏)打交道,因此也没有契机和计划去详细了解、研究系统的高可用,对于系统高可用的理解和实践大多停留在理论认知和个人尝试阶段,很难有机会应用到
解决实际业务问题上,也就很难形成自己技术和理念上的一个积累。而等到终于有机会开始在海量数据和高并发场景下一展身手的时候,又常常会因为没有系统地学习和经验积累而在设计系统、容灾策略、解决问题的过程中艰难前行。本书则通过浅显易懂的理念解读和实际案例将系统高可用相关的系统设计原则、系统限流、降级措施等“兵法三
十六计”以非常直白的方式呈现给了大家。让我们对于一些常见的高并发业务场景下的系统设计原则、高可用策略有了清晰的认识和思路的拓展。无论是刚刚接触编程的学生还是已身经百战的一线研发人员都可以从书中得到很多启发,也许只是一个配置的改变、一行逻辑的优化、一个策略的调整都有可能让我们的系统可用性登上新的台阶。
京东的网站系统走过了从静态到动态、从动态到动静结合、从对 DB 的强依赖到多级缓存、从重启服务器到自如切换流量、从对 503 的恐惧到从容应对问题、从修改代码应对异常到修改配置轻松搞定的系统演变历程。当一个系统的业务体量达到可以引起系统性能和健壮性发生改变的时候,伴随着系统问题到来的更是研发人员自身能力提升和
宝贵经验积累的好时机。与其将问题用重启应用和“无法解释的诡异问题”来掩盖,不如把问题的根源挖掘出来。如果挖掘得足够深入,一切问题都是可解决的。书中使用的技术和总结的经验也许无法解决书中业务场景之外的问题,但这也恰恰是技术的魅力所在。没有一种技术和经验可以作为系统的万能解药来帮助我们一劳永逸地避免掉所有隐患,但我们可以通过对思想的接纳和消化来丰富我们的知识体系,让我们成为一个有思想的研发人员。阮一峰曾经在他的书中对于“如何变有思想”做过解释,我觉得非常适合用在研发人员的身上。研发人员的思想是什么?当你对一个需求、对一个业务形态或者对一个问题有自己的观点见解,那你就是有思想的。你的观点越多就越可能接近问题的本质,那么你的思想就越深刻和丰富。虽然你的观点不一定是事实也不一定是正确的,但作为研发人员如果有了通过不断探索、质疑、证明观点的能力之后,那么也就有了透析问题、解决问题的能力。那么在面对一个看似简单的需求或者业务时,也许你可以看得更透彻,将系统设计得更适用更合理,当你遇到书中提及的问题时也可以开始轻松应对。
我想,阅读并了解书中对于系统高可用这个领域的介绍一定会让你乐在其中。虽然你可能会有些疑惑和不解,但作为一个技术人对于技术的追求和探索不就应该是这样吗?
最后,我邀请你一起踏上这个对于系统高可用的探索之旅,来感受技术的魅力。
——京东商城研发总监 韩笑跃

序8
大规模分布式系统的构建,面临很多的困难和问题,但是请记住,对架构师而言,不管我们要解决多少困难,最重要的是要保证系统可用,无论任何环境、任何压力、任何场景,系统都要可用,这是我们的第一要务。在保证系统高可用的前提下,大型分布式系统面临的最突出的三大问题就是:如何应对高并发、如何处理大数据量、如何处理分布式带来的一系列问题。这也是很多一线架构老司机们的感悟和共识。
由于一本书的容量有限,不可能面面俱到,因此本书集中火力,系统、详细、专业地讲述了:大型分布式系统如何保证高可用性,以及如何应对高并发这两个大方面。涉及很多技术和细节。比如用来保证高可用的:负载均衡和反向代理、隔离、限流、降级、超时与重试等;又比如用来处理高并发的:应用缓存、多极缓存、连接池、异步并发、队列处理等。对很多朋友来说,这里面很多知识都是久闻其名,而不知其然,更不知其所以然的,学习本书正好能弥补大家在这些方面的知识短板。
作者以匠人的情怀,把每个方面从理论到应用、从技术本质到具体实现都讲得透彻明了,以平实而不失激情的风格娓娓道来,再辅以实战经验的扩展,不单单让读者学习到具体的技术和解决问题的思路,更是给出了应对问题的具体解决方案,基本上可以把这些方案拿到实际项目中直接使用。
尤为难得的是:本书还结合实际的大型应用——京东的商品详情页的实现,详细讲解了这些技术和方案在真实场景的组合应用,以更好地让知识落地。本书先是介绍了京东商品详情页的基本功能、技术架构的发展以及架构设计,当然还有很多实际的经验和体会,以“遇到的坑和问题”的面貌出现;然后详细地讲述了京东商品详情页的服务闭
环实践。
为了更好地讲述京东商品详情页的具体实现,作者先讲述了实现中使用的基本技术——OpenResty,然后又详细地讲解如何使用 OpenResty 来开发商品详情页,里面涉及好多具体而细化的点,都是实际开发中会用到的,值得去认真体会。这样真实而详细地讲述这种大型系统的实现,绝对一手的技术资料,是具有极大的参考价值的。
其实,市面上讲述大型分布式架构的书很多,但基本上都停留在理论和知识的层面,看上去都很对,很“高大上”,但就是落不了地,不能很好地跟实际应用进行结合,从而导致学习的效果欠佳。而本书很好地解决了这个问题,不仅深入浅出地讲述了各种保障高可用,以及处理高并发的技术和方案,并理论联系实际,采用京东商品详情页的具体实现这个实际案例,来综合展示了这些技术的应用,从而加深大家的理解和领悟,以更好地把这些技术和方案应用到自己的实际项目中去。
事实上,像本书这样既有详尽的技术学习,又有真实、典型案例讲述的好书,在市面上是不多见的,毕竟真正拥有这种大型系统完整架构经验的人并不多,能讲明白的更少。本书作者恰好就是那极少数技术、经验和知识传授俱佳的牛人之一,这是读者之幸。
仔细阅读完本书,让人有一种醍醐灌顶的顿悟,掩卷长叹“原来如此啊”。
坦率地说,本书不是写给初学者的,对于有一定的开发经验,甚至是架构设计经验的朋友,能从本书中收获更多。但我仍然确信,不管是富有经验的架构师,还是想要学习架构知识的入门者,仔细、深入阅读本书,就一定会有收获。对于暂时不太理解的内容,建议反复阅读,或者隔段时间再看,并不断深入思考,最好是能结合实际的项目,把这些知识都应用上去,学以致用,这也不枉费作者的一番心血。
细想起来,认识作者八年多了,眼看着作者走出校园步入职场,从职场新兵,到成长成为在京东领导着上百人团队的技术大牛,仿佛一切都在昨天,让人不由不感慨时间如白驹过隙。在我眼中,作者依然是那帅气、阳光、聪明而又略微有些腼腆的大男孩形象;喜欢研究技术,特别好学、善思、勤奋,且积极在实际工作中应用所学的知识;喜欢分享技术,常年坚持撰写技术博文,拥有不少忠实粉丝,在京东内部,也是特别受欢迎的讲师之一。另外告诉大家一个小秘密,作者爱好摄影,绝对专业级水准哦。
——《研磨设计模式》作者 陈臣

前言
为什么要写这本书
在 2011 年年底的时候笔者就曾规划写一本 Spring 的书,但是因为是 Spring 入门类型的书,框架的内容更新太快,觉得还是写博客好一些,因此就把写完的书稿《跟我学Spring》放到了博客(jinnianshilongnian.iteye.com,因为是龙年开的博客,很多网友喊我龙年兄)中,并持续更新,到现在已经差不多五年了。大家在网上找资源时会发现,很
多内容不成体系,不能用来系统地学习,这也是我曾经的痛点,因此我写博客的一个特色就是坚持写系列文章——想学习某种技术只要我的博客有就不需要去其他地方再找了,到现在已经写过《跟我学 Spring》、《Spring 杂谈》、《跟我学 Spring MVC》、《跟我学 Shiro》、《跟我学 Nginx+Lua》等系列,累计访问量已超过 1000 万。我写博客还有一个私心:带新人,当时我们系统架构使用 OpenResty,而团队成员都是 Java 程序员,所以就写了《跟我学 OpenResty(Nginx+Lua)开发》,新人跟着教程学一遍就能上手干活了。扫一扫关注我的博客。
2015 年开始,笔者在个人公众号“开涛的博客”撰写《聊聊高并发系统》系列文章,陆续发表了《聊聊高并发系统之限流特技》、《聊聊高并发系统之降级特技》、《聊聊高并发系统之队列术》、《构建需求响应式亿级商品详情页》等文章。这些内容都是笔者在一线使用过的一些技能,而这些技能又是一线程序员或架构师应该掌握的必备技能。而且这一系列也得到了很多读者的反馈和认可,帮助他们解决了系统的一些问题。公众号发表的有些内容偏理论,很多人不知道怎么去用,因此就有了丰富理论和实战内容并出版本书的想法。想学习高可用和高并发系统技能,看这本书就够了,并且可以作为案头工具书来用。
笔者耗费了大半年业余时间才成就此书,希望这些实战中能真地用得上的技术可以帮助到读者。
本书讲解的原则并不是笔者总结出来的,有许许多多前辈们已经实践过,笔者只是花了点时间进行汇总,并把工作中使用过的一些经验和案例融入到书中。
成长和进步是一个循序渐进的过程,妄图看完本书后能屠龙降魔是不可能的,别人走过的路还是会走一遍,别人踩过的坑还是会踩一遍。正如作家格拉德威尔在《异类:不一样的成功启示录》一书中的一万小时定律:“人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。一万小时的锤炼是任何人从平凡变成世界级大师的必要条件”。
读者对象
本书希望对在一线从事开发工作或正在解决一线问题的朋友有所帮助。
如何阅读本书
本书的内容是理论与实战相结合,涉及的知识点比较多,共分为 4 个部分,读者可按照任何顺序阅读每一个部分,但建议先阅读第 1 部分进行系统了解。
第1部分概述,主要介绍开发高并发系统的一些原则,并阐述本书将要讲解的原则。
第 2 部分高可用,帮助读者理解高可用的一些原则,如负载均衡、限流、降级、隔离、超时与重试、回滚机制、压测与预案等,并能实际应用到自己的系统中。
第 3 部分高并发,介绍开发高并发系统的一些原则,如缓存、池化、异步化、扩容、队列等,并配合大量案例帮助读者更好地掌握和运用。
第 4 部分案例,介绍笔者开发过的商品详情页、统一服务等系统架构,还有一些静态化架构的思路,帮助读者理解前边介绍的一些原则。
阅读本书需要对 Java、OpenResty(Nginx+Lua)、Redis、MysQl 等技术有一定了解,OpenResty 可以参考我的博客中的《跟我学 OpenResty(Nginx+Lua)开发》系列文章。本文提到的 Nginx+Lua 等同于 OpenResty。可扫码阅读《跟我学 OpenResty(Nginx+Lua)开发》。
因为篇幅原因,本书示例很难做到全面且详细,因此思路不要受限于书中所写,要活学活用,举一反三。比如多级缓存的思路,可以扩展到多级存储:内存→NVMe/SATASSD→机械盘。
勘误和支持
由于笔者能力有限,虽然找了很多朋友帮忙校对,但书中难免会出现一些错误,也请读者朋友批评指正。大家可以扫如下二维码关注我的公众号或者访问我的博客留言反馈错误和建议,笔者会积极提供解答。
致谢
首先要感谢进入京东商城时的架构组的同事们,感谢隋剑峰、邹开红、冯培源、李尊敬、徐涛、杨超、王战兵、赵辉、孙炳蔚等对我的帮助,也感谢杨思勇、尚鑫、徐烁、韩笑跃等对我的信任,并给了我大胆实践商城单品页的机会,还有我的好搭档刘峻桦,还有王晓钟、刘海峰、林世洪、肖飞、何小锋、鲍永成、刘行、周昱行等对我的帮助和
XXII | 亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统支持,感谢我的领导徐春俊、杨建对我的支持和肯定,感谢京东和我的团队,还有许许多多一起合作过和交流过的朋友们,没有你们的帮助就没有这本书的出版。
感谢张志统、肖飞、赵云霄、马顺风、刘兵、张亮、颜晟、曾波、孙伟、王景、黄杨俊、王君富、李晋、刘嘉南、刘艺飞、吴正轩、邵东风、孙鹏、张金立、任敬表、刘冉、陈玉苗、王晓雯、李乐伟、晁志刚、王向维、赵湘建、尤凤凯等对本书的校对和建议。感谢林世洪、肖飞、赵云霄为本书提供素材。也感谢那些在我博客和公众号留言和鼓励我的朋友,最后感谢电子工业出版社的侠少和 杨璐 的支持。

目录

第 1 部分 概述 ......................................................................................... 1
1 交易型系统设计的一些原则 .................................................................................... 2
1.1 高并发原则 ................................................................................................................ 3
1.1.1 无状态 ............................................................................................................ 3
1.1.2 拆分 ................................................................................................................ 3
1.1.3 服务化 ............................................................................................................ 4
1.1.4 消息队列 ........................................................................................................ 4
1.1.5 数据异构 ........................................................................................................ 6
1.1.6 缓存银弹 ........................................................................................................ 7
1.1.7 并发化 ............................................................................................................ 9
1.2 高可用原则 .............................................................................................................. 10
1.2.1 降级 .............................................................................................................. 10
1.2.2 限流 .............................................................................................................. 11
1.2.3 切流量 .......................................................................................................... 12
1.2.4 可回滚 .......................................................................................................... 12
1.3 业务设计原则 .......................................................................................................... 12
1.3.1 防重设计 ...................................................................................................... 13
1.3.2 幂等设计 ...................................................................................................... 13
1.3.3 流程可定义 .................................................................................................. 13
1.3.4 状态与状态机 .............................................................................................. 13
1.3.5 后台系统操作可反馈 .................................................................................. 14
1.3.6 后台系统审批化 .......................................................................................... 14
1.3.7 文档和注释 .................................................................................................. 14
XXIV | 亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统
1.3.8 备份 .............................................................................................................. 14
1.4 总结 ........................................................................................................................... 14
第 2 部分 高可用 ..................................................................................... 17
2 负载均衡与反向代理 ............................................................................................ 18
2.1 upstream 配置 ........................................................................................................... 20
2.2 负载均衡算法 ........................................................................................................... 21
2.3 失败重试 ................................................................................................................... 23
2.4 健康检查 ................................................................................................................... 24
2.4.1 TCP 心跳检查 .............................................................................................. 24
2.4.2 HTTP 心跳检查 ........................................................................................... 24
2.5 其他配置 ................................................................................................................... 25
2.5.1 域名上游服务器 .......................................................................................... 25
2.5.2 备份上游服务器 .......................................................................................... 26
2.5.3 不可用上游服务器 ...................................................................................... 26
2.6 长连接 ....................................................................................................................... 26
2.7 HTTP 反向代理示例 ................................................................................................ 29
2.8 HTTP 动态负载均衡 ................................................................................................ 30
2.8.1 Consul+Consul-template .............................................................................. 31
2.8.2 Consul+OpenResty ....................................................................................... 35
2.9 Nginx 四层负载均衡 ................................................................................................ 39
2.9.1 静态负载均衡 .............................................................................................. 39
2.9.2 动态负载均衡 .............................................................................................. 41
参考资料 ............................................................................................................................ 42
3 隔离术 ................................................................................................................. 43
3.1 线程隔离 ................................................................................................................... 43
3.2 进程隔离 ................................................................................................................... 45
3.3 集群隔离 ................................................................................................................... 45
3.4 机房隔离 ................................................................................................................... 46
3.5 读写隔离 ................................................................................................................... 47
目录 | XXV
3.6 动静隔离 .................................................................................................................. 48
3.7 爬虫隔离 .................................................................................................................. 49
3.8 热点隔离 .................................................................................................................. 50
3.9 资源隔离 .................................................................................................................. 50
3.10 使用 Hystrix 实现隔离 ........................................................................................... 51
3.10.1 Hystrix 简介 ............................................................................................... 51
3.10.2 隔离示例 .................................................................................................... 52
3.11 基于 Servlet 3 实现请求隔离 ................................................................................ 56
3.11.1 请求解析和业务处理线程池分离 ............................................................ 57
3.11.2 业务线程池隔离 ........................................................................................ 58
3.11.3 业务线程池监控/运维/降级 ...................................................................... 58
3.11.4 如何使用 Servlet 3 异步化 ........................................................................ 59
3.11.5 一些 Servlet 3 异步化压测数据 ................................................................ 64
4 限流详解 .............................................................................................................. 66
4.1 限流算法 .................................................................................................................. 67
4.1.1 令牌桶算法 .................................................................................................. 67
4.1.2 漏桶算法 ...................................................................................................... 68
4.2 应用级限流 .............................................................................................................. 69
4.2.1 限流总并发/连接/请求数 ............................................................................ 69
4.2.2 限流总资源数 .............................................................................................. 70
4.2.3 限流某个接口的总并发/请求数 ................................................................. 70
4.2.4 限流某个接口的时间窗请求数 .................................................................. 70
4.2.5 平滑限流某个接口的请求数 ...................................................................... 71
4.3 分布式限流 .............................................................................................................. 75
4.3.1 Redis+Lua 实现 ........................................................................................... 76
4.3.2 Nginx+Lua 实现 .......................................................................................... 77
4.4 接入层限流 .............................................................................................................. 78
4.4.1 ngx_http_limit_conn_module ...................................................................... 78
4.4.2 ngx_http_limit_req_module ......................................................................... 80
4.4.3 lua-resty-limit-traffic .................................................................................... 88
4.5 节流 .......................................................................................................................... 90
XXVI | 亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统
4.5.1 throttleFirst/throttleLast ................................................................................ 90
4.5.2 throttleWithTimeout ...................................................................................... 91
参考资料 ............................................................................................................................ 92
5 降级特技 .............................................................................................................. 93
5.1 降级预案 ................................................................................................................... 93
5.2 自动开关降级 ........................................................................................................... 95
5.2.1 超时降级 ...................................................................................................... 95
5.2.2 统计失败次数降级 ...................................................................................... 95
5.2.3 故障降级 ...................................................................................................... 95
5.2.4 限流降级 ...................................................................................................... 95
5.3 人工开关降级 ........................................................................................................... 96
5.4 读服务降级 ............................................................................................................... 96
5.5 写服务降级 ............................................................................................................... 97
5.6 多级降级 ................................................................................................................... 98
5.7 配置中心 ................................................................................................................. 100
5.7.1 应用层 API 封装 ........................................................................................ 100
5.7.2 使用配置文件实现开关配置 .................................................................... 101
5.7.3 使用配置中心实现开关配置 .................................................................... 102
5.8 使用 Hystrix 实现降级 ........................................................................................... 106
5.9 使用 Hystrix 实现熔断 ........................................................................................... 108
5.9.1 熔断机制实现 ............................................................................................ 108
5.9.2 配置示例 .................................................................................................... 112
5.9.3 采样统计 .................................................................................................... 113
6 超时与重试机制 .................................................................................................. 117
6.1 简介 ......................................................................................................................... 117
6.2 代理层超时与重试 ................................................................................................. 119
6.2.1 Nginx .......................................................................................................... 119
6.2.2 Twemproxy ................................................................................................. 126
6.3 Web 容器超时 ......................................................................................................... 127
6.4 中间件客户端超时与重试 ..................................................................................... 128
目录 | XXVII
6.5 数据库客户端超时................................................................................................. 131
6.6 NoSQL 客户端超时 ............................................................................................... 134
6.7 业务超时 ................................................................................................................ 135
6.8 前端 Ajax 超时 ....................................................................................................... 135
6.9 总结 ........................................................................................................................ 136
6.10 参考资料 .............................................................................................................. 137
7 回滚机制 ............................................................................................................ 139
7.1 事务回滚 ................................................................................................................ 139
7.2 代码库回滚 ............................................................................................................ 140
7.3 部署版本回滚 ........................................................................................................ 141
7.4 数据版本回滚 ........................................................................................................ 142
7.5 静态资源版本回滚................................................................................................. 143
8 压测与预案 ......................................................................................................... 145
8.1 系统压测 ................................................................................................................ 145
8.1.1 线下压测 .................................................................................................... 146
8.1.2 线上压测 .................................................................................................... 146
8.2 系统优化和容灾 .................................................................................................... 147
8.3 应急预案 ................................................................................................................ 148
第 3 部分 高并发 .................................................................................. 153
9 应用级缓存 ......................................................................................................... 154
9.1 缓存简介 ................................................................................................................ 154
9.2 缓存命中率 ............................................................................................................ 155
9.3 缓存回收策略 ........................................................................................................ 155
9.4 Java 缓存类型 ........................................................................................................ 156
9.4.1 堆缓存 ........................................................................................................ 158
9.4.2 堆外缓存 .................................................................................................... 161
9.4.3 磁盘缓存 .................................................................................................... 162
9.4.4 分布式缓存 ................................................................................................ 163
XXVIII | 亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统
9.4.5 多级缓存 .................................................................................................... 166
9.5 应用级缓存示例 ..................................................................................................... 167
9.5.1 多级缓存 API 封装 .................................................................................... 167
9.5.2 NULL Cache ............................................................................................... 170
9.5.3 强制获取最新数据 .................................................................................... 170
9.5.4 失败统计 .................................................................................................... 171
9.5.5 延迟报警 .................................................................................................... 171
9.6 缓存使用模式实践 ................................................................................................. 172
9.6.1 Cache-Aside ................................................................................................ 173
9.6.2 Cache-As-SoR ............................................................................................ 174
9.6.3 Read-Through ............................................................................................. 174
9.6.4 Write-Through ............................................................................................ 176
9.6.5 Write-Behind............................................................................................... 177
9.6.6 Copy Pattern ............................................................................................... 181
9.7 性能测试 ................................................................................................................. 181
9.8 参考资料 ................................................................................................................. 182
10 HTTP 缓存 .......................................................................................................183
10.1 简介 ....................................................................................................................... 183
10.2 HTTP 缓存 ............................................................................................................ 184
10.2.1 Last-Modified ........................................................................................... 184
10.2.2 ETag .......................................................................................................... 190
10.2.3 总结 .......................................................................................................... 192
10.3 HttpClient 客户端缓存 ......................................................................................... 192
10.3.1 主流程 ...................................................................................................... 195
10.3.2 清除无效缓存 .......................................................................................... 195
10.3.3 查找缓存 .................................................................................................. 196
10.3.4 缓存未命中 .............................................................................................. 198
10.3.5 缓存命中 .................................................................................................. 198
10.3.6 缓存内容陈旧需重新验证 ...................................................................... 202
10.3.7 缓存内容无效需重新执行请求 ............................................................... 205
10.3.8 缓存响应 .................................................................................................. 206
10.3.9 缓存头总结 .............................................................................................. 207
目录 | XXIX
10.4 Nginx HTTP 缓存设置 ......................................................................................... 208
10.4.1 expires ...................................................................................................... 208
10.4.2 if-modified-since ...................................................................................... 209
10.4.3 nginx proxy_pass ..................................................................................... 209
10.5 Nginx 代理层缓存 ................................................................................................ 211
10.5.1 Nginx 代理层缓存配置 ........................................................................... 211
10.5.2 清理缓存 .................................................................................................. 214
10.6 一些经验 .............................................................................................................. 215
参考资料 ......................................................................................................................... 216
11 多级缓存 ........................................................................................................... 217
11.1 多级缓存介绍 ....................................................................................................... 217
11.2 如何缓存数据 ....................................................................................................... 219
11.2.1 过期与不过期 .......................................................................................... 219
11.2.2 维度化缓存与增量缓存 .......................................................................... 220
11.2.3 大 Value 缓存 ........................................................................................... 220
11.2.4 热点缓存 .................................................................................................. 220
11.3 分布式缓存与应用负载均衡 ............................................................................... 221
11.3.1 缓存分布式 .............................................................................................. 221
11.3.2 应用负载均衡 .......................................................................................... 221
11.4 热点数据与更新缓存 ........................................................................................... 222
11.4.1 单机全量缓存+主从 ................................................................................ 222
11.4.2 分布式缓存+应用本地热点 .................................................................... 223
11.5 更新缓存与原子性 ............................................................................................... 224
11.6 缓存崩溃与快速修复 ........................................................................................... 225
11.6.1 取模 .......................................................................................................... 225
11.6.2 一致性哈希 .............................................................................................. 225
11.6.3 快速恢复 .................................................................................................. 225
12 连接池线程池详解 ............................................................................................ 227
12.1 数据库连接池 ...................................................................................................... 227
12.1.1 DBCP 连接池配置 .................................................................................. 228
XXX | 亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统
12.1.2 DBCP 配置建议 ....................................................................................... 233
12.1.3 数据库驱动超时实现 .............................................................................. 234
12.1.4 连接池使用的一些建议 .......................................................................... 235
12.2 HttpClient 连接池 ................................................................................................. 236
12.2.1 HttpClient 4.5.2 配置 ................................................................................ 236
12.2.2 HttpClient 连接池源码分析 ..................................................................... 240
12.2.3 HttpClient 4.2.3 配置 ................................................................................ 241
12.2.4 问题示例 .................................................................................................. 243
12.3 线程池 ................................................................................................................... 244
12.3.1 Java 线程池 .............................................................................................. 245
12.3.2 Tomcat 线程池配置 ................................................................................. 248
13 异步并发实战 ...................................................................................................250
13.1 同步阻塞调用 ....................................................................................................... 251
13.2 异步 Future ............................................................................................................ 252
13.3 异步 Callback ........................................................................................................ 253
13.4 异步编排 CompletableFuture ............................................................................... 254
13.5 异步 Web 服务实现 .............................................................................................. 257
13.6 请求缓存 ............................................................................................................... 259
13.7 请求合并 ............................................................................................................... 261
14 如何扩容 ...........................................................................................................266
14.1 单体应用垂直扩容 ............................................................................................... 267
14.2 单体应用水平扩容 ............................................................................................... 267
14.3 应用拆分 ............................................................................................................... 268
14.4 数据库拆分 ........................................................................................................... 271
14.5 数据库分库分表示例 ........................................................................................... 275
14.5.1 应用层还是中间件层 .............................................................................. 275
14.5.2 分库分表策略 .......................................................................................... 277
14.5.3 使用 sharding-jdbc 分库分表................................................................... 279
14.5.4 sharding-jdbc 分库分表配置 ................................................................... 279
14.5.5 使用 sharding-jdbc 读写分离................................................................... 283
目录 | XXXI
14.6 数据异构 .............................................................................................................. 284
14.6.1 查询维度异构 .......................................................................................... 284
14.6.2 聚合据异构 .............................................................................................. 285
14.7 任务系统扩容 ...................................................................................................... 285
14.7.1 简单任务 .................................................................................................. 285
14.7.2 分布式任务 .............................................................................................. 287
14.7.3 Elastic-Job 简介 ....................................................................................... 287
14.7.4 Elastic-Job-Lite 功能与架构 ................................................................... 287
14.7.5 Elastic-Job-Lite 示例 ............................................................................... 288
15 队列术 .............................................................................................................. 295
15.1 应用场景 .............................................................................................................. 295
15.2 缓冲队列 .............................................................................................................. 296
15.3 任务队列 .............................................................................................................. 297
15.4 消息队列 .............................................................................................................. 297
15.5 请求队列 .............................................................................................................. 299
15.6 数据总线队列 ...................................................................................................... 300
15.7 混合队列 .............................................................................................................. 301
15.8 其他队列 .............................................................................................................. 302
15.9 Disruptor+Redis 队列 ........................................................................................... 303
15.9.1 简介 .......................................................................................................... 303
15.9.2 XML 配置 ................................................................................................ 304
15.9.3 EventWorker............................................................................................. 305
15.9.4 EventPublishThread ................................................................................. 307
15.9.5 EventHandler............................................................................................ 308
15.9.6 EventQueue .............................................................................................. 308
15.10 下单系统水平可扩展架构 ................................................................................. 311
15.10.1 下单服务 ................................................................................................ 312
15.10.2 同步 Worker ........................................................................................... 313
15.11 基于 Canal 实现数据异构 ................................................................................. 314
15.11.1 MySQL 主从复制 .................................................................................. 315
15.11.2 Canal 简介 .............................................................................................. 316
XXXII | 亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统
15.11.3 Canal 示例 .............................................................................................. 318
第 4 部分 案例 ...................................................................................... 323
16 构建需求响应式亿级商品详情页 .......................................................................324
16.1 商品详情页是什么 ............................................................................................... 324
16.2 商品详情页前端结构 ........................................................................................... 325
16.3 我们的性能数据 ................................................................................................... 327
16.4 单品页流量特点 ................................................................................................... 327
16.5 单品页技术架构发展 ........................................................................................... 327
16.5.1 架构 1.0 .................................................................................................... 328
16.5.2 架构 2.0 .................................................................................................... 328
16.5.3 架构 3.0 .................................................................................................... 330
16.6 详情页架构设计原则 ........................................................................................... 332
16.6.1 数据闭环 .................................................................................................. 332
16.6.2 数据维度化 ............................................................................................. 333
16.6.3 拆分系统 .................................................................................................. 334
16.6.4 Worker 无状态化+任务化 ....................................................................... 334
16.6.5 异步化+并发化 ........................................................................................ 335
16.6.6 多级缓存化 .............................................................................................. 335
16.6.7 动态化 ...................................................................................................... 336
16.6.8 弹性化 ...................................................................................................... 336
16.6.9 降级开关 .................................................................................................. 336
16.6.10 多机房多活 ............................................................................................ 337
16.6.11 两种压测方案 ......................................................................................... 338
16.7 遇到的一些坑和问题 ........................................................................................... 339
16.7.1 SSD 性能差 .............................................................................................. 339
16.7.2 键值存储选型压测 .................................................................................. 339
16.7.3 数据量大时 JIMDB 同步不动 ................................................................. 342
16.7.4 切换主从 .................................................................................................. 342
16.7.5 分片配置 .................................................................................................. 342
16.7.6 模板元数据存储 HTML .......................................................................... 342
16.7.7 库存接口访问量 600w/分钟.................................................................... 343
目录 | XXXIII
16.7.8 微信接口调用量暴增 .............................................................................. 344
16.7.9 开启 Nginx Proxy Cache 性能不升反降 ................................................ 344
16.7.10 配送至读服务因依赖太多,响应时间偏慢 ........................................ 344
16.7.11 网络抖动时,返回 502 错误 ................................................................ 346
16.7.12 机器流量太大 ........................................................................................ 346
16.8 其他 ...................................................................................................................... 347
17 京东商品详情页服务闭环实践 .......................................................................... 348
17.1 为什么需要统一服务 ........................................................................................... 348
17.2 整体架构 .............................................................................................................. 349
17.3 一些架构思路和总结 ........................................................................................... 350
17.3.1 两种读服务架构模式 .............................................................................. 351
17.3.2 本地缓存 .................................................................................................. 352
17.3.3 多级缓存 .................................................................................................. 352
17.3.4 统一入口/服务闭环 ................................................................................. 353
17.4 引入 Nginx 接入层 ............................................................................................... 354
17.4.1 数据校验/过滤逻辑前置 ......................................................................... 354
17.4.2 缓存前置 .................................................................................................. 354
17.4.3 业务逻辑前置 .......................................................................................... 355
17.4.4 降级开关前置 .......................................................................................... 355
17.4.5 A/B 测试 .................................................................................................. 355
17.4.6 灰度发布/流量切换 ................................................................................. 356
17.4.7 监控服务质量 .......................................................................................... 356
17.4.8 限流 .......................................................................................................... 356
17.5 前端业务逻辑后置 ............................................................................................... 356
17.6 前端接口服务器端聚合 ....................................................................................... 357
17.7 服务隔离 .............................................................................................................. 358
18 使用 OpenResty 开发高性能 Web 应用 ............................................................ 360
18.1 OpenResty 简介 .................................................................................................... 361
18.1.1 Nginx 优点 ............................................................................................... 361
18.1.2 Lua 的优点............................................................................................... 361
XXXIV | 亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统
18.1.3 什么是 ngx_lua ........................................................................................ 361
18.1.4 开发环境 .................................................................................................. 362
18.1.5 OpenResty 生态 ........................................................................................ 362
18.1.6 场景 .......................................................................................................... 362
18.2 基于 OpenResty 的常用架构模式........................................................................ 363
18.2.1 负载均衡 .................................................................................................. 363
18.2.2 单机闭环 .................................................................................................. 364
18.2.3 分布式闭环 .............................................................................................. 367
18.2.4 接入网关 .................................................................................................. 368
18.2.5 Web 应用 .................................................................................................. 370
18.3 如何使用 OpenResty 开发 Web 应用 .................................................................. 371
18.3.1 项目搭建 .................................................................................................. 371
18.3.2 启停脚本 .................................................................................................. 372
18.3.3 配置文件 .................................................................................................. 372
18.3.4 Nginx.conf 配置文件 ............................................................................... 372
18.3.5 Nginx 项目配置文件 ............................................................................... 373
18.3.6 业务代码 .................................................................................................. 374
18.3.7 模板 .......................................................................................................... 374
18.3.8 公共 Lua 库 .............................................................................................. 374
18.3.9 功能开发 .................................................................................................. 375
18.4 基于 OpenResty 的常用功能总结........................................................................ 375
18.5 一些问题 ............................................................................................................... 376
19 应用数据静态化架构高性能单页 Web 应用 .......................................................377
19.1 整体架构 ............................................................................................................... 378
19.1.1 CMS 系统 ................................................................................................. 379
19.1.2 前端展示系统 .......................................................................................... 379
19.1.3 控制系统 .................................................................................................. 380
19.2 数据和模板动态化 ............................................................................................... 381
19.3 多版本机制 ........................................................................................................... 381
19.4 异常问题 ............................................................................................................... 381
目录 | XXXV
20 使用 OpenResty 开发 Web 服务 ....................................................................... 383
20.1 架构 ...................................................................................................................... 383
20.2 单 DB 架构 ........................................................................................................... 384
20.2.1 DB+Cache/数据库读写分离架构 ........................................................... 384
20.2.2 OpenResty+Local Redis+MySQL 集群架构 .......................................... 385
20.2.3 OpenResty+Redis 集群+MySQL 集群架构 ........................................... 386
20.3 实现 ...................................................................................................................... 387
20.3.1 后台逻辑 .................................................................................................. 388
20.3.2 前台逻辑 .................................................................................................. 388
20.3.3 项目搭建 .................................................................................................. 389
20.3.4 Redis+Twemproxy 配置 .......................................................................... 389
20.3.5 MySQL+Atlas 配置 ................................................................................. 390
20.3.6 Java+Tomcat 安装 ................................................................................... 394
20.3.7 Java+Tomcat 逻辑开发 ............................................................................ 395
20.3.8 Nginx+Lua 逻辑开发 .............................................................................. 401
21 使用 OpenResty 开发商品详情页 ..................................................................... 405
21.1 技术选型 .............................................................................................................. 407
21.2 核心流程 .............................................................................................................. 408
21.3 项目搭建 .............................................................................................................. 408
21.4 数据存储实现 ...................................................................................................... 410
21.4.1 商品基本信息 SSDB 集群配置 .............................................................. 410
21.4.2 商品介绍 SSDB 集群配置 ...................................................................... 413
21.4.3 其他信息 Redis 配置 ............................................................................... 416
21.4.4 集群测试 .................................................................................................. 418
21.4.5 Twemproxy 配置...................................................................................... 419
21.5 动态服务实现 ...................................................................................................... 421
21.5.1 项目搭建 .................................................................................................. 422
21.5.2 项目依赖 .................................................................................................. 422
21.5.3 核心代码 .................................................................................................. 422
21.5.4 web.xml 配置 ........................................................................................... 427
21.5.5 打 WAR 包 ............................................................................................... 428
XXXVI | 亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统
21.5.6 配置 Tomcat ............................................................................................. 428
21.5.7 测试 .......................................................................................................... 428
21.5.8 Nginx 配置 ............................................................................................... 428
21.5.9 绑定 hosts 测试 ........................................................................................ 430
21.6 前端展示实现 ....................................................................................................... 430
21.6.1 基础组件 .................................................................................................. 430
21.6.2 商品介绍 .................................................................................................. 432
21.6.4 前端展示 .................................................................................................. 433
21.6.5 测试 .......................................................................................................... 441
21.6.6 优化 .......................................................................................................... 441

本书勘误

印次
  • 页码:44、58  •  行数:1、11  •  印次: 1


    改为

    马瑞 提交于 2017/5/3 10:04:15
    张春雨 确认于 2017/5/3 15:23:26
  • 页码:9 344  •  行数:12 16  •  印次: 1

    假设一个读服务需要如下数据。
    目标数据 数据A 数据B 数据C 数据D 数据E
    获取时间 10ms 15ms 10ms 20ms 5ms

    如果串行获取,那么需要60ms。
    而如果数据C 依赖数据A 和数据B 、数据D 谁也不依赖、数据E 依赖数据C ,那
    么我们可以这样来获取数据。

    如果并发化获取,则需要30ms,能提升一倍的性能。
    假设数据C 还依赖数据F(5ms ),而数据 F 是在数据C 服务中获取的,此时,就可
    以考虑在取A/B/D服务数据时,并发预取数据 F,那么整体性能就变为25ms。

    马瑞 提交于 2017/4/14 11:27:21
    张春雨 确认于 2017/4/14 11:43:07
  • 页码:前言 XX  •  行数:24  •  印次: 1

    阅读本书需要对Java 、OpenResty(Nginx+Lua)、Redis、MysQl 等技术有一定了解,
    改为
    阅读本书需要对Java 、OpenResty(Nginx+Lua)、Redis、MySQL等技术有一定了解,

    马瑞 提交于 2017/5/3 9:17:11
    张春雨 确认于 2017/5/3 15:24:46
  • 页码:序4  •  行数:14  •  印次: 1

    无论是第一年人事软件开发的工程师,还是工作多年的资深人士,均可从本书中受益。
    改为
    无论是第一年从事软件开发的工程师,还是工作多年的资深人士,均可从本书中受益。

    马瑞 提交于 2017/5/3 9:13:33
    张春雨 确认于 2017/5/3 15:24:59
  • 页码:序8 XIII  •  行数:9  •  印次: 1

    多极缓存 改为 多级缓存

    马瑞 提交于 2017/4/14 11:24:15
    张春雨 确认于 2017/4/14 11:40:29

读者评论

  • 鸡肋

    monkeyDLuffy发表于 2017/7/17 14:12:34
  • 请问,书的第二章,关于负载均衡与反向代理这章节的配置是用什么写的啊?原谅我是个菜瓜,如下代码,我看着不像纯nginx,不像shell。是nginx +lua吗?请涛哥告知小弟一下学习方向。谢谢。

    曹赫洋发表于 2017/6/26 10:27:06
  • 书本上不是说有资源能下载吗?在哪下载?

    wolfkk发表于 2017/6/22 11:36:16
    • 原定共下载的代码后发现有泄密的可能,中途撤掉。后续印刷的版本中已经更正。非常抱歉!

      张春雨发表于 2017/6/22 15:45:04
    • @张春雨 书上提供的源码有限,你们又不提供下载了,很尴尬啊

      3122002310发表于 2017/7/6 16:27:07
    • @3122002310 是有些尴尬,但书用的例子都是京东真实用的,没法……

      张春雨发表于 2017/7/10 10:14:52
    • @张春雨 承诺出去的东西 怎么能轻易更改! 早干嘛了

      poeao发表于 2017/7/15 20:28:51
  • 你好,我已经购买纸质书了,你们纸质书中的读者服务里面有说在下载资源处下载书本所提供的的示例代码以及资源文件。请问下载地方在哪,我怎么找不到?

    没有冬天发表于 2017/6/11 10:11:40
    • 原定共下载的代码后发现有泄密的可能,中途撤掉。后续印刷的版本中已经更正。非常抱歉!

      张春雨发表于 2017/6/22 15:44:59
  • 哪里下载代码

    suchen发表于 2017/6/5 21:18:41
    • 读者你好,非常抱歉,本书暂未提供源代码下载这项服务。

      张春雨发表于 2017/6/8 14:28:33
    • @张春雨 不提供书上就不要承诺!

      poeao发表于 2017/7/15 20:29:25

电子书版本

  • Epub
  • Mobi

图书类别

相关博文

  • #小编推书#解秘亿级网站!

    Jessica瑾妞 2017-04-21

    提前看到这部《亿级流量网站架构核心技术:跟开涛学搭建高可用高并发系统》的人这样评价—— √ 经历618、双11多次大考,是保证大规模电商系统高流量、高频次的葵花宝典。 √ 集中火力讲述作者构建京东大流量系统用到的高可用和高并发原...

    Jessica瑾妞 2017-04-21
    37 0 0 0
  • 聊聊高并发之隔离术

    聊聊高并发之隔离术

    张开涛 2017-04-21

    隔离是指将系统或资源分割开,系统隔离是为了在系统发生故障时能限定传播范围和影响范围,即发生故障后不会出现滚雪球效应,从而保证只有出问题的服务不可用,其他服务还是可用的;而资源隔离有脏数据隔离、通过隔离后减少资源竞争提升性能等。我遇到的比...

    张开涛 2017-04-21
    775 0 0 0
  • spring-retry重试与熔断详解—《亿级流量》内容补充

    spring-retry重试与熔断详解—《亿级流量》内容补充

    张开涛 2017-05-02

    本文是《亿级流量》第6章 超时与重试机制补充内容。 spring-retry项目实现了重试和熔断功能,目前已用于SpringBatch、Spring Integration等项目。 RetryOperations定义了重试的API...

    张开涛 2017-05-02
    268 0 1 1
  • 如何开始写一本属于自己的技术书

    如何开始写一本属于自己的技术书

    张开涛 2017-05-23

    写书是一个苦力活,笔者最近把自己过去三年的博客文章进行了整理,出版了自己第一本纸质书《亿级流量网站架构核心技术》,花去了自己小半年的晚上、周末和假期。笔者从2012年开始在iteye上也陆续写了《跟我学Spring》、《跟我学Sprin...

    张开涛 2017-05-23
    115 2 0 0
  • 回滚机制——《亿级流量》

    回滚机制——《亿级流量》

    张开涛 2017-05-31

    回滚是指当程序或数据出错时,将程序或数据恢复到最近一个正确版本的行为。最常见的如事务回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚等。通过回滚机制保证系统某些场景下的高可用。 事务回滚 在执行数据库SQL时,如果我们检...

    张开涛 2017-05-31
    58 0 0 0
  • 线程中断、超时与降级——《亿级流量》内容补充

    线程中断、超时与降级——《亿级流量》内容补充

    张开涛 2017-06-05

    最近一位朋友在公众号留言问一个关于熔断的问题: 使用hystrix进行httpclient超时熔断错误,我是顺序操作的(没有并发),发现hystrix会超时断开,但是会导致hystrix线程池不断增多,直到后面因线程池装不下拒绝...

    张开涛 2017-06-05
    37 0 0 0
  • 降级特技之配置中心

    降级特技之配置中心

    张开涛 2017-06-12

    本文节选自《亿级流量网站架构核心技术》第五章 降级特技 配置中心部分。 降级开关我们需要通过配置方式来动态开启/关闭,在应用时,首先要封装一套应用层API方便业务逻辑使用,对于开关数据的存储如果涉及的服务器/系统较少,则初期可以考...

    张开涛 2017-06-12
    36 0 0 0
  • 超时与重试机制(1)—《亿级流量》

    超时与重试机制(1)—《亿级流量》

    张开涛 2017-06-19

    在实际开发过程中,笔者见过太多故障是因为超时没有设置或者设置的不对而造成的。而这些故障都是因为没有意识到超时设置的重要性而造成的。如果应用不设置超时,则可能会导致请求响应慢,慢请求累积导致连锁反应,甚至应用雪崩。而有些中间件或者框架在...

    张开涛 2017-06-19
    87 0 1 0
  • Nginx HTTP缓存设置

    Nginx HTTP缓存设置

    张开涛 2017-06-26

    Nginx提供了expires、etag、if-modified-since指令来实现浏览器缓存控制。 expires 如果我们使用Nginx作为静态资源服务器,那么可以使用expires进行缓存控制。 location /i...

    张开涛 2017-06-26
    35 0 0 0