高并发系统实战派:集群、Redis缓存、海量存储、Elasticsearch、RocketMQ、微服务、持续集成等

0
(0)

高并发系统实战派:集群、Redis缓存、海量存储、Elasticsearch、RocketMQ、微服务、持续集成等

作者:谢恩德

出版社:电子工业出版社

出品方:博文视点

出版年:2022-9

页数:420

定价:109

装帧:平装

ISBN:9787121442049

内容简介
······

《高并发系统实战派:集群、Redis缓存、海量存储、Elasticsearch、RocketMQ、微服务、持续集成等》以企业的高并发系统的演化过程为主线,介绍了每个阶段应该采用什么技术和方法论来应对高并发挑战。书中涵盖高并发系统技术框架层的代码编写、高效测试、快速交付及高效线上运维等内容,并通过大量的实例让读者具有实践能力。

全书共5篇:第1篇,帮助读者建立高并发系统的基本认知;第2篇,通过一个生产系统的搭建全流程,介绍了企业系统在技术框架层面及上线方面需要关注的点;第3篇,介绍了构建高并发系统的各项技术,包括应用集群化、缓存设计、存储系统设计、搜索引擎、消息中间件设计、微服务设计、API网关设计等;第4篇,介绍了高并发系统设计原则及两个完整的高并发项目,一方面帮助读者对前面的内容进行巩固和实操,另一方面也希望给读者搭建自己的高并发系统以一定的启发;第5篇,介绍了高并发系统的运维与监控。

《高并发系统实战派:集群、Redis缓存、海量存储、Elasticsearch、RocketMQ、微服务、持续集成等》适合对于高并发系统感兴趣的开发人员、架构师、产品设计师、测试工程师等。无论读者之前是否接触过高并发系统,只要具备一定的Java开发基础,都能通过本书的学习快速掌握高并发系统开发技能,快速搭建出可以在企业中应用的高并发系统。

作者简介
······

谢恩德

10余年互联网IT从业经历,清华大学合肥公共安全研究院高级技术经理

曾是多家物联网公司、互联网公司技术负责人,精通大型企业级平台架构设计、底层逻辑设计

目录
······

第1篇 高并发系统认知

第1章 什么是高并发系统 2

1.1 什么是高并发 2

1.2 高并发系统有哪些关键指标 3

1.2.1 响应时间(Response Time) 3

1.2.2 吞吐量(Throughput) 3

1.2.3 每秒请求数(QPS) 4

1.2.4 每秒事务数(TPS) 4

1.2.5 访问量(PV) 5

1.2.6 独立访客(UV) 5

1.2.7 网络流量 5

1.3 为什么要学习高并发系统 5

1.3.1 提升自身及企业核心竞争力 6

1.3.2 在面试中脱颖而出 6

1.4 对比单体系统、分布式系统和微服务系统 7

1.4.1 单体系统之痛 7

1.4.2 高并发系统之分布式架构 11

1.4.3 高并发系统之微服务架构 12

第2章 从剖析两个高并发系统开始 20

2.1 案例一:千万级流量“秒杀”系统 20

2.1.1 千万级流量“秒杀”系统架构一览 20

2.1.2 动静分离方案设计 24

2.1.3 热点数据处理 27

2.1.4 大流量的高效管控 30

2.1.5 扣减库存的那些事 34

2.1.6 搭建千万级流量“秒杀”系统需要哪些技术 39

2.2 案例二:C2C二手电商平台的社会化治理系统 40

2.2.1 C2C二手电商平台的社会化治理系统架构一览 40

2.2.2 基础服务治理 42

2.2.3 RPC框架服务通信 50

2.2.4 分布式事务管理 55

第2篇 搭建生产级系统

第3章 生产级系统框架设计的细节 64

3.1 幂等性设计——保证数据的一致性 64

3.1.1 什么是幂等性 64

3.1.2 如何避免重复提交 66

3.1.3 如何避免更新中的ABA问题 68

3.2 接口参数校验——增强服务健壮性 70

