书籍详情
《架构修炼之道:亿级网关、平台开放、分布式、微服务、容错等核心技术修炼实践》[29M]百度网盘|亲测有效|pdf下载
  • 架构修炼之道:亿级网关、平台开放、分布式、微服务、容错等核心技术修炼实践

  • 出版社:电子工业出版社
  • 出版时间:2019-03
  • 热度:6736
  • 上架时间:2024-06-30 09:08:33
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

产品特色

编辑推荐

适读人群 :互联网研发人员、传统行业转互联网研发人员、各软件行业架构师

亿级调用量的网关系统设计 平台开放、分布式系统设计 MQ的使用场景 消息推送系统 RPC I/O通信 微服务 多路复用 Tomcat的NIO 数据异构、系统容错 架构


内容简介

《架构修炼之道——亿级网关、平台开放、分布式、微服务、容错等核心技术修炼实践》结合实际的生产实践,分别对网关、平台开放、分布式、MQ、RPC、I/O、微服务、容错的内容做了详细介绍。其中的内容不限于概念,而是会下沉到实践背后的感悟与总结。比如本书详细阐述了网关系统是如何“抗量”,又是如何容错的,以及在每次大促中的备战经验。其他内容也是如此,基于实践,源于实践,比如微服务的实战案例、MQ的各种功能场景、消息推送的实践等讲的皆是实践之道。希望读者可以通过《架构修炼之道——亿级网关、平台开放、分布式、微服务、容错等核心技术修炼实践》了解互联网常用架构知识背后的原理及解决问题之道。

《架构修炼之道——亿级网关、平台开放、分布式、微服务、容错等核心技术修炼实践》中介绍的网关、分布式、MQ等知识背后的原理,对于每一位互联网研发人员都有很大的参考意义。

作者简介

王新栋

现就职于京东,“程序架道”公众号作者。平时热爱总结与分享,对高性能API网关、线程调优、NIO、微服务架构、容错等技术有较深的研究和实战经验。目前致力于带领团队在平台开放技术领域实现突破。

精彩书评

本书是一本实践性非常强的书籍,所有内容均是作者多年实战经验的总结,从亿级网关,再到亿级分布式系统架构,干货满满,无论你是互联网从业新手还是老司机,相信你都能从书中学到很多东西。

京东7FRESH交易研发负责人 李飚

架构修炼之道,重在修炼,作者将自己这些年在京东架构实践的修炼经历汇聚成此书,亿级系统架构的种种关键技术思考与实战尽在其中,得道之路并不轻松,参考前行者的修炼历程,期望你能修得自己的技术架构之道。

《大型网站技术架构:核心原理与案例分析》作者 李智慧

拜读《架构修炼之道》,大家一起奋斗的日子历历在目,这些经验和代码都是长期实践的结晶,经过了多年大促流量的考验,非常值得大家学习。

京东技术中台技术架构部中间件平台部总监 何小锋

从“网关”起式,很符合作者从事京东开放服务(JOS)开发和架构的专业特色。本书不仅给大家演示了解决开放服务领域中诸如开放、安全、事务、交互、容错等问题的各种招式(术),更重要是包含作者对解决方案的思考和提升(道),值得推荐。

京东基础交易平台架构师 肖飞

本书介绍了构建一个亿级网关所需要的核心技术,起于平台开放,终于平台开放的鲁棒性治理,进行了详细解决方案的阐述,如果你在构建一个鲁棒的API网关,本书将是一个不错的选择。

《亿级流量网站架构核心技术》作者 张开涛

作者作为一线互联网公司的一线架构师,将自己多年的积累与独到的见解落笔成书,非常值得一读。我与作者在写书的时间点恰逢重叠,又同在京东工作,期间进行了不少交流,从中受益良多。书中将互联网从架构选型到技术实战,都做了详尽说明,对于从事后端的技术人员有很好的借鉴意义。

京东数科数据研发负责人,Apache ShardingSphere发起人& PPMC,《未来架构:从服务化到云原生》作者 张亮

