图书介绍

亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统
  • 张开涛著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121309540
  • 出版时间:2017
  • 标注页数:447页
  • 文件大小:51MB
  • 文件页数:485页
  • 主题词:网站建设

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1部分 概述1

1 交易型系统设计的一些原则2

1.1 高并发原则3

1.1.1 无状态3

1.1.2 拆分3

1.1.3 服务化4

1.1.4 消息队列4

1.1.5 数据异构6

1.1.6 缓存银弹7

1.1.7 并发化9

1.2 高可用原则10

1.2.1 降级10

1.2.2 限流11

1.2.3 切流量12

1.2.4 可回滚12

1.3 业务设计原则12

1.3.1 防重设计13

1.3.2 幂等设计13

1.3.3 流程可定义13

1.3.4 状态与状态机13

1.3.5 后台系统操作可反馈14

1.3.6 后台系统审批化14

1.3.7 文档和注释14

1.3.8 备份14

1.4 总结14

第2部分 高可用17

2 负载均衡与反向代理18

2.1 upstream配置20

2.2 负载均衡算法21

2.3 失败重试23

2.4 健康检查24

2.4.1 TCP心跳检查24

2.4.2 HTTP心跳检查24

2.5 其他配置25

2.5.1 域名上游服务器25

2.5.2 备份上游服务器26

2.5.3 不可用上游服务器26

2.6 长连接26

2.7 HTTP反向代理示例29

2.8 HTTP动态负载均衡30

2.8.1 Consul+Consul-template31

2.8.2 Consul+OpenResty35

2.9 Nginx四层负载均衡39

2.9.1 静态负载均衡39

2.9.2 动态负载均衡41

参考资料42

3 隔离术43

3.1 线程隔离43

3.2 进程隔离45

3.3 集群隔离45

3.4 机房隔离46

3.5 读写隔离47

3.6 动静隔离48

3.7 爬虫隔离49

3.8 热点隔离50

3.9 资源隔离50

3.10 使用Hystrix实现隔离51

3.10.1 Hystrix简介51

3.10.2 隔离示例52

3.11 基于Servlet 3实现请求隔离56

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

3.11.2 业务线程池隔离58

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

3.11.4 如何使用Servlet 3异步化59

3.11.5 一些Servlet 3异步化压测数据64

4 限流详解66

4.1 限流算法67

4.1.1 令牌桶算法67

4.1.2 漏桶算法68

4.2 应用级限流69

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

4.2.2 限流总资源数70

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

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

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

4.3 分布式限流75

4.3.1 Redis+Lua实现76

4.3.2 Nginx+Lua实现77

4.4 接入层限流78

4.4.1 ngx_http_limit_conn_module78

4.4.2 ngx_http_limit_req_module80

4.4.3 lua-resty-limit-traffic88

4.5 节流90

4.5.1 throttleFirst/throttleLast90

4.5.2 throttleWithTimeout91

参考资料92

5 降级特技93

5.1 降级预案93

5.2 自动开关降级95

5.2.1 超时降级95

5.2.2 统计失败次数降级95

5.2.3 故障降级95

5.2.4 限流降级95

5.3 人工开关降级96

5.4 读服务降级96

5.5 写服务降级97

5.6 多级降级98

5.7 配置中心100

5.7.1 应用层API封装100

5.7.2 使用配置文件实现开关配置101

5.7.3 使用配置中心实现开关配置102

5.8 使用Hystrix实现降级106

5.9 使用Hystrix实现熔断108

5.9.1 熔断机制实现108

5.9.2 配置示例112

5.9.3 采样统计113

6 超时与重试机制117

6.1 简介117

6.2 代理层超时与重试119

6.2.1 Nginx119

6.2.2 Twemproxy126

6.3 Web容器超时127

6.4 中间件客户端超时与重试128

6.5 数据库客户端超时131

6.6 NoSQL客户端超时134

6.7 业务超时135

6.8 前端Ajax超时135

6.9 总结136

6.10 参考资料138

7 回滚机制139

7.1 事务回滚139

7.2 代码库回滚140

7.3 部署版本回滚141

7.4 数据版本回滚142

7.5 静态资源版本回滚143

8 压测与预案145

8.1 系统压测145

8.1.1 线下压测146

8.1.2 线上压测146

8.2 系统优化和容灾147

8.3 应急预案148

第3部分 高并发153

9 应用级缓存154

9.1 缓存简介154

9.2 缓存命中率155

9.3 缓存回收策略155

9.4 Java缓存类型156

