作者:王新栋 著

定价:79

出版社:电子工业出版社

出版日期:2019年03月01日

页数:256

装帧:平装

ISBN:9787121360374


目录章网关之道1.1 认识API网关1.1.1 API网关是什么1.1.2 API网关涵盖的基本功能1.1.3 API网关架构示例1.2 一个API的生命周期1.2.1 什么是API1.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 关注CPU1.6.2 关注磁盘1.6.3 关注网络1.7Servlet 3异步原理与实践1.7.1什么是Servlet1.7.2什么是Servlet规范1.7.3同步、异步、阻塞、非阻塞1.7.4Servlet 3的异步流程1.7.5Servlet 3的异步使用步骤1.7.6Servlet 3的异步使用示例1.7.7Tomcat NIO Connector、Servlet 3.0 Async和Spring MVC Async的关系1.7.8Servlet 3非阻塞I/O1.8全异步网关1.9脱库与多级缓存1.9.1脱库1.9.2多级缓存1.10热更新1.11网关系统的七种武器1.12本章小结第2章开放之道2.1认识OAuth 2.02.1.1 什么是OAuth 2.02.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.6API治理2.6.1 性能2.6.2 可用率2.6.3 文档可读性2.7API经济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什么是QPS3.5.2什么是TPS3.5.3什么是RT3.5.4什么是并发数3.6 本章小结第4章MQ之道4.1认识JMS4.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+canal4.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: chunked5.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发送APNs5.7.1 认识APNs5.7.2 HTTP/25.7.3 Pushy的使用5.8 本章小结第6章RPC之道6.1认识RPC6.2RPC是如何实现通信的6.2.1 动态代理6.2.2 反射6.2.3 序列化6.2.4 网络编程6.3一次RPC调用时间都去哪儿了6.4异步RPC6.4.1 异步调用6.4.2 异步6.4.3 callback调用6.5 本章小结第7章I/O之道7.1 认识I/O7.2解读I/O多路复用技术7.2.1 I/O多路复用概述7.2.2 用户进程和内核7.2.3 select和recvfrom7.2.4 阻塞、非阻塞7.2.5 适用场景7.3解读Tomcat中的NIO模型7.3.1 Tomcat对I/O模型的支持7.3.2 Tomcat中NIO的配置与使用7.3.3NioEndpoint组件关系图解读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.6Hystrix的使用9.6.1 认识Hystrix9.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 本章小结0章程序之外10.1程序与健身10.2程序员的硬件装备10.3程序员应该看的四本技术书籍10.4程序员应该熟悉的常用定律法则10.5知识、数据、工具参考文献

内容简介

本书内容包括分布式、开放网关、消息推送、RPC、MQ、容错、微服务本身之外的思考、开放平台、互联网场景问题定位与分析等内容。描述每个知识点的各种使用或者适用场景。以及每个场景下可能遇到的问题,以及这种技术我们为什么要使用它及它背后的一些道理。本书还会讲述一些在京东内部已经良好实践的技术应用。

王新栋 著

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

"序言一2019年年初,新栋突然说他要出一本书,找我写序言,我甚是惊喜,主要让我惊喜的地方在于新栋同学带领一个团队在2018年不断地做JOS开放平台的迭代升级,平时加班加点压力很大的情况下,还能抽出时间出来写书,另一个惊喜的地方就是看到一个持续在技术上追求卓越的架构师身影。做一个好的开放平台有三方面的挑战,是来自稳定性挑战,每天数十亿的请求,有的来自商家、有的来自外部开发者,还有的来自外部合作伙伴平台,API请求的类型除了简单的Key-Value读写,还有多维度的写数据请求和复杂查询。怎么保证部分API服务出现问题不让整个网关系统受到影响?在流量洪峰到来的时刻怎么保证核心服务、核心请求的高可用?第二来自开发者的体验挑战,这里的开发者包括提供API的开发者及使用API的开发者,对于开发者的体验大家往往会忽略,但他们是开放平台的真实客户,决定开放平台的发展和未来。怎么让提供等