大部分领域都是学术界远远领先于工业界,而软件工程则是其中一个例外。随着中国互联网行业的高速发展,中国软件架构所遇到的挑战及所展现的水平已开始超外国同行。但可惜的是,由于书价、版税、工作压力等原因,国内在一线工作的架构师很少出来写书,我们更多是靠各种技术会议来聆听他们的经验与见解。王新栋是我在京东的同事,参与了大量京东高压力系统设计,也有大量对复杂系统的治理经验,每次跟他沟通都能从他身上学到很多架构上的新观点和经验。我很惊讶他能在如此繁忙的工作之中抽出时间来完成此书,读完此书,我感觉到酣畅淋漓,干货满满,是架构领域偏实战难得的一本好书。希望这本书也能对你起到帮助。

京东云中间件研发负责人 李道兵

一个好的架构不是设计出来的,而是演化出来的。本书结合作者在网关技术领域的多年实战经验,向我们呈现了亿级网关、分布式、微服务、消息推送、容错等关键技术和架构模式,其中也不乏作者在实战过程中踩过的各种坑。相信本书对大家一定有非常宝贵的参考价值,极力推荐。

研发架构部负责人 者文明

本书作者从一线研发做起,遇山开路,遇水搭桥,从遇见问题、解决问题,到预见问题、预防问题,善于总结和提高,能通过浅显易董的语言讲出事先看不到的问题和解决办法,可谓实践出真知,本书值得阅读,可以缩短大家的架构修炼之路。

京东智能供应链Y事业部 架构委员会负责人 林世洪

如果你想实现一个功能齐全的微服务网关,那么这本书绝对是你不容错过的!作者多年从事微服务网关系统的设计和开发,积累了丰富的理论和实践经验,本书是对这些经验的系统性总结,是指导微服务网关设计与开发的第一手资料!

京东技术中台 资深架构师 张晋军

本书是一本难得的分布式架构的的书籍,书中重视理论,阐述了国内大型互联网企业必用的分布式技术,也是一本具备实际操作的书籍,新栋在京东5年不断对业务系统分布式进行架构提升和填坑,亲身经历多次亿万级访问量,书中充分体现了这一实践。阅读此书的可以是新手,也可以是对分布式架构有兴趣程序员,还可以是着手分布式架构实施的架构师

《Spring Boot 2 精髓》作者 李家智

作为一名中高级软件开发工程师,日常工作中软件架构的设计能力至关重要,好的架构对一个大型系统的稳定、高效、健壮起到了决定性的作用。作者以如何设计亿级网关为开始,为我们介绍了软件架构设计中的典型场景,其中包含开放平台、分布式、微服务、服务容错、消息中间件等,相信大家看完这本书后,在系统架构设计方面会有所提升。

自媒体 纯洁的微笑作者 张强

提升架构设计能力,不仅需要系统的理论知识,更需要大量的工作实践。本书以实际场景为主题,融入作者多年实战经验,逐步深入阐述架构知识,以点到面契入架构之道 。

京东无界零售赋能事业部无界产品研发部负责人 陈有存

本书内容是实践出来的满满干货,涵盖开放平台各个方面的相关技术和方案,强烈推荐负责开放平台搭建的同学及其他从事高并发系统的同学阅读,相信大家会受益匪浅。

京东平台生态部 首席架构师 欧阳兴文

有幸提前拜读王新栋老师的新书,该书以实践为根基,从架构设计多方面进行深入解析。可见作者功力深厚,知识精华层出不穷,读后令人灵感不断,对技术精进大有裨益。本书非常适合深入架构实践的读者们阅读,强烈推荐!

《架构探险》作者 黄勇

本书知识点来源于作者常年的工作积累和总结。从实际出发,逐渐积累。提炼出的知识点从微服务到中大型分布式系统都十分具有借鉴意义。能够贴近实际的生产环境,让大家在实际的coding和线上运维工作中少走弯路。

携程金融 技术总监 李勇

王新栋是架构修炼的忠实实践者,多年的一线架构经验让他在架构领域有了丰富的沉淀。行业里有很多关于架构的书籍,落地实战的较少,本书对每一个细节都由浅入深地进行讲解并加以落地,实属难得。推荐给想在技术架构领域深耕的同学阅读!

京东京麦平台研发负责人 王栋


