技术教育社区
www.teccses.org

高性能架构:多级网关与多级缓存实践

封面

作者:李晨翔(@风间影月)著

页数:369页

出版社:中国水利水电出版社

出版日期:2024

ISBN:9787522624389

电子书格式:pdf/epub/txt

网盘下载地址:下载高性能架构:多级网关与多级缓存实践

内容简介

在高并发的场景之下,企业级的工业接口api调用并不是通常的简单直连调用,如果有缓存作为媒介,那么我们需要考虑到综合的方方面面。 本书会以极其简单的方式开始进行学习,会有理论会有实操演练。哪怕你是初级开发也能很好的学习到进阶技能。我们会划分为微服务、网关中间件Nginx、缓存中间件Redis、多级缓存以及云原生五个阶段,整体内容循序渐进,使得你在学习的过程中也是随着企业、团队、技能的成长而成长。 本书的整体的思路将会通过对后端接口的读写操作所提出的高并发疑问逐步演进,开拓思维,逐步对其进行拓展演进,最终结合’多级’这个理念,来达到并且可以满足千万级的高并发要求。 此外,本书不仅仅只有缓存与网关,我们还包含了其他的中间件,比如消息队列RabbitMQ、数据同步Canal等,我们通过代码实践会学习到更多更全面的市场主流的技能综合解决方案。甚至在最后我们也会通过结合云原生k8s与kubesphere来实现devops的CICD的落地方案。

作者简介

李晨翔,从事技术管理10年以上经验,专注高性能高并发架构、项目管理以及企业战略规划。在物流电商领域有丰富的实战经验。有多年的讲师经验,授课风格深入浅出。

本书特色

随着现如今的业务系统愈发复杂,并发日益增多,分布式系统、微服务系统等应运而生。如何保证系统的高性能、高可用以及高可扩展,成了我们经常要面对的“痛点”,而多级网关与多级缓存架构系统就是很好的解决方案。本书作者从零讲授,深入浅出讲解多级架构的方方面面,从概念到原理再到实现,系统性强,并且融合了大量实践经验,极具参考价值。

目录

推荐序

前言

致谢

基 础 篇

第1章 基础环境与软件配备 2

1.1 Java的历史发展简介 2

1.2 JDK8的安装 2

1.2.1 Java运行时环境JDK 2

1.2.2 Windows系统安装JDK8 3

1.2.3 MacOS(Intel)系统安装JDK8 9

1.2.4 MacOS(arm64)系统安装JDK8 11

1.3 安装Maven,配置项目工程的构建管理工具 13

1.3.1 Maven概述 13

1.3.2 Windows系统安装Maven 14

1.3.3 MacOS系统安装Maven 16

1.3.4 配置阿里云镜像仓库 16

1.4 开发工具 17

1.5 本章小结 17

第2章 Docker容器化入门 19

2.1 内网互通原则 19

2.2 容器化引擎Docker 20

2.2.1 虚拟化与容器化技术 20

2.2.2 Docker的架构 21

2.2.3 Docker的隔离机制 22

2.2.4 Docker的安装 22

2.2.5 Docker的启动 23

2.2.6 Docker的加速 24

2.3 使用Docker安装数据库 26

2.3.1 使用Docker的pull命令拉取镜像 26

2.3.2 开启CentOS7的ipv4 27

2.3.3 使用docker run运行镜像 27

2.3.4 可视化数据库工具 29

2.3.5 Docker命令 31

2.4 Docker镜像的提交与推送 34

2.4.1 提交镜像 34

2.4.2 自定义tag标签 35

2.4.3 推送镜像 35

2.5 本章小结 36

第3章 构建Web服务与接口 37

3.1 构建Web项目 37

3.1.1 使用Maven初始化项目 37

3.1.2 搭建SpringBoot工程 40

3.1.3 编写Restful风格接口 45

3.1.4 dev与prod环境切换 47

3.2 集成持久层框架 48

3.2.1 集成数据源 48

3.2.2 整合MyBatis 50

3.2.3 数据构建 52

3.2.4 数据库逆向工具 53

3.2.5 编写service业务层 55

3.2.6 @Junit操作持久层 56

3.2.7 对外暴露接口服务 58

3.3 本章小结 60

