《亿级流量网站架构核心技术》目录一览

2018/08 作者:ihunter 0 0

 在2011年年底的时候笔者就曾规划写一本Spring的书,但是因为是Spring入门类型的书,框架的内容更新太快,觉得还是写博客好一些,因此就把写完的书稿放到了博客(jinnianshilongnian.iteye.com,因为是龙年开的博客,所以很多网友喊我龙年兄),并持续更新,到现在已经不多五年了。大家再网上找资源时会发现很多内容不成体系,不能系统的学习,这也是我的痛点,因此我写博客的一个特色就是坚持写系列文章,想学习某种技术只要我博客有的不需要去其他地方再找了,到现在已经写过《跟我学Spring》、《Spring杂谈》、《跟我学Spring MVC》、《跟我学Shiro》、《跟我学Nginx+Lua》等系列,累计访问量已超过1000万。我写博客还有一个私心:带新人,当时我们系统架构使用了OpenResty,而我们团队都是Java程序员,所以就写了《跟我学Nginx+Lua》,新人跟着教程学一遍就能上手干活了。

  2015年开始笔者在个人公众号“开涛的博客”写《聊聊高并发系统》系列文章,陆续发表了聊聊高并发系统之限流特技、聊聊高并发系统之降级特技、聊聊高并发系统之队列术、构建需求响应式亿级商品详情页等文章。这些内容都是笔者在一线使用过的一些,而这些技能是一线程序员或架构师应该掌握的必备技能。而且这一系列也得到了很多读者反馈和认可,帮助他们解决了系统的一些问题。公众号发表的有些内容偏理论,很多人不知道怎么去用,因此就有了丰富理论和实战内容并出版本书的想法,想学习高可用和高并发系统技能看本书就够了,并且可以作为案头工具书。

  本书暂定名称为《亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统》,如有好的书名建议欢迎留言,必当重谢。内容已交由出版社编辑,相信很快就会和大家见面。主要内容结构和目录如下所示:

  1a4cc63f8f404d4da25be7e6f7d9f0bb_th.jpeg

  36e2a82716e646e5883b8ff9a19d35b1_th.jpeg

  第一部分概述

  高并发原则

  无状态

  拆分

  服务化

  消息队列

  数据异构

  缓存银弹

  并发化

  高可用原则

  降级

  限流

  切流量

  可回滚

  业务设计原则

  防重设计

  幂等设计

  流程可定义

  状态与状态机

  后台系统操作可反馈.

  后台系统审批化.

  文档&注释

  备份

  第二部分 高可用负载均衡与反向代理

  upstream配置

  负载均衡算法

  失败重试

  健康检查

  tcp心跳检查

  http心跳检查

  其他配置

  域名上游服务器

  备份上游服务器

  不可用上游服务器

  长连接

  HTTP反向代理示例

  HTTP动态负载均衡

  Consul+Consul-template

  Consul+OpenResty

  TCP四层负载均衡

  静态负载均衡

  动态负载均衡

  隔离术

  线程隔离

  进程隔离

  集群隔离

  机房隔离

  读写隔离

  动静隔离

  爬虫隔离

  热点隔离

  资源隔离

  使用Hystrix实现隔离

  Hystrix简介

  隔离示例

  基于Servlet3实现请求隔离

  请求解析和业务处理线程池分离

  业务线程池隔离

  业务线程池监控/运维/降级

  如何使用Servlet3异步化

  限流详解

  限流算法

  令牌桶算法

  漏桶算法

  应用级限流

  限流总并发/连接/请求数

  限流总资源数

  限流某个接口的总并发/请求数

  限流某个接口的时间窗请求数

  平滑限流某个接口的请求数

  分布式限流

  redis+lua实现

  Nginx+Lua实现

  接入层限流

  ngx_http_limit_conn_module

  ngx_http_limit_req_module

  lua-resty-limit-traffic

  降级特技

  降级预案

  自动开关降级

  超时降级

  统计失败次数降级

  故障降级

  限流降级

  人工开关降级

  读服务降级

  写服务降级

  多级降级

  配置中心

  应用层API封装

  配置文件实现开关配置

  配置中心实现开关配置

  使用Hystrix实现降级

  使用Hystrix实现熔断

  熔断机制实现

  配置示例

  采样统计

  超时与重试机制

  简介

  代理层超时与重试

  Web容器超时

  中间件客户端超时与重试

  数据库客户端超时

  NoSQL客户端超时

  业务超时

  前端Ajax超时

  回滚机制

  事务回滚

  代码库回滚

  部署版本回滚

  数据版本回滚

  静态资源版本回滚

  压测与预案

  系统压测

  线下压测

  线上压测

  系统优化和容灾

  应急预案

  第三部分 高并发

  应用级缓存

  缓存简介

  缓存命中率

  缓存回收策略

  基于空间

  基于容量

  基于时间

  基于Java对象引用

  回收策略

  Java缓存类型

  堆缓存

  堆外缓存

  磁盘缓存

  分布式缓存

  多级缓存

  应用级缓存示例

  多级缓存API封装

  NULL Cache

  强制获取最新数据

  失败统计

  延迟报警

  缓存使用模式实践

  Cache-Aside

  Cache-As-SoR

  Copy Pattern

  性能测试

  HTTP缓存

  简介

  HTTP缓存

  Last-Modified

  ETag

  HttpClient客户端缓存

  主流程

  清除无效缓存

  查找缓存

  缓存未命中

  缓存命中

  缓存内容陈旧需重新验证

  缓存内容无效需重新执行请求

  缓存响应

  缓存头总结

  Nginx HTTP缓存设置

  expires

  if-modified-since

  nginx proxy expires

  Nginx代理层缓存

  Nginx代理层缓存配置

  清理缓存

  一些经验

  多级缓存

  多级缓存介绍

  如何缓存数据

  过期与不过期

  维度化缓存与增量缓存

  分布式缓存与应用负载均衡

  缓存分布式

  应用负载均衡

  热点数据与更新缓存

  单机全量缓存+主从

  分布式缓存+应用本地热点

  更新缓存与原子性

  缓存崩溃与快速修复

  取模

  一致性哈希

  快速恢复

  连接池线程池详解

  数据库连接池

  DBCP连接池配置

  DBCP配置建议

  HttpClient连接池

  HttpClient4.5.2配置

  HttpClient连接池源码分析

  HttpClient4.2.3配置

  问题示例

  线程池

  Java线程池

  Tomcat线程池配置

  异步并发实战

  同步阻塞调用

  异步Future

  异步Callback

  异步编排CompletableFuture

  异步Web服务实现

  请求缓存

  CompletableFuture实现批量查询

  请求合并

  如何扩容

  单体应用垂直扩容

  单体应用水平扩容

  应用拆分

  数据库拆分

  数据库分库分表示例

  应用层还是中间件层

  分库分表策略

  使用sharding-jdbc分库分表

  使用sharding-jdbc读写分离

  数据异构

  查询维度异构

  聚合数据异构

  任务系统扩容

  简单任务

  分布式任务

  Elastic-Job简介

  Elastic-Job-Lite功能与架构

  Elastic-Job-Lite示例

  队列术

  应用场景

  缓冲队列

  任务队列

  消息队列

  请求队列

  数据总线队列

  混合队列

  其他队列

  Disruptor+Redis队列

  简介

  XML配置

  EventWorker

  EventPublishThread

  EventHandler

  EventQueue

  下单系统水平可扩展架构

  下单服务

  同步Worker

  基于Canal实现数据异构

  mysql主从复制

  Canal简介

  Canal示例

  第四部分 案例

  构建需求响应式亿级商品详情页

  商品详情页是什么

  商品详情页前端结构

  我们的性能数据

  单品页流量特点

  单品页技术架构发展

  架构1.0

  架构2.0

  架构3.0

  详情页架构设计原则

  数据闭环

  数据维度化

  拆分系统

  Worker无状态化+任务化

  异步化+并发化

  多级缓存化

  动态化

  弹性化

  降级开关

  多机房多活

  多种压测方案

  遇到的一些坑和问题

  SSD性能差

  键值存储选型压测

  数据量大时JIMDB同步不动

  切换主从

  分片配置

  模板元数据存储HTML

  库存接口访问量600w/分钟

  微信接口调用量暴增

  开启Nginx Proxy Cache性能不升反降

  配送至读服务因依赖太多,响应时间偏慢

  网络抖动时,返回502错误

  机器流量太大

  总结

  京东商品详情页服务闭环实践

  为什么需要统一服务

  整体架构

  一些架构思路和总结

  两种读服务架构模式

  本地缓存

  多级缓存

  统一入口/服务闭环

  引入Nginx接入层

  数据校验/过滤逻辑前置

  缓存前置

  业务逻辑前置

  降级开关前置

  AB测试

  灰度发布/流量切换

  监控服务质量

  限流

  前端业务逻辑后置

  前端接口服务端聚合

  服务隔离

  使用OpenResty开发高性能Web应用

  OpenResty简介

  Nginx优点

  Lua的优点

  什么是ngx_lua

  开发环境

  OpenResty生态

  场景

  基于OpenResty的常用架构模式

  负载均衡

  单机闭环

  分布式闭环

  接入网关

  核心接入Nginx功能

  业务Nginx功能

  Web应用

  如何使用OpenResty开发Web应用

  项目搭建

  启停脚本

  配置文件

  nginx.conf配置文件

  nginx.conf项目配置文件

  业务代码

  模板

  公共Lua库

  功能开发

  基于OpenResty的常用功能总结

  一些问题

  应用数据静态化架构高性能单页Web应用

  整体架构

  CMS系统

  前端展示系统

  控制系统

  数据和模板动态化

  多版本机制

  异常问题

  使用OpenResty开发Web服务

  架构

  单DB架构

  DB+Cache/数据库读写分离架构

  OpenResty+Local Redis+Mysql集群架构

  OpenResty+Redis集群+Mysql集群架构

  实现

  后台逻辑

  前台逻辑

  项目搭建

  Redis+Twemproxy配置

  Mysql+Atlas配置

  Java+Tomcat安装

  Java+Tomcat逻辑开发

  Nginx+Lua逻辑开发

  使用OpenResty开发商品详情页

  技术选型

  核心流程

  项目搭建

  数据存储实现

  商品基本信息SSDB集群配置

  商品介绍SSDB集群配置

  其他信息Redis配置

  集群测试

  Twemproxy配置

  动态服务实现

  项目搭建

  项目依赖

  核心代码

  基本信息服务

  商品介绍服务

  其他信息服务

  辅助工具

  web.xml配置

  打WAR包

  配置Tomcat

  测试

  nginx配置

  绑定hosts测试

  前端展示实现

  基础组件

  商品介绍

  nginx配置

  前端展示

  核心代码

  初始化模块

  模板html片段

  nginx配置

  测试

  优化


赞(0) 更多分享

上篇: 京东金融以应用为中心的DevOps体系建设
下篇: 微服务等于Spring Cloud?一文告诉你微服务到底是什么