目录

第1章 网关之道

1.1 认识API网关

1.1.1 API网关是什么

1.1.2 API网关涵盖的基本功能

1.1.3 API网关架构示例

1.2 一个API的生命周期

1.2.1 什么是API

1.2.2 生命周期

1.2.3 生命周期的过程

1.3 API网关的基石—泛化调用

1.4 如何发布API到网关系统

1.5 管道技术

1.5.1 管道实现

1.5.2 如何获取管道

1.5.3 管道信息传递

1.5.4 管道的优点

1.5.5 责任链模式

1.6 一个传统网关系统有几种“死”法

1.6.1 关注CPU

1.6.2 关注磁盘

1.6.3 关注网络

1.7 Servlet 3异步原理与实践

1.7.1 什么是Servlet

1.7.2 什么是Servlet规范

1.7.3 同步、异步、阻塞、非阻塞

1.7.4 Servlet 3的异步流程

1.7.5 Servlet 3的异步使用步骤

1.7.6 Servlet 3的异步使用示例

1.7.7 Tomcat NIO Connector、Servlet 3.0 Async和Spring MVC Async的关系

1.7.8 Servlet 3非阻塞I/O

1.8 全异步网关

1.9 脱库与多级缓存

1.9.1 脱库

1.9.2 多级缓存

1.10 热更新

1.11 网关系统的七种武器

1.12 本章小结

第2章 开放之道

2.1 认识OAuth 2.0

2.1.1 什么是OAuth 2.0

2.1.2 角色

2.1.3 OAuth 2.0协议流程

2.1.4 采用OAuth 2.0协议的开放平台

2.1.5 京东宙斯开放(授权码方式场景)

2.2 开放平台

2.2.1 一名开发者的基本需求

2.2.2 完整性

2.2.3 稳定性

2.2.4 安全性

2.2.5 整体技术架构

2.2.6 意义

2.3 如何设计一套SPI应用架构

2.3.1 API和SPI区别

2.3.2 术语约定

2.3.3 业务场景

2.3.4 架构实现

2.3.5 测试

2.3.6 SPI是一种思想

2.4 讲一讲越权

2.4.1 什么是越权访问

2.4.2 越权访问的种类

2.4.3 发生越权访问的根本原因

2.4.4 如何避免与解决

2.4.5 开放平台环境下的越权访问

2.5 从Facebook数据泄漏谈开放安全

2.5.1 OAuth 2.0授权

2.5.2 数据加/解密

2.5.3 IP地址白名单

2.5.4 平台内环境

2.6 API治理

2.6.1 性能

2.6.2 可用率

2.6.3 文档可读性

2.7 API经济

2.7.1 API盈利模式

2.7.2 API市场

2.7.3 API经济价值链

2.8 沙箱环境

2.8.1 协同

2.8.2 维护

2.9 本章小结

第3章 分布式之道

3.1 认识分布式

3.2 分布式事务

3.2.1 什么是分布式事务

3.2.2 CAP和BASE理论

3.3 分布式锁

3.3.1 为什么需要分布式锁

3.3.2 分布式锁的实现方式

3.4 分布式限流

3.4.1 计数器

3.4.2 限速器

3.4.3 限流的维度

3.4.4 流量包

3.4.5 再来谈令牌桶

3.5 衡量性能的指标QPS、TPS等

3.5.1 什么是QPS

3.5.2 什么是TPS

3.5.3 什么是RT

3.5.4 什么是并发数

3.6 本章小结

第4章 MQ之道

4.1 认识JMS

4.1.1 JMS的组成

4.1.2 JMS编程模型

4.1.3 JMS消息结构

4.1.4 JMS消息模型

4.2 带着思考理解MQ下的基本概念

4.2.1 生产者—消费者(Producer-Consumer)

4.2.2 空间解耦

4.2.3 时间解耦

4.2.4 观察者模式与发布/订阅

4.3 消费幂等

4.3.1 什么是幂等操作

4.3.2 是什么引起我们关注消费幂等

4.3.3 如何处理消费幂等

4.4 详述MQ各种功能场景

4.4.1 解耦

4.4.2 削峰填谷