第4章 本地缓存Caffeine 61

4.1 进程间与进程外缓存 61

4.1.1 什么是缓存 61

4.1.2 进程内缓存与分类 62

4.1.3 进程外缓存 64

4.2 使用Caffeine本地缓存 65

4.2.1 集成Caffeine 65

4.2.2 使用junit进行Caffeine测试 66

4.2.3 Caffeine的值为空设值操作 67

4.3 SpringBoot整合Caffeine本地缓存 68

4.3.1 集成Caffeine配置 68

4.3.2 使用Caffeine 69

4.4 本章小结 70

第5章 Redis缓存中间件 71

5.1 分布式缓存中间件Redis 71

5.1.1 非关系型数据库的由来 71

5.1.2 分布式缓存Redis与NoSQL 72

5.1.3 Redis的Key-Value键值对 73

5.2 安装Redis 74

5.2.1 安装原生Redis 74

5.2.2 操作Redis的基本命令 76

5.2.3 使用可视化工具Redis Desktop Manager 77

5.2.4 使用Docker安装Redis 79

5.2.5 在Redis容器内部运行redis-cli 81

5.2.6 容器自动重启 82

5.3 五大数据类型常用操作 82

5.3.1 string字符串类型 83

5.3.2 list数据类型 84

5.3.3 hash哈希数据类型 85

5.3.4 set无序集合数据类型 86

5.3.5 sorted set 可排序集合数据类型 87

5.4 Redis的存储原理 88

5.4.1 Redis是怎么做持久化的 88

5.4.2 RDB持久化机制 88

5.4.3 RDB的自动保存机制 90

5.4.4 AOF持久化机制 92

5.4.5 使用AOF引发的思考 92

5.4.6 AOF的重写配置 92

5.4.7 AOF与RDB的混合持久化 93

5.5 本章小结 95

第6章 分布式缓存的应用方案 96

6.1 SpringBoot与Redis集成 96

6.1.1 构建SpringBoot项目高可用集群 96

6.1.2 SpringBoot整合Redis 99

6.1.3 Redis的通用工具操作类 102

6.1.4 Redis与本地缓存并肩作战 109

6.2 分布式缓存问题延伸 111

6.2.1 缓存预热 111

6.2.2 Redis缓存穿透 113

6.2.3 Redis缓存击穿 115

6.2.4 Redis缓存雪崩 116

6.3 分布式系统的CAP理论 117

6.3.1 分布式系统 117

6.3.2 CAP是什么 118

6.3.3 CAP定理 119

6.3.4 CAP的组合搭配 121

6.4 缓存数据双写方案 121

6.4.1 存储媒介发生数据不一致 121

6.4.2 数据库与缓存双写不一致 123

6.4.3 数据库与缓存双写一致方案 124

6.5 本章小结 126

第7章 Redis分布式锁 127

7.1 分布式锁 127

7.1.1 分布式锁是什么 127

7.1.2 本地锁是什么 128

7.1.3 分布式锁的原理 129

7.1.4 数据库悲观锁 129

7.1.5 数据库乐观锁 130

7.2 Redis分布式锁 131

7.2.1 setnx锁机制 131

7.2.2 基于setnx的实现 131

7.2.3 锁的自动续期 134

7.3 Redisson客户端 135

7.3.1 Redisson 概述 135

7.3.2 Redisson配置 136

7.3.3 Redisson分布式锁 137

7.3.4 Redisson公平锁 138

7.3.5 Redisson联锁 139

7.4 本章小结 140

第8章 Redis集群高可用 141

8.1 Redis主从架构 141

8.1.1 Redis主从复制原理 141

8.1.2 构建Redis 主从架构 142

8.2 Redis哨兵架构 144

8.2.1 Redis哨兵架构原理 144

8.2.2 构建Redis哨兵形态 146

8.3 Redis高可用集群架构 147

8.3.1 Redis集群原理 147

8.3.2 构建Redis集群形态的准备工作 149

8.3.3 Redis集群架构 Cluster实操 149

8.3.4 Redis集群的故障转移 152

8.3.5 Redis集群数据存取 153

8.3.6 Redis集群水平扩容 154

8.3.7 Redis集群的十点总结 158

8.4 Redis缓存淘汰机制 158