3.2.1 【实战】Spring结合validation进行接口参数校验 70

3.2.2 【实战】自定义参数校验注解 73

3.3 统一异常设计——跟杂乱无章的异常信息说再见 75

3.3.1 Spring Boot默认的异常处理机制 75

3.3.2 【实战】基于Spring Boot构建全局异常处理 76

3.4 统一封装Response——智能的响应数据 83

3.4.1 接口响应数据的模型 83

3.4.2 【实战】开发统一的响应数据模型,以应对不同业务 87

3.5 编写高质量的异步任务 93

3.5.1 为什么要编写异步任务 93

3.5.2 【实战】基于Spring开发高质量的异步任务 94

3.6 DTO与PO的互相转换 98

3.6.1 什么是DTO、PO 98

3.6.2 【实战】实现DTO与PO的互相转换 99

3.7 优雅的API设计——对接“清爽”,不出错 102

3.7.1 最好采用“API先行”策略 103

3.7.2 API 的设计原则 104

3.7.3 RESTful API设计的规范 106

3.8 API治理——告别“接口满天飞” 108

3.8.1 【实战】基于Swagger构建可视化的API文档 109

3.8.2 API调用链管理 112

第4章 快速部署上线 113

4.1 反向代理配置 113

4.1.1 什么是反向代理,为什么要使用反向代理 113

4.1.2 【实战】使用Nginx配置线上服务 116

4.2 系统性能测试 120

4.2.1 【实战】进行单元测试 120

4.2.2 【实战】用AB工具做上线前的性能测试 131

第5章 生产环境监测 136

5.1 服务器性能日常监测 136

5.1.1 在运维中常说的“服务器平均负载”是什么意思 136

5.1.2 为什么经常被问到“CPU上下文切换” 138

5.1.3 【实战】快速分析出CPU的性能瓶颈 141

5.2 优化服务器性能 144

5.2.1 CPU性能优化方法论 144

5.2.2 定位和处理内存泄漏问题 145

5.3 Java虚拟机(JVM)的生产调优 147

5.3.1 JVM内存模型分析 147

5.3.2 Java程序是如何在JVM中运行的 151

5.3.3 JVM优化的思路 152

第3篇 专项突破

第6章 应用集群化 158

6.1 为什么要应用集群化 158

6.1.1 什么是集群服务器 158

6.1.2 采用集群服务器有什么好处 160

6.1.3 集群系统和分布式系统有什么区别 161

6.2 搭建应用集群 162

6.2.1 【实战】使用反向代理搭建应用集群 163

6.2.2 【实战】搭建Linux服务器集群 166

第7章 缓存设计 168

7.1 什么是缓存 168

7.1.1 缓存的定义 168

7.1.2 缓存的常见分类 169

7.2 使用缓存 171

7.2.1 如何正确选择缓存的读写策略 171

7.2.2 如何使用多级缓存来提升服务性能 173

7.2.3 多级缓存之痛 179

7.3 缓存架构设计 183

7.3.1 缓存组件的选择 183

7.3.2 缓存数据结构的设计 187

7.3.3 缓存分布的设计 187

7.3.4 缓存架构部署 190

7.3.5 缓存架构设计的关键点 190

7.4 用Redis构建生产级高性能分布式缓存 192

7.4.1 Redis的常见数据类型 192

7.4.2 【实战】通过Redis的读写分离扛住10万以上的QPS 197

7.4.3 【实战】在高并发场景下,缓存“雪崩”了该怎么办 201

7.4.4 【实战】在高并发场景下,缓存“穿透”了该怎么办 204

7.4.5 【实战】构建一个高性能、可扩展的Redis集群 206

7.4.6 【实战】实现朋友圈的“点赞”功能 210

7.4.7 【实战】实现App中的“查找附近的人”功能 212

第8章 存储系统设计 213

8.1 池化技术 213

8.1.1 数据库连接池是如何预分配连接的 213

8.1.2 线程池是如何工作的 214

8.1.3 协程池有什么作用 216