4.4.3 最终一致性

4.4.4 广播消费

4.4.5 使用集群消费模拟广播

4.4.6 重试之坑

4.5 数据异构的武器—MQ+canal

4.5.1 定义

4.5.2 常见应用场景

4.5.3 数据异构方向

4.5.4 数据异构的常用方法

4.5.5 binlog和MQ方式

4.6 关于MQ再问自己几个问题

4.6.1 我想自己控制开始消费如何做

4.6.2 为什么需要消息过滤

4.6.3 过期消息是怎么处理的

4.6.4 消息重试的注意点

4.6.5 为什么需要事务消息

4.6.6 消息为什么没有了顺序

4.7 本章小结

第5章 消息推送之道

5.1 认识消息推送

5.2 构建长连接推送系统之HTTP实践

5.2.1 Web网络结构及配置

5.2.2 基本配置

5.2.3 Transfer-Encoding: chunked

5.2.4 HTTP长连接系统组成结构

5.2.5 Session管理

5.2.6 心跳

5.2.7 消息接收的概念

5.2.8 消息推送的概念

5.2.9 消息追踪

5.2.10 HTTP长连接系统时序调用

5.2.11 创建会话(连接)

5.2.12 心跳逻辑

5.2.13 消息接收实例

5.2.14 消息推送实例

5.2.15 半推半拉

5.2.16 系统优化

5.2.17 测试

5.3 构建消息推送系统之Netty实践

5.3.1 启动

5.3.2 创建会话

5.3.3 心跳

5.3.4 发送消息

5.3.5 注销会话

5.3.6 黏包

5.4 一台服务器可以“跑”多少个连接

5.5 一台服务器可以“跑”多少个线程

5.6 弱网络环境

5.7 发送APNs

5.7.1 认识APNs

5.7.2 HTTP/2

5.7.3 Pushy的使用

5.8 本章小结

第6章 RPC之道

6.1 认识RPC

6.2 RPC是如何实现通信的

6.2.1 动态代理

6.2.2 反射

6.2.3 序列化

6.2.4 网络编程

6.3 一次RPC调用时间都去哪儿了

6.4 异步RPC

6.4.1 异步调用

6.4.2 异步监听

6.4.3 callback调用

6.5 本章小结

第7章 I/O之道

7.1 认识I/O

7.2 解读I/O多路复用技术

7.2.1 I/O多路复用概述

7.2.2 用户进程和内核

7.2.3 select和recvfrom

7.2.4 阻塞、非阻塞

7.2.5 适用场景

7.3 解读Tomcat中的NIO模型

7.3.1 Tomcat对I/O模型的支持

7.3.2 Tomcat中NIO的配置与使用

7.3.3 NioEndpoint组件关系图解读

7.3.4 NioEndpoint执行序列图

7.3.5 关于性能

7.4 本章小结

第8章 微服务之道

8.1 认识微服务

8.2 微服务后如何做一次系统梳理

8.2.1 系统分类与演进

8.2.2 梳理目的要搞清楚

8.2.3 如何做

8.2.4 核心功能的核心流程梳理

8.3 朝着微服务的方向去做一次数据库拆分

8.3.1 现状

8.3.2 方法

8.3.3 拆库的步骤(MySQL)

8.4 本章小结

第9章 容错之道

9.1 认识容错

9.2 降级与限流

9.3 线程池隔离

9.3.1 为什么要做线程池隔离

9.3.2 实现一个线程池隔离

9.3.3 线程池隔离的优点

9.3.4 线程池隔离的缺点

9.4 快速失败

9.5 熔断

9.5.1 熔断器介绍

9.5.2 熔断使用注意

9.6 Hystrix的使用

9.6.1 认识Hystrix

9.6.2 线程池隔离

9.6.3 信号量隔离

9.6.4 熔断

9.6.5 回退降级

9.7 大促备战都“备”什么

9.7.1 分离技术

9.7.2 缓存技术

9.7.3 SQL优化

9.7.4 快速失败

9.7.5 降级限流

9.7.6 性能压测

9.8 本章小结

第10章 程序之外

10.1 程序与健身

10.2 程序员的硬件装备