8.5 本章小结 159

进 阶 篇

第9章 nginx网关中间件 161

9.1 网关中间件nginx 161

9.1.1 nginx是什么 161

9.1.2 服务器的选型 162

9.1.3 反向代理与正向代理 164

9.2 安装nginx与配置 165

9.2.1 下载并安装nginx的依赖环境 165

9.2.2 安装nginx到Linux系统中 166

9.2.3 详解conf配置 168

9.3 nginx的基本应用 171

9.3.1 日志切割(手动) 171

9.3.2 日志切割(自动) 171

9.3.3 location请求的路由规则 172

9.3.4 静态资源服务器 174

9.4 本章小结 176

第10章 集群与负载均衡 177

10.1 集群与分布式 177

10.1.1 集群与分布式的概念 177

10.1.2 负载均衡的概念 178

10.2 实现集群负载均衡 179

10.2.1 配置上游服务集群 179

10.2.2 负载均衡之轮询 180

10.2.3 负载均衡之权重 181

10.2.4 负载均衡之ip_hash 181

10.2.5 负载均衡之url_hash 182

10.3 一致性哈希原理 182

10.4 OSI网络模型原理 183

10.4.1 七层网络模型 183

10.4.2 七层模型的归类与合并 185

10.5 本章小结 187

第11章 Lua脚本语言基础 188

11.1 Lua脚本 188

11.1.1 Lua脚本介绍 188

11.1.2 Lua脚本入门 189

11.2 Lua的数据类型 189

11.2.1 nil类型 189

11.2.2 boolean类型 190

11.2.3 number类型 190

11.2.4 string类型 191

11.2.5 function类型 191

11.2.6 table类型 192

11.3 Lua的循环与控制判断 193

11.3.1 Lua的循环 193

11.3.2 Lua的控制判断 195

11.3.3 Lua语法实操 195

11.4 本章小结 197

第12章 高性能OpenResty平台 198

12.1 OpenResty 198

12.1.1 OpenResty 背景介绍 198

12.1.2 OpenResty与nginx的区别 198

12.1.3 OpenResty 所处架构位置 199

12.2 安装OpenResty 201

12.2.1 OpenResty环境配置与安装——方式一 201

12.2.2 OpenResty环境配置与安装——方式二(推荐) 201

12.3 OpenResty的目录结构与运行 202

12.3.1 OpenResty的目录结构 202

12.3.2 测试访问页面 203

12.4 为OpenResty配置nginx的环境变量 203

12.5 本章小结 204

第13章 多级缓存落地 205

13.1 OpenResty结合Lua控制请求与响应 205

13.1.1 OpenResty结合Lua自定义数据响应 205

13.1.2 OpenResty结合Lua获得请求相关参数 207

13.2 Lua自定义请求反向代理 209

13.2.1 封装GET请求 209

13.2.2 封装POST请求 210

13.2.3 Lua控制请求转发 211

13.3 多级缓存架构落地 212

13.3.1 lua-resty-redis 212

13.3.2 封装Redis通用模块 214

13.3.3 完成多级缓存架构闭环 216

13.4 本章小结 217

第14章 多级网关 218

14.1 多级网关集群 218

14.1.1 什么是多级网关 218

14.1.2 nginx构建OpenResty集群 219

14.2 OpenResty的本地缓存 221

14.2.1 定义共享字典(本地缓存) 221

14.2.2 共享字典与多级缓存业务的结合 221

14.3 ApiPost性能压测 223

14.3.1 压力测试 223

14.3.2 ApiPost介绍 223

14.3.3 使用ApiPost进行接口调试 224

14.3.4 配置ApiPost的压测场景 225

14.3.5 进行接口压测 226

14.4 本章小结 227

第15章 多级缓存数据同步 228

15.1 缓存数据同步方案 228

15.1.1 缓存与数据库不一致的出现场景 228

15.1.2 消息队列方案 228

15.1.3 Zookeeper方案 230

15.1.4 Canal方案 231

15.2 消息队列 232

15.2.1 什么是消息队列 232

15.2.2 消息队列的技术选型 234

15.2.3 生产者与消费者 234

15.3 安装RabbitMQ 236

15.3.1 Docker安装RabbitMQ 236

