×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

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

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

1星价 ¥70.9 (6.5折)
2星价¥70.9 定价¥109.0
暂无评论
图文详情
  • ISBN:9787121442049
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:其他
  • 页数:420
  • 出版时间:2022-09-01
  • 条形码:9787121442049 ; 978-7-121-44204-9

本书特色

适读人群 :单体架构工程师、老系统维护工程师一本书让你的老旧单系统,变为高并发系统。 包含以下内容: 应用集群化、缓存设计、存储系统设计、搜索引擎、消息中间件设计、微服务设计、API网关设计,有两个【项目实战】:搭建千万级流量“秒杀”系统、搭建C2C二手电商平台的社会化治理系统,以及运维之术、监控之术 (1)主线清晰。 (2)语言简洁,阅读不枯燥。 (3)大量绘图,知其所以然。 (4)大量实战,如同身临其境。 (5)主体是高并发,但不止于此。

内容简介

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

目录

第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
展开全部

作者简介

谢恩德 10余年IT互联网从业经历,清华大学合肥公共安全研究院高级技术经理 曾是多家物联网、互联网技术负责人,精通大型企业级平台架构设计、底层逻辑设计

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航