努力做成一件重要的小事

        在过去的2018年最终完成了一本书的创作,算下来共耗时两年之久,现在,这本书即将要跟大家见面,感慨万千。对写书这件事很是谨慎,毕竟跟写博客、写公众号文章不一样,平时写博客如果有了差错随即修改重新发布就好。但写书犹如覆水很难收。这也就要求必须严谨再严谨,生怕写错误导一片,虽然可以用 “人非圣贤孰能无过” 来为自己开脱,但总归是酿成错误。我来京东到今年3月份马上就要满五年时间,这五年来亲历了很多系统的演变,访问量的突增、架构的变化、当然也少不了线上事故,这些都是宝贵的财富,我将这些知识总结归纳丰富到了这本书中。但为了整本书的质量,在这两年内我从看书变成了吃书,已吃掉了20多本技术书籍,在这里非常感谢一直鼓励我的晓猛,他也给我寄了很多书。创作的过程中针对某些知识点我也跟周围的同事、朋友进行过多次反复的讨论,非常感谢你们。

       一直感觉自己是一个很勤奋的人,也自认为天生聪慧一般,只能走勤奋这条路。在过去的近两年的时间里我几乎每天6点起床,7点多到公司健身锻炼近一个小时,也只有这样才能扛得住上半年的极大压力。在2018年对于我很重要的一件事情是我接手了京东的宙斯开放平台,跟兄弟们一起封闭了半年时间,也激发了更大的斗志,有了敢叫日月换新天的勇气,现在想来皆因坚持锻炼,如没有每日的身体淌汗,也不知道自己会否能扛得住,即便精神上可以身体上也乏力,这半年是最难熬的时间,每天晚上回家大都到11点多甚至更晚,再坐下来整理思路写一个小时,基本都是到凌晨睡去。也正是在这半年时间里让我养成了更加积极主动思考的习惯,同时每天的思考也都被记录了下来,我用锤子便签,每当有自己思考的东西都马上写下来,留好以便日后派上用场。那么实际后来这些思考都转换成了文字被我写进了书里。

       这本书的初始结构始于前年,当时个人遇到了限度,让我想起《老人与海》中的桑地亚哥,尽管是最好的渔夫却无鱼可钓,这位老人遇到了他的限度,就像 “最好的农民遇到了大旱,最好的猎手久久碰不到猎物一般”,可是我没有沮丧更没有倦怠,这段期间我开始对过去的工作以及线上问题做总结,同时写了很多的技术文章,有些当时已发布到网站被推荐到首页,也被各大公众号转载。在那个时候我就有了整本书的大纲原型,但并没有出书的计划仅写作而已,出书的决心要到了当年底一次技术大会上跟晓猛做了一次畅谈沟通。也就在那个时候给自己定了目标,每天写一个小时,每个周末写一天,这样一直坚持到书最终完稿。有一天问自己,这样是否值得,但已停不下来。去年的国庆节,我去了图书馆,每天打卡写作,持续五天,基于平时的总结在图书馆里面我完成了本书的一部分内容,接近1/8吧,那时我就发现自己真TM能写,虽达不到下笔如有神的境界,但写字也如雨注,恨自己为什么没有早点发现这点优势。“人类本身有自己的限度,但是当人们一再把手伸到限度之外,这个限度就一天天地扩大了”。

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

       现在有了一个新的开始,展望未来应该怎样度过?“人活在世界上,需要这样的经历:做成了一件事,又做成一件事,逐渐地对自己要做的事有了把握。”  “当回首往事的时候,不因虚度年华而悔恨,也不因碌碌无为而羞耻”。厉兵秣马,“大闹”一场!

最后,欢迎大家多多宣传此书,我定相信书的内容一定不会让大家失望。

(现已开启预售) 点此可以直达预售地址

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

书中所阐述的 “道” 均是互联网架构实践过程中总结出来的道理,有些道理甚至付出了惨痛的线上事故代价而换来的。我们如何将一个承载亿级调用量的网关系统设计的高效而稳定,如何将一个平台合理化的开放达到多边共赢,如何熟练的驾驭分布式系统设计,如何更深入的了解MQ的使用场景,如何搭建一个成熟的消息推送系统,以及RPC、I/O通讯、微服务思想的实践落地,这些知识在本书中都有详尽的阐述,相信你翻一翻本书的目录就能找到你感兴趣的知识点,比如多路复用、Tomcat的NIO、数据异构、系统容错方法等等,这些内容是我们每一位架构师以及软件开发人员在突破自己限度的过程中所需要具备的潜力技能。

 

 

书籍目录:

第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 知识、数据、工具

参考文献

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值