15.3.2 RabbitMQ的可视化后台管理 238

15.3.3 RabbitMQ的模型原理 240

15.4 缓存数据的一致性落地 241

15.4.1 缓存数据的同步过程 241

15.4.2 SpringBoot集成RabbitMQ 243

15.4.3 配置交换机与队列 244

15.4.4 构建生产者—发送消息 246

15.4.5 构建消费者—监听队列 249

15.4.6 多节点对同一消息的监听处理 249

15.4.7 完成并测试缓存数据的同步 250

15.5 本章小结 253

第16章 OpenResty实践 254

16.1 用户请求频率限制与黑名单 254

16.1.1 网关限流需求说明 254

16.1.2 封装请求拦截函数 254

16.1.3 结合业务进行拦截 258

16.2 OpenResty集成MySQL 259

16.2.1 解读lua-resty-mysql示例代码 259

16.2.2 封装MySQL请求函数 261

16.2.3 实现调用MySQL业务 263

16.2.4 转发请求到sql查询的Lua文件 264

16.3 本章小结 264

云原生与DevOps

第17章 云原生与KubeSphere 266

17.1 DevOps与CICD 266

17.1.1 DevOps概述 266

17.1.2 CICD概述 268

17.2 Kubernetes初探 270

17.2.1 Kubernetes概述 270

17.2.2 Kubernetes 可以用来做什么 271

17.2.3 Kubernetes架构原理 272

17.2.4 Kubernetes的Pod容器 274

17.3 KubeSphere的使用与安装 275

17.3.1 KubeSphere 概述 275

17.3.2 KubeSphere环境准备 276

17.3.3 KubeSphere安装 279

17.3.4 KubeSphere启用DevOps 282

17.4 KubeSphere多租户 285

17.4.1 KubeSphere多租户系统 285

17.4.2 KubeSphere多租户角色 285

17.4.3 KubeSphere多租户账号分配 286

17.4.4 KubeSphere 企业空间创建与账号绑定 288

17.4.5 KubeSphere项目负责人账号分配 291

17.5 本章小结 294

第18章 KubeSphere部署中间件 295

18.1 应用的状态 295

18.1.1 有状态应用 295

18.1.2 无状态应用 295

18.1.3 KubeSphere项目的存储、服务与配置 296

18.2 KubeSphere部署中间件MySQL8 299

18.2.1 设置保密字典 299

18.2.2 设置配置字典 300

18.2.3 配置MySQL的持久卷PVC 302

18.2.4 创建MySQL的有状态服务 304

18.2.5 为MySQL创建数据库并导入数据 309

18.3 部署Redis 312

18.3.1 创建Redis的配置字典与持久卷 312

18.3.2 创建Redis有状态服务 314

18.4 部署RabbitMQ 317

18.4.1 创建RabbitMQ的持久卷与配置字典 317

18.4.2 创建RabbitMQ的无状态服务 318

18.4.3 RabbitMQ无状态服务对外访问 320

18.5 原生安装OpenResty 323

18.6 本章小结 326

第19章 DevOps流水线发布项目 327

19.1 DevOps前置准备工作 327

19.1.1 DevOps部署流程 327

19.1.2 为流水线创建凭证 328

19.1.3 项目的生产配置 330

19.1.4 编写DockerFile 332

19.1.5 编写k8s-YAML部署文件 334

19.2 开始DevOps流程 338

19.2.1 推送代码 338

19.2.2 创建项目流水线 342

19.2.3 拉取代码 344

19.2.4 为流水线构建动态参数 348

19.2.5 流水线打印动态参数 350

19.2.6 为流水线配置环境变量 350

19.2.7 流水线推送镜像到DockerHub 351

19.2.8 推送latest镜像到DockerHub 356

19.2.9 流水线部署项目到KubeSphere环境中 358

19.2.10 测试生产环境的项目接口访问 360

19.3 集群与扩容 360

19.3.1 手动扩容 360

19.3.2 自动扩容 362

19.3.3 OpenResty集群配置 363

19.4 构建云负载均衡器 365

19.5 本章小结 369

赞助用户下载地址

立即下载

(解压密码:www.teccses.org)

Article Title:《高性能架构:多级网关与多级缓存实践》
Article link:https://www.teccses.org/2546.html