8.2 数据库采用主从架构——数据再也不会丢了 217

8.2.1 什么是数据库的主从架构 217

8.2.2 【实战】配置MySQL主从架构 219

8.2.3 主从架构中的数据是如何实现同步的 221

8.3 数据库读写分离——读/写数据再也不用争抢了 222

8.3.1 数据库读写分离能解决什么问题 223

8.3.2 数据库读写分离造成数据不一致,该怎么办 223

8.3.3 【实战】在程序开发中实现读写分离 224

8.4 数据库分库分表——处理海量数据的“终极大招” 226

8.4.1 在什么情况下需要分库分表,如何分 226

8.4.2 【实战】在分库分表后,如何处理主键ID 229

8.4.3 【实战】在程序开发中支持分库分表 232

8.4.4 分库分表会带来什么开发难题 233

8.4.5 【实战】在分库分表后实行项目无感上线 234

8.5 引入NoSQL数据库 236

8.5.1 NoSQL数据库是什么,它和SQL数据库有什么区别 236

8.5.2 常用的NoSQL数据库 237

8.5.3 利用NoSQL数据库可以提升写入性能 237

8.5.4 利用NoSQL数据库可以提升扩展性 238

第9章 搜索引擎——让查询更便捷 240

9.1 为什么需要搜索引擎 240

9.2 搜索引擎的通用算法和架构 241

9.2.1 必须知道的倒排索引 241

9.2.2 互联网搜索引擎的技术架构 243

9.2.3 Lucene与Elasticsearch的前世今生 245

9.3 用Elasticsearch搭建高性能的分布式搜索引擎 247

9.3.1 Elasticsearch分布式架构的原理 247

9.3.2 【实战】将Elasticsearch应用在电商系统中 250

9.3.3 【实战】快速实现Elasticsearch的搜索建议 253

9.3.4 【实战】在海量数据下,提高Elasticsearch的查询效率 254

第10章 消息中间件设计——解耦业务系统与核心系统 257

10.1 同步和异步 257

10.1.1 何为同步/异步 257

10.1.2 【实战】使用回调函数获取数据 258

10.2 为何要使用消息中间件 260

10.2.1 什么是消息中间件,它有什么作用 260

10.2.2 生产级消息中间件的选型 263

10.2.3 在高并发场景下如何处理请求 264

10.3 RocketMQ在项目中的使用 267

10.3.1 RocketMQ架构原理 267

10.3.2 【实战】利用RocketMQ改造订单系统,提升性能 269

10.4 引入消息中间件会带来什么问题 275

10.4.1 需要保证消息中间件的高可用 275

10.4.2 需要保证消息不被重复消费 277

10.4.3 需要保证消息的顺序性 279

10.4.4 需要解决消息中间件中的消息延迟 280

第11章 微服务设计——将系统拆分 282

11.1 好好的系统为什么要拆分 282

11.2 如何拆分服务 283

11.2.1 不可忽略的SOA架构 283

11.2.2 如何对已有系统进行微服务改造 284

11.2.3 微服务拆分的方式 287

11.2.4 有哪些好用的微服务开发框架 288

11.3 微服务设计参照模型 290

11.3.1 在开发中如何定义软件分层 290

11.3.2 运用好“微服务的使用模式”可以事半功倍 292

11.4 引入微服务架构会带来什么问题及其解决方案 294

11.4.1 数据一致性问题 295

11.4.2 分布式事务问题 296

11.4.3 复杂度问题 296

11.5 如何有效治理微服务 297

11.5.1 管理服务 298

11.5.2 治理服务 298

11.5.3 监控服务 298

11.5.4 定位问题 299

11.5.5 查询日志 299

11.5.6 运维服务 299

第12章 API网关设计——让服务井然有序 300

12.1 为什么要引入API网关 300

12.1.1 什么是API网关 300

12.1.2 API网关的作用 301

12.2 API网关的通用设计方案 302

12.2.1 设计API网关要考虑哪些关键点 302

12.2.2 API网关的选型 304