9.4.1 堆缓存158

9.4.2 堆外缓存161

9.4.3 磁盘缓存162

9.4.4 分布式缓存163

9.4.5 多级缓存166

9.5 应用级缓存示例167

9.5.1 多级缓存API封装167

9.5.2 NULL Cache170

9.5.3 强制获取最新数据170

9.5.4 失败统计171

9.5.5 延迟报警171

9.6 缓存使用模式实践172

9.6.1 Cache-Aside173

9.6.2 Cache-As-SoR174

9.6.3 Read-Through174

9.6.4 Write-Through176

9.6.5 Write-Behind177

9.6.6 Copy Pattern181

9.7 性能测试181

9.8 参考资料182

10 HTTP缓存183

10.1 简介183

10.2 HTTP缓存184

10.2.1 Last-Modified184

10.2.2 ETag190

10.2.3 总结192

10.3 HttpClient客户端缓存192

10.3.1 主流程195

10.3.2 清除无效缓存195

10.3.3 查找缓存196

10.3.4 缓存未命中198

10.3.5 缓存命中198

10.3.6 缓存内容陈旧需重新验证202

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

10.3.8 缓存响应206

10.3.9 缓存头总结207

10.4 Nginx HTTP缓存设置208

10.4.1 expires208

10.4.2 if-modified-since209

10.4.3 nginx proxy_pass209

10.5 Nginx代理层缓存211

10.5.1 Nginx代理层缓存配置211

10.5.2 清理缓存214

10.6 一些经验215

参考资料216

11 多级缓存217

11.1 多级缓存介绍217

11.2 如何缓存数据219

11.2.1 过期与不过期219

11.2.2 维度化缓存与增量缓存220

11.2.3 大Value缓存220

11.2.4 热点缓存220

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

11.3.1 缓存分布式221

11.3.2 应用负载均衡221

11.4 热点数据与更新缓存222

11.4.1 单机全量缓存+主从222

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

11.5 更新缓存与原子性224

11.6 缓存崩溃与快速修复225

11.6.1 取模225

11.6.2 一致性哈希225

11.6.3 快速恢复225

12 连接池线程池详解227

12.1 数据库连接池227

12.1.1 DBCP连接池配置228

12.1.2 DBCP配置建议233

12.1.3 数据库驱动超时实现234

12.1.4 连接池使用的一些建议235

12.2 HttpClient连接池236

12.2.1 HttpClient 4.5.2 配置236

12.2.2 HttpClient连接池源码分析240

12.2.3 HttpClient 4.2.3 配置241

12.2.4 问题示例243

12.3 线程池244

12.3.1 Java线程池245

12.3.2 Tomcat线程池配置248

13 异步并发实战250

13.1 同步阻塞调用251

13.2 异步Future252

13.3 异步Callback253

13.4 异步编排CompletableFuture254

13.5 异步Web服务实现257

13.6 请求缓存259

13.7 请求合并261

14 如何扩容266

14.1 单体应用垂直扩容267

14.2 单体应用水平扩容267

14.3 应用拆分268

14.4 数据库拆分271

14.5 数据库分库分表示例275

14.5.1 应用层还是中间件层275

14.5.2 分库分表策略277

14.5.3 使用sharding-jdbc分库分表279

14.5.4 sharding-jdbc分库分表配置279

14.5.5 使用sharding-jdbc读写分离283

14.6 数据异构284

14.6.1 查询维度异构284

14.6.2 聚合据异构285

14.7 任务系统扩容285

14.7.1 简单任务285

14.7.2 分布式任务287

14.7.3 Elastic-Job简介287

14.7.4 Elastic-Job-Lite功能与架构287

14.7.5 Elastic-Job-Lite示例288

15 队列术295

15.1 应用场景295

15.2 缓冲队列296

15.3 任务队列297

15.4 消息队列297

15.5 请求队列299

15.6 数据总线队列300

15.7 混合队列301

15.8 其他队列302

15.9 Disruptor+Redis队列303

15.9.1 简介303

15.9.2 XML配置304

15.9.3 EventWorker305

15.9.4 EventPublishThread307

15.9.5 EventHandler308

15.9.6 EventQueue308

15.10 下单系统水平可扩展架构311

15.10.1 下单服务312

15.10.2 同步Worker313

15.11 基于Canal实现数据异构314

15.11.1 MySQL主从复制315

15.11.2 Canal简介316

15.11.3 Canal示例318

第4部分 案例323

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

16.1 商品详情页是什么324

16.2 商品详情页前端结构325

