首页 运维干货《亿级流量网站架构核心技术》目录一览

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

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

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

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

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

网站架构 网站架构

第一部分概述

高并发原则

无状态

拆分

服务化

消息队列

数据异构

缓存银弹

并发化

高可用原则

降级

限流

切流量

可回滚

业务设计原则

防重设计

幂等设计

流程可定义

状态与状态机

后台系统操作可反馈.

后台系统审批化.

文档&注释

备份

 

第二部分 高可用

负载均衡与反向代理

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配置

测试

优化

作者:张开涛

文章出处:开涛的博客(订阅号ID: kaitao-1234567)

本文链接:https://www.yunweipai.com/10312.html

网友评论comments

发表回复

您的电子邮箱地址不会被公开。

暂无评论

Copyright © 2012-2022 YUNWEIPAI.COM - 运维派 京ICP备16064699号-6
扫二维码
扫二维码
返回顶部