12.3 将API网关应用到生产项目中 305

12.3.1 【实战】基于Zuul搭建生产级API网关 305

12.3.2 【实战】基于Spring Cloud Gateway搭建生产级API网关 308

第4篇 高并发项目设计及实战

第13章 高并发系统设计原则 316

13.1 高并发系统的通用设计原则 316

13.1.1 利用负载均衡分散流量 316

13.1.2 利用分布式缓存扛住“读”流量 322

13.1.3 实现数据库的读写分离 322

13.1.4 实现数据库分库分表 323

13.1.5 使用NoSQL、消息队列及搜索引擎技术 324

13.1.6 将大应用拆分为小应用 325

13.2 提升系统性能的策略 325

13.2.1 垂直伸缩 325

13.2.2 水平伸缩 326

第14章 【项目实战】搭建千万级流量“秒杀”系统 327

14.1 搭建“秒杀”系统工程 327

14.1.1 技术选型 327

14.1.2 工程搭建 329

14.2 分析“秒杀”业务 331

14.2.1 “秒杀”业务场景分析 331

14.2.2 “秒杀”痛点分析 334

14.3 具体设计与开发 335

14.3.1 数据库层的设计与开发 335

14.3.2 业务服务层的设计与开发 335

14.3.3 动静分离的实现 339

14.3.4 优化系统以应对千万级流量 340

第15章 【项目实战】搭建C2C二手电商平台的社会化治理系统 342

15.1 搭建系统工程 342

15.1.1 技术栈列表 342

15.1.2 工程搭建 343

15.2 分析系统业务 343

15.2.1 C2C二手电商平台社会化治理系统的业务介绍 343

15.2.2 C2C二手电商平台社会化治理系统的痛点分析 343

15.3 整体架构设计 344

15.3.1 整体架构图 344

15.3.2 场景分析 345

15.4 微服务设计开发 345

15.4.1 服务拆分及高可用注册中心搭建 345

15.4.2 服务间通信框架选择 349

15.4.3 平台服务开发 349

15.5 服务治理开发 351

15.5.1 链路追踪的设计与开发 351

15.5.2 引入分布式事务框架 352

15.5.3 平台限流熔断的设计与开发 354

15.5.4 引入API网关 357

15.5.5 基于Nacos搭建环境隔离配置中心 358

第5篇 运维监控

第16章 运维之术——告别加班 360

16.1 什么是CI/CD 360

16.2 为什么要CI/CD 361

16.3 搭建适合自己公司的CI/CD 362

16.3.1 【实战】基于GitLab搭建代码管理平台 362

16.3.2 【实战】基于Jenkins搭建持续集成与编译平台 363

16.3.3 【实战】基于Ansible搭建自动化部署平台 366

16.4 服务器通用运维 366

16.4.1 优化硬件 366

16.4.2 分析性能瓶颈 367

16.4.3 【实战】处理服务器丢包问题 369

16.4.4 【实战】分析服务吞吐量突然下降的原因 373

第17章 监控之术——天使之眼 374

17.1 如何定义系统监控 374

17.1.1 需要监控哪些系统指标 374

17.1.2 如何采集监控指标 375

17.1.3 如何存储监控指标 375

17.2 搭建一套可靠的监控系统 375

17.2.1 【实战】基于ELK搭建集中化日志监控平台 375

17.2.2 【实战】基于Prometheus搭建系统指标监控预警平台 378

17.3 链路追踪——不漏过任何一个异常服务 385

17.3.1 什么是链路追踪 385

17.3.2 常用的开源链路追踪系统 386

17.3.3 【实战】在微服务架构中加入链路追踪系统SkyWalking 386

评论 ······

相对泛,不过可能作为复习提纲

写的一般,每个点都浅尝辄止,还有不少笔误

相对泛,不过可能作为复习提纲

写的一般,每个点都浅尝辄止,还有不少笔误

点击星号评分!

平均分 0 / 5. 投票数: 0

还没有投票!请为他投一票。

推荐阅读

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册