16.3 我们的性能数据327

16.4 单品页流量特点327

16.5 单品页技术架构发展327

16.5.1 架构1.0328

16.5.2 架构2.0328

16.5.3 架构3.0330

16.6 详情页架构设计原则332

16.6.1 数据闭环332

16.6.2 数据维度化333

16.6.3 拆分系统334

16.6.4 Worker无状态化+任务化334

16.6.5 异步化+并发化335

16.6.6 多级缓存化335

16.6.7 动态化336

16.6.8 弹性化336

16.6.9 降级开关336

16.6.10 多机房多活337

16.6.11 两种压测方案338

16.7 遇到的一些坑和问题339

16.7.1 SSD性能差339

16.7.2 键值存储选型压测339

16.7.3 数据量大时JIMDB同步不动342

16.7.4 切换主从342

16.7.5 分片配置342

16.7.6 模板元数据存储HTML342

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

16.7.8 微信接口调用量暴增344

16.7.9 开启Nginx Proxy Cache性能不升反降344

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

16.7.11 网络抖动时,返回502错误346

16.7.12 机器流量太大346

16.8 其他347

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

17.1 为什么需要统一服务348

17.2 整体架构349

17.3 一些架构思路和总结350

17.3.1 两种读服务架构模式351

17.3.2 本地缓存352

17.3.3 多级缓存352

17.3.4 统一入口/服务闭环353

17.4 引入Nginx接入层354

17.4.1 数据校验/过滤逻辑前置354

17.4.2 缓存前置354

17.4.3 业务逻辑前置355

17.4.4 降级开关前置355

17.4.5 A/B测试355

17.4.6 灰度发布/流量切换356

17.4.7 监控服务质量356

17.4.8 限流356

17.5 前端业务逻辑后置356

17.6 前端接口服务器端聚合357

17.7 服务隔离358

18 使用OpenResty开发高性能Web应用360

18.1 OpenResty简介361

18.1.1 Nginx优点361

18.1.2 Lua的优点361

18.1.3 什么是ngx_lua361

18.1.4 开发环境362

18.1.5 OpenResty生态362

18.1.6 场景362

18.2 基于OpenResty的常用架构模式363

18.2.1 负载均衡363

18.2.2 单机闭环364

18.2.3 分布式闭环367

18.2.4 接入网关368

18.2.5 Web应用370

18.3 如何使用OpenResty开发Web应用371

18.3.1 项目搭建371

18.3.2 启停脚本372

18.3.3 配置文件372

18.3.4 Nginx.conf配置文件372

18.3.5 Nginx项目配置文件373

18.3.6 业务代码374

18.3.7 模板374

18.3.8 公共Lua库374

18.3.9 功能开发375

18.4 基于OpenResty的常用功能总结375

18.5 一些问题376

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

19.1 整体架构378

19.1.1 CMS系统379

19.1.2 前端展示系统379

19.1.3 控制系统380

19.2 数据和模板动态化381

19.3 多版本机制381

19.4 异常问题381

20 使用OpenResty开发Web服务383

20.1 架构383

20.2 单DB架构384

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

20.2.2 OpenResty+Local Redis+MySQL集群架构385

20.2.3 OpenResty+Redis集群+MySQL集群架构386

20.3 实现387

20.3.1 后台逻辑388

20.3.2 前台逻辑388

20.3.3 项目搭建389

20.3.4 Redis+Twemproxy配置389

20.3.5 MySQL+Atlas配置390

20.3.6 Java+Tomcat安装394

20.3.7 Java+Tomcat逻辑开发395

20.3.8 Nginx+Lua逻辑开发401

21 使用OpenResty开发商品详情页405

21.1 技术选型407

21.2 核心流程408

21.3 项目搭建408

21.4 数据存储实现410

21.4.1 商品基本信息SSDB集群配置410

21.4.2 商品介绍SSDB集群配置413

21.4.3 其他信息Redis配置416

21.4.4 集群测试418

21.4.5 Twemproxy配置419

21.5 动态服务实现421

21.5.1 项目搭建422

21.5.2 项目依赖422

21.5.3 核心代码422

21.5.4 web.xml配置427

21.5.5 打WAR包428

21.5.6 配置Tomcat428

21.5.7 测试428

21.5.8 Nginx配置428

21.5.9 绑定hosts测试430

21.6 前端展示实现430

21.6.1 基础组件430

21.6.2 商品介绍432

21.6.3 前端展示433

21.6.4 测试441

21.6.5 优化441

热门推荐