10.3 程序员应该看的四本技术书籍

10.4 程序员应该熟悉的常用定律法则

10.5 知识、数据、工具

参考文献


前言/序言

序言一

2019年年初,新栋突然说他要出一本书,找我写序言,我甚是惊喜,主要让我惊喜的地方在于新栋同学带领一个团队在2018年不断地做JOS开放平台的迭代升级,平时加班加点压力很大的情况下,还能抽出时间出来写书,另一个惊喜的地方就是看到一个持续在技术上追求卓越的架构师身影。

做一个好的开放平台有三方面的挑战,第一是来自稳定性挑战,每天数十亿的请求,有的来自商家、有的来自外部开发者,还有的来自外部合作伙伴平台,API请求的类型除了简单的Key-Value读写,还有多维度的写数据请求和复杂查询。怎么保证部分API服务出现问题不让整个网关系统受到影响?在流量洪峰到来的时刻怎么保证核心服务、核心请求的高可用?

第二来自开发者的体验挑战,这里的开发者包括提供API的开发者及使用API的开发者,对于开发者的体验大家往往会忽略,但他们是开放平台的真实客户,决定开放平台的发展和未来。怎么让提供API的开发者更高效率地管理和发布API?怎么让使用API的开发者更方便、高效地利用API开发自己的应用,出现问题怎么调试?怎么自动化地发布管理应用?

第三来自安全的挑战,可以说这是一个最大的挑战。电商的数据是多维度的,包括商品管理、订单生产、售后客服处理、财务结算及各种营销管理,等等,基本每个场景都会涉及数据处理和授权。如何能在开放的同时保障用户的隐私信息、平台的商业数据等不被泄漏或滥用?而且还有个矛盾点在于数据越开放,平台就越繁荣,在这里需要做哪些技术上的安全保障和机制?这些问题直接关系开放平台是否还可以继续做下去!

以上这些技术挑战的解决方案,只有在工作实践中持续不断打磨才能迭代出来,新栋在此书中将这些技术实践进行思考和总结,由浅入深地讲给大家,相信会给你带来更多的思考和收获。

京东研发总监

付彩宝

序言二

和作者王新栋初次相识是在大学毕业后入职的第一家公司里,那时他也刚刚毕业入职不久,算来已经过去了十余年,在此期间我们一起共事了三家公司,一起工作了七八年之久,直到现在我们还会不定期进行线上、线下的沟通。

经过了长时间的沉淀,王新栋已经从初入职场的新人逐步成长为负责百亿级调用量系统的架构师。作者将此期间的经历,经过总结和思考,将值得借鉴和分享的内容记录了下来,汇集成册,希望能给同样身处计算机开发领域的同学以帮助和思考。

翻看书中的章节经常让我有似曾相识的感觉。大多的系统,上到复杂的分布式集群,下到功能简单一些的微服务,乃至all in one的系统,除了业务逻辑,我们80%以上的精力都在考虑系统的健壮性、扩展性和解决系统中的异常情况。随着每一个章节的展开,本书为我们列举出了一个系统稳定、可维护而又健壮的必要条件,以及当灾难性故障发生时的应对策略有哪些,为我们设计系统提供了一整套思路。

经常看到工作了两三年的开发同学说,自己除了基本的CURD什么都不会,对于系统如何去设计和迭代完全没有概念。如果你有相同的疑惑,那么这本书应该相当适合你。通过阅读此书能够知道:我们如果负责一个系统除了涉及业务基础的CURD还应该有哪些需要去了解,需要去考虑的地方。相信阅读完本书,能够让那些刚刚踏入开发领域的同学眼前一亮,看到除CURD外更应该关注的系统架构和编程之道。能够快速从编写业务代码进阶到更高的阶段。

当然,已经入门的同学也可以把它作为一本工具书,相较于高谈阔论的经典理论,本书阐述的知识点更加贴地气,书中涉及的知识点大都是经由真实的生产环境抽象提炼而来的。本书的知识点可以给你提供一些借鉴和启发,能够让你找到解决问题的灵感。

携程金融 技术总监

李勇

前言

本书的主书名叫作“架构修炼之道”,当提到“道”的时候,我们通常会想起孔子、孟子,或者想起国外一些“大神”写的技术书籍,因此使用该书名可谓十分大胆。但实际想来,“实践是检验真理的唯一标准”,本书中的“道”,就是被检验过的真理、道理,是最普通、最真实的道理。本书还有一个副标题,“亿级网关、平台开放、分布式、微服务、容错等核心技术修炼实践”,书中对于这些技术的描述都是我在工作过程中通过反复实践得到的总结和感悟。同时,工作中我们敬畏每一行代码,敬畏每一次线上生产事故,每次大促备战我们都怀着一颗敬畏之心,这些年来在京东的架构实践无疑就是一场修炼。这正是本书名字的由来。

在京东转眼已五年时光,经历过的系统有的已经发生了从千万级、十亿级到百亿级的转变,我对系统如何“抗量”有深刻的切身体会,这些知识在网关之道、I/O之道章节中都有介绍。当我们抗住亿级访问量的时候,系统的容错又是怎样实施的?比如线程池的隔离、快速失败机制的运用等容错知识在容错之道章节中有重点详解。另外本书也讲解了分布式、微服务的知识,在微服务之道一章中,并没有过多叙述微服务的概念,而是直接将工作过程中亲身经历的两个微服务案例给读者呈现出来。这是一本从实践中总结出来的书,读者阅读的时候会发现,书中介绍概念性的东西只是作为切入点,转而迅速去讲解实践的感悟,然后深入某个知识领域去做一次深度探索,比如解读I/O多路复用技术、解读Tomcat中的NIO模型、解读一次RPC调用时间都去哪儿了、详述MQ各种功能场景等,这些内容都是经过实践得出的真知。

本书共10章,第1章网关之道讲述网关的前世今生,以及一个成熟的网关应该具备的能力;第2章开放之道主要在网关的基础上围绕API展开介绍;第3章分布式之道重点介绍常见的事务、锁、限流场景下的知识;第4章MQ之道从基础一直介绍到MQ的常用功能场景;第5章消息推送之道以HTTP和TCP的方式分别介绍生产系统中消息推送的实践;第6章RPC之道着重从RPC的底层原理去思考分析;第7章I/O之道深度解析多路复用技术和Tomcat中的NIO模型;第8章微服务之道以我亲历的两个实践为案例介绍微服务是如何落地的;第9章容错之道结合前面章节的知识重点讲述系统容错的常用方法,以及我所在公司在大促备战中常用的技术;第10章程序之外,我结合自己的真实感受讲述健身锻炼跟程序之间的感悟,以及程序员的硬件装备等内容。相信本书的知识一定可以帮助到读者。

从自己开始写博客的那天起,我便喜欢上了写作,将自己总结的东西发布到技术社区网站上,随后又被网站推荐到首页,再后来又被很多公众号转载。能在互联网这个大环境里与素未谋面的朋友交流,这些经历给我带来了很大的喜悦感与成就感。但写博客终归跟写书不一样,在写博客的时候如有读者留言指正,还可以迅速修改,但写成的书一旦描述不当却是“覆水难收”,写书需要更严谨,因此对自己的要求更加严格。虽然可以用“人非圣贤,孰能无过”为自己开脱,但还是生怕出错会误导读者,古人云“尽信书不如无书”,希望读者可以带着自己的思考阅读本书。

能够完成本书,首先要感谢博文视点的晓猛,没有您就没有这本书。还要感谢京东给我提供了这么好的平台和机会,没有在京东的历练,我也就没有这么丰富的技术阅历来完成本书的写作。感谢我的领导与同事,也感谢我的团队,你们给了我很大的帮助。经常看其他作者的前言,看到最后感谢家人环节的时候总是很有感触,但真正到了自己要写出这番话的时候,才体会到了这份感谢的重量。非常感谢我的爱人,是你全身心照顾我们的儿子,才让我有了足够的业余时间来完成写作,在这期间我很少陪伴你和儿子,对此深感愧疚与歉意。最后要感谢我的父母,是你们养育了我,又辛苦劳作供我读书,点亮了我的生活。

王新栋

2019年1月于北京