分布式中间件技术实战(Java版)pdf下载

分布式中间件技术实战(Java版)百度网盘pdf下载

作者:
简介:分布式中间件技术实战(Java版)
出版社:
出版时间:2020-01
pdf下载价格:9.00¥


预览


内容介绍



商品参数

分布式中间件技术实战(Java版)
定价 129.00
出版社 机械工业出版社
版次 1
出版时间 2020年01月
开本 16开
作者 钟林森
装帧 平装-胶订
页数 448
字数 1000
ISBN编码 9787111641513


内容介绍

《分布式中间件技术实战(Java版)》站在初学者的角度,介绍了几款比较流行的分布式中间件,带领读者从零开始一步一个脚印地学习Java企业级应用开发。书中在讲解 要的理论知识和应用场景后都给出了实际项目案例,可以提高读者的开发水平和项目实战能力。 《分布式中间件技术实战(Java版)》共10章,分为3篇。dy 篇开发工具准备,介绍了分布式系统架构的相关知识要点,包括其功能、作用及演进历程,并由此引出了分布式中间件的相关介绍。第2篇开发实战,全面介绍了目前在实际开发中应用比较广泛的几款Java中间件,包括缓存中间件Redis、消息中间件RabbitM 、统一协调管理中间件ZooKeeper和综合中间件Redisson等,重点介绍了这几款中间件的基本概念、典型应用场景及相应的功能组件等。第3篇总结,对相关内容做了重点回顾与总结。值得一提的是,《分布式中间件技术实战(Java版)》在介绍几款中间件的理论知识时,还以Spring Boot微服务框架作为奠基,整合了相关中间件之间的依赖,并结合作者的实际项目经验进行了代码实战。 《分布式中间件技术实战(Java版)》特别适合中间件实践经验为零的开发者阅读;对于有一定Java应用开发经验的工程师而言,通过阅读《分布式中间件技术实战(Java版)》可以了解中间件在构建企业级应用过程中所提供的思路和解决方案;IT培训机构的学员,也可以通过《分布式中间件技术实战(Java版)》系统地学习中间件技术。

关联推荐

CSDN博客专家、51CTO学院/CSDN学院/网易云课堂 讲师力作
结合近30个案例及88幅流程图,全面介绍分布式中间件的原理及应用
容易上手:手把手带领读者从零开始逐步学习常用的分布式中间件技术
图文并茂:结合88幅流程图进行讲解,可以加深读者对中间件原理的理解
注重实战:结合大量简洁、优雅的高质量代码实例进行开发实践,提高读者的开发水平
案例丰富:结合近30个实际项目中的典型业务场景案例进行讲解,让读者身临其境
分布式系统架构的演进历程是怎么样的?
有哪些常用的典型分布式中间件?其作用又是什么?
Redis的作用及其典型应用场景有哪些?
如何基于微服务项目使用Redis?
如何设计一款可扛住高并发的红包系统?
RabbitM 的作用以及有哪些典型的应用场景?
如何基于微服务使用RabbitM ?
什么是延迟/死信队列以及有哪些应用场景?
如何基于Spring Boot项目实战死信队列?
什么是分布式锁以及有哪些实现方式?
如何基于微服务项目使用Redisson?
如何基于微服务项目使用ZooKeeper?
如何实现模仿微博高并发量的点赞、评论等常规 作?

目录

dy 篇 开发工具准备 dy 章 走进分布式中间件 2 1.1 分布式系统概述 2 1.1.1 白话分布式系统 3 1.1.2 分布式系统发展历程 3 1.1.3 分布式系统特性 6 1.1.4 分布式系统常见问题 7 1.2 分布式中间件概述 7 1.2.1 白话分布式中间件 7 1.2.2 常见中间件介绍 8 1.3 本书核心知识要点 9 1.4 本书实战要求与建议 10 第2章 搭建微服务项目 11 2.1 Spring Boot概述 11
dy 篇  开发工具准备
dy 章  走进分布式中间件 2
1.1  分布式系统概述 2
1.1.1  白话分布式系统 3
1.1.2  分布式系统发展历程 3
1.1.3  分布式系统特性 6
1.1.4  分布式系统常见问题 7
1.2  分布式中间件概述 7
1.2.1  白话分布式中间件 7
1.2.2  常见中间件介绍 8
1.3  本书核心知识要点 9
1.4  本书实战要求与建议 10
第2章  搭建微服务项目 11
2.1  Spring Boot概述 11
2.1.1  什么是Spring Boot 11
2.1.2  Spring Boot的优势 12
2.1.3  Spring Boot的几大特性 13
2.2  搭建规范与搭建流程 13
2.2.1  Spring Boot项目搭建规范 14
2.2.2  Spring Boot项目搭建流程 14
2.2.3  写个Hello World吧 26
2.3  总结 28
第2篇  开发实战
第3章  缓存中间件Redis 30
3.1  Redis概述与典型应用场景介绍 30
3.2  Redis的使用 32
3.2.1  快速安装Redis 32
3.2.2  在Windows环境下使用Redis 34
3.2.3  Spring Boot项目整合Redis 37
3.2.4  Redis自定义注入Bean组件配置 38
3.2.5  RedisTemplate实战 39
3.2.6  StringRedisTemplate实战 43
3.3  Redis常见数据结构实战 45
3.3.1  字符串 45
3.3.2  列表 47
3.3.3  集合 48
3.3.4  有序集合 50
3.3.5  哈希Hash存储 52
3.3.6  Key失效与判断是否存在 54
3.4  Redis实战场景之缓存穿透 56
3.4.1  什么是缓存穿透 57
3.4.2  缓存穿透的解决方案 58
3.4.3  实战过程 58
3.4.4  其他典型问题介绍 65
3.5  总结 66
第4章  Redis典型应用场景实战之抢红包系统 67
4.1  整体业务流程介绍 67
4.1.1  抢红包系统业务流程 68
4.1.2  业务流程分析 68
4.1.3  业务模块划分 70
4.2  数据库表设计与环境搭建 71
4.2.1  数据库表设计 71
4.2.2  开发环境搭建 73
4.2.3  开发流程介绍 83
4.3  “红包金额”随机生成算法实战 85
4.3.1  随机数算法 86
4.3.2  红包随机金额生成算法要求 86
4.3.3  二倍均值法简介 87
4.3.4  红包随机金额生成算法实战 88
4.3.5  红包随机金额生成算法自测 90
4.4  “发红包”模块实战 91
4.4.1  业务模块分析 92
4.4.2  整体流程实战 93
4.4.3  业务模块自测 99
4.5  “抢红包”模块实战 101
4.5.1  业务模块分析 101
4.5.2  整体流程 102
4.5.3  业务模块自测 105
4.5.4  总结 109
4.6  Jmeter压力测试高并发抢红包 110
4.7  问题分析与优化方案 116
4.7.1  问题分析 117
4.7.2  优化方案介绍 118
4.7.3  优化方案之Redis分布式锁实战 118
4.7.4  不足之处 122
4.8  总结 122
第5章  消息中间件RabbitM 124
5.1  RabbitM 简介 124
5.1.1  认识RabbitM 125
5.1.2  典型应用场景介绍 126
5.1.3  RabbitM 后端控制台介绍 132
5.1.4  基于Spring的事件驱动模型实战 133
5.2  Spring Boot项目整合RabbitM 137
5.2.1  RabbitM 相关词汇介绍 138
5.2.2  Spring Boot项目整合RabbitM 139
5.2.3  自定义注入配置Bean相关组件 140
5.2.4  RabbitM 发送、接收消息实战 142
5.2.5  其他发送接收消息方式实战 147
5.3  RabbitM 多种消息模型实战 152
5.3.1  基于Fa utExchange的消息模型实战 152
5.3.2  基于DirectExchange的消息模型实战 160
5.3.3  基于TopicExchange的消息模型实战 165
5.4  RabbitM 确认消费机制 171
5.4.1  消息高可用和确认消费 172
5.4.2  常见的确认消费模式介绍 174
5.4.3  基于自动确认消费模式实战 176
5.4.4  基于手动确认消费模式实战 182
5.5  典型应用场景实战之用户登录成功写日志 188
5.5.1  整体业务流程介绍与分析 188
5.5.2  数据库表设计 189
5.5.3  开发环境搭建 197
5.5.4  基于TopicExchange构建日志消息模型 200
5.5.5  异步发送接收登录日志消息实战 201
5.5.6  整体业务模块自测实战 205
5.6  总结 208
第6章  死信队列/延迟队列实战 209
6.1  死信队列概述 209
6.1.1  死信队列简介与作用 209
6.1.2  典型应用场景介绍 212
6.2  RabbitM 死信队列实战 213
6.2.1  死信队列专有词汇介绍 214
6.2.2  死信队列消息模型实战 215
6.2.3  死信队列延迟发送消息实战 221
6.3  典型应用场景实战之商城平台订单支付超时 226
6.3.1  整体业务场景介绍 227
6.3.2  整体业务流程分析 228
6.3.3  数据库设计 229
6.3.4  构建RabbitM 死信队列消息模型 236
6.3.5  Controller层开发用户下单及订单失效功能 240
6.3.6  “用户下单支付超时”延迟发送接收实战 246
6.3.7  “用户下单支付超时”整体功能自测 250
6.4  总结 254
第7章  分布式锁实战 256
7.1  分布式锁概述 256
7.1.1  锁机制 257
7.1.2  分布式锁登场 263
7.1.3  典型应用场景介绍 265
7.1.4  小结 268
7.2  基于数据库实现分布式锁 268
7.2.1  乐观锁简介 268
7.2.2  乐观锁实战 269
7.2.3  Jmeter高并发测试乐观锁 280
7.2.4  悲观锁简介 286
7.2.5  悲观锁实战 288
7.2.6  Jmeter高并发测试悲观锁 290
7.2.7  小结 291
7.3  基于Redis实现分布式锁 292
7.3.1  Redis温故而知新 292
7.3.2  分布式锁的实现流程与原理分析 294
7.3.3  基于Redis实战实现分布式锁 295
7.3.4  Jmeter高并发测试 303
7.3.5  小结 307
7.4  基于ZooKeeper实现分布式锁 308
7.4.1  ZooKeeper简介与作用 308
7.4.2  分布式锁的实现流程与原理分析 310
7.4.3  Spring Boot整合ZooKeeper 312
7.4.4  基于ZooKeeper实现分布式锁 315
7.4.5  Jmeter高并发测试 317
7.4.6  小结 319
7.5  典型应用场景之书籍抢购模块设计与实战 319
7.5.1  整体业务流程介绍与分析 319
7.5.2  数据库表设计与用例设计 321
7.5.3  书籍抢购核心业务逻辑开发实战 324
7.5.4  Jmeter重现“库存超 ”的问题 328
7.5.5  采用分布式锁解决问题 330
7.5.6  小结 334
7.6  总结 334
第8章  综合中间件Redisson 336
8.1  Redisson概述 336
8.1.1  Redisson简介与作用 337
8.1.2  Redisson的功能特性 339
8.1.3  典型应用场景之布隆过滤器与主题 340
8.1.4  典型应用场景之延迟队列与分布式锁 345
8.1.5  Spring Boot整合Redisson 348
8.2  Redisson常见功能组件实战 352
8.2.1  布隆过滤器 352
8.2.2  发布-订阅式主题 355
8.2.3  数据结构之映射Map 361
8.2.4  数据结构之集合Set 366
8.2.5  队列 ueue实战 370
8.2.6  延迟队列Delayed ueue实战1 374
8.2.7  延迟队列Delayed ueue实战2 381
8.3  分布式锁实战 385
8.3.1  重温分布式锁 385
8.3.2  分布式锁之一次性锁实战 387
8.3.3  分布式锁之可重入锁实战 392
8.4  总结 398
第9章  Redisson典型应用场景实战之高性能点赞 399
9.1  整体业务流程介绍与分析 399
9.1.1  业务背景介绍 400
9.1.2  业务流程介绍与分析 401
9.1.3  业务模块划分与数据库设计 404
9.2  “点赞与取消点赞” 作模块实战 409
9.2.1  “点赞与取消点赞”业务流程分析 409
9.2.2  Controller层接收请求信息 412
9.2.3  Service层插入、更新并缓存记录信息 415
9.2.4  业务模块自测 421
9.3  “排行榜”业务模块实战 424
9.3.1  “排行榜”业务流程分析 425
9.3.2  接收前端请求并触发缓存排行榜 426
9.3.3  业务模块自测 428
9.4  总结 432
第3篇   总结
dy 0章  总结与回顾 434
显示全部信息

在线试读

dy 章 走进分布式中间件 对于“分布式系统”,大多数初学者的dy感觉是遥不可及,犹如金庸先生的武侠小说中提及的“降龙十八掌”“独孤九剑”等武林 学一般,虽然没有亲眼见过,但也应听过其大名。 分布式系统凭借其具有高吞吐、强扩展、高并发、低延迟及灵活部署等特点,大大促进了互联网的飞速发展,给企业带来了巨大的收益。而作为分布式系统中关键的组件——分布式中间件,也起到了 不可少的作用。它是一种独立的基础系统软件或者服务程序,处于 作系统软件与用户的应用软件中间,可作为独立的软件系统运转。 随着业务的发展和用户流量的上升,对互联网系统或者服务程序则提出了新的挑战,其中,高吞吐、高并发、强扩展、灵活部署及低延迟等俨然成为急需解决的需求!为此,作为枢纽的中间件也从“集中式”发展为“分布式”,如基于Redis的分布式缓存、基于RabbitM 的分布式消息中间件、基于Elasticsearch的分布式全文搜索引擎、基于ZooKeeper的分布式锁等。 另外,作为一名IT行业的从业人员,在普通研发工程师到系统架构师的成长之路上,分布式中间件是绕不过去的。既然绕不过去,那还不如从现在开始认真地学习分布式中间件,也当作是自己职业生涯的一个成长轨迹。 本章的主要内容有: ? 分布式系统概述、发展历程、特性及常见问题。 ? 分布式中间件概述、常见分布式中间件及其典型应用场景介绍。 1.1 分布式系统概述 虽然“分布式系统”在初学者看来是多么的遥不可及,但当你接触过并实际掌握过分布式系统相关技术要点后,会发现分布式系统其实也很简单。回望分布式系统的发展历史,其出现并非一开始就是“分布式”的,而是随着业务的发展与用户访问量的上升,使得其应势而生,由此而带动了相关技术的发展。 本节我们将一起来认识“分布式系统”这一“庞然大物”,以及由此孕育的中间件的产生与发展。 1.1.1 白话分布式系统 关于“分布式系统”的定义,说直白点,可以这样理解:
dy 章  走进分布式中间件
对于“分布式系统”,大多数初学者的dy感觉是遥不可及,犹如金庸先生的武侠小说中提及的“降龙十八掌”“独孤九剑”等武林 学一般,虽然没有亲眼见过,但也应听过其大名。
分布式系统凭借其具有高吞吐、强扩展、高并发、低延迟及灵活部署等特点,大大促进了互联网的飞速发展,给企业带来了巨大的收益。而作为分布式系统中关键的组件——分布式中间件,也起到了 不可少的作用。它是一种独立的基础系统软件或者服务程序,处于 作系统软件与用户的应用软件中间,可作为独立的软件系统运转。
随着业务的发展和用户流量的上升,对互联网系统或者服务程序则提出了新的挑战,其中,高吞吐、高并发、强扩展、灵活部署及低延迟等俨然成为急需解决的需求!为此,作为枢纽的中间件也从“集中式”发展为“分布式”,如基于Redis的分布式缓存、基于RabbitM 的分布式消息中间件、基于Elasticsearch的分布式全文搜索引擎、基于ZooKeeper的分布式锁等。
另外,作为一名IT行业的从业人员,在普通研发工程师到系统架构师的成长之路上,分布式中间件是绕不过去的。既然绕不过去,那还不如从现在开始认真地学习分布式中间件,也当作是自己职业生涯的一个成长轨迹。
本章的主要内容有:
? 分布式系统概述、发展历程、特性及常见问题。
? 分布式中间件概述、常见分布式中间件及其典型应用场景介绍。
1.1  分布式系统概述
虽然“分布式系统”在初学者看来是多么的遥不可及,但当你接触过并实际掌握过分布式系统相关技术要点后,会发现分布式系统其实也很简单。回望分布式系统的发展历史,其出现并非一开始就是“分布式”的,而是随着业务的发展与用户访问量的上升,使得其应势而生,由此而带动了相关技术的发展。
本节我们将一起来认识“分布式系统”这一“庞然大物”,以及由此孕育的中间件的产生与发展。
1.1.1  白话分布式系统
关于“分布式系统”的定义,说直白点,可以这样理解:
? 分布式系统整体上来说比较强大,其内部至少由多台计算机组成,类似于一个统一的“机器中心”一样,背后由一组独立的计算机组成。
? 对于用户来说,这个“机器中心”却像是单个相关系统一样,根本感觉不到计算机集 的存在。
从程序的角度来看,程序A与程序B分别运行在两台计算机上,它们相互协作完成同一个功能。从理论上讲,这两个程序所组成的系统,就可以称作是“分布式系统”。当然,这两个程序可以是不同的程序,也可以是相同的程序。如果是相同的程序,我们又可以称之为“集 ”。
1.1.2  分布式系统发展历程
在分布式系统出现之前,市面上几乎所有的软件系统都是集中式的,即所谓的单机系统。软件、硬件及各种组件高度耦合组成了单机架构。在很长一段时间内,这种架构着实起到了很大的作用,给企业带来了诸多收益。随着业务的发展及用户访问量的上升,这种系统架构也随之进行了演进。以Web应用为例,主要包含以下5个历程。
1.单点集中式Web应用
早期很多中小型企业的大部分项目都是基于这样的架构,如图1.1所示。
(无法传图)
图1.1  分布式系统发展历程——单点集中式Web应用
单点集中式Web应用系统架构总体上来看还是比较简单的,一般以后台管理应用为主,比如CRM和OA系统等。这种系统架构有一个很明显的特点就是数据库(比如MyS L)及应用的War包都是共同部署在同一台 上,文件的上传存储也是上传到本台机器上。
单点集中式Web应用系统架构的优点是适用于小型项目,发布便捷(只需要打包成War包,并进行解压即可),对于运维的工作量也比较小。其缺点在于若是该台 宕机了,整个应用将无法访问。
2.应用与文件服务及数据库单独拆分
随着时间的推移,数据库及文件的数据量越来越多,由于 的容量是有限的,原有系统架构已经不足以支撑,此时需要将Web应用、数据库、文件存储服务拆分出来作为独立的服务,以此来避免存储瓶颈,如图1.2所示。
(无法传图)
图1.2  分布式系统发展历程——应用与文件及数据库服务单独拆分
应用与文件服务及数据库单独拆分这种系统架构,一个明显的特点就是三个服务独立部署,不同 宕机了,其他的仍然可以使用。
3.引入缓存与集 ,改善系统整体性能
当请求并发量上去了,而单台Web (比如Tomcat)不足以支撑应用的时候,此时我们会考虑引入缓存及集 ,以改善系统的整体性能,此种系统架构如图1.3所示。
? 引入缓存:把大量用户的读请求引导至缓存(如Redis)中,而写 作仍然直接写到数据库DB中。这点性能上的优化,可以将数据库的一部分数据或者系统经常需要访问的数据(如热点数据)放入缓存中,减少数据库的访问压力,提高用户并发请求性能。
? 引入集 :目的在于减少单台 的压力。可以通过部署多台Tomcat来减少单机带来的压力,常见手段是Nginx Lvs, 终是多台应用 构成了负载均衡,减少了单机的负载压力(需要注意的是,对于用户的Session需要调整为使用Redis或者Spring-Session进行管理)。
(无法传图)
图1.3  分布式系统发展历程——引入缓存与集 ,改善系统整体性能
4.数据库读写分离,并提供反向代理及CDN加速访问服务
经过调查发现,在大多数互联网应用系统中,用户的读请求数量往往大于写请求,它们会相互竞争,在这个时候往往写 作会受到影响,导致数据库出现存储瓶颈(可以参考春节抢票高峰期12306的访问情况)。因此会对数据库采取读写分离,从而提高数据库的存储性能。
除此之外,为了加速 的访问速度,尤其是加速静态资源的访问,会将系统的大部分静态资源存放到CDN中,并加入反向代理的配置,从而减少访问 时直接去 读取静态数据。
DB的读写分离将有效地提高数据库的存储性能,而加入CDN与反向代理将加速系统的访问速度,此种系统架构如图1.4所示。
(无法传图)
图1.4  分布式系统发展历程——数据库读写分离并提供反向代理及CDN加速访问服务
5.分布式文件系统与分布式数据库
经过统计与监测,发现系统对于某些表有大量的请求,此时为了减少DB的压力,我们会进行分库分表,即根据业务来拆分数据库,此种系统架构如图1.5所示。
(无法传图)
图1.5  分布式系统发展历程——分布式文件系统与分布式数据库
1.1.3  分布式系统特性
回顾分布式系统的发展历程会发现,在分布式系统出现之前,软件系统都是集中式的,俗称单机系统。在很长一段时期,单机系统通过不断升级“程序”或者相关硬件,就能满足不断增长的性能需求,然而,随着互联网的飞速发展,高吞吐、高并发、低延迟逐渐成为“刚需”,单凭“生硬”地不断升级已无能为力,于是分布式系统“应需求而生”。总的来说,分布式系统具有以下5个特性:
? 内聚性和透明性:分布式系统是建立在网络之上的软件系统,所以具有高度的内聚性和透明性。
? 可扩展性:分布式系统可以随着业务的增长动态扩展自己的系统组件,从而提高系统整体的处理能力。通常有两种方式:其一,优化系统的性能或者升级硬件,即垂直扩展;其二,增加计算单元(如 等)以扩展系统的规模,即水平扩展。
? 可用与可靠性:说直白点,可靠性量化的指标是给定周期内系统无故障运行的平均时间,而可用性量化的指标是给定周期内系统无故障运行的总时间;一个是“平均”时间,一个是“总”时间。
? 高性能:不管是单机系统还是分布式系统,性能始终是关键指标。不同的系统对性能的衡量指标是不同的, 常见的有“高并发”(即单位时间内处理的任务越多越好和“低延迟”(即每个任务的平均处理时间越少越好)。分布式系统的设计初衷便是利用更多的机器,实现更强大的计算和存储能力,即实现高性能。
? 一致性:分布式系统为了提高可用性和可靠性,一般会引入冗余(副本)。为了保证这些节点上的状态一致,分布式系统 须解决一致性问题,其实就是在多个节点集 部署下,如何保证多个节点在给定的时间内, 作或者存储的数据只有一份。
1.1.4  分布式系统常见问题
分布式系统虽然看似很强大,但是在实际的应用环境中,由于一些人为难以控制或者根本就不可控制的因素,导致系统整体上变得十分脆弱。典型的常见因素包括:
1.网络并没有那么可靠
分布式系统中,节点间本质上是通过网络通信,而网络有些时候并没有那么可靠。常见的网络问题有网络延时、丢包和消息丢失等。
2.节点故障无法避免
当分布式的节点数目达到一定规模后,整个系统出现故障的概率将变高。而分布式系统需要保证故障发生时,系统仍然是可用的,即在某个或者某些节点发生故障的情况下,需要将该节点所负责的计算和存储任务转移到其他节点。
总而言之,分布式系统在给互联网企业带来诸多好处之时,随之也带来了诸多挑战和不确定性,可谓是一把“双刃剑”。
1.2  分布式中间件概述
作为分布式系统中 不可少的组件,分布式中间件在分布式系统的发展历程中起到了关键性的作用,特别是针对高并发、高吞吐、低延迟等普遍性的需求,在中间件层面能够得到很好的解决。
本节将介绍中间件的相关概念、常见的中间件及其常见的典型应用场景。
1.2.1  白话分布式中间件
中间件是一种独立的基础系统软件或者服务程序,处于 作系统软件与用户的应用软件中间,具有很好的独立性,可作为独立的软件系统运转。
如果读者还不清楚什么是中间件,那么应该听说过Redis、RabbitM 、ZooKeeper、Elasticsearch、Nginx中的一种吧,它们都是常用的中间件,可实现缓存、消息队列、分布式锁、全文搜索及负载均衡等功能。
而随着互联网的飞速发展,高吞吐、高并发、低延迟和负载均衡已成为普遍性的需求,因此,作为枢纽的中间件也从单点的“集中式”发展为“分布式”,如常见的基于Redis的分布式缓存、基于RabbitM 的分布式消息中间件、基于ZooKeeper的分布式锁,以及基于Elasticsearch的全文搜索引擎等。
1.2.2  常见中间件介绍
如前面所讲的,目前比较常见及常用的中间件包括Redis、Redisson、RabbitM 、ZooKeeper、Elasticsearch、Kafka、Etcd和Nginx等。由于笔者阅历有限,本书将重点介绍Redis、Redisson、RabbitM 及ZooKeeper这些中间件,其他的中间伴,感兴趣的读者可以在网上学习相关的技术要点。
1.Redis简介
Redis是一个开源(BSD许可)的、基于内存存储、采用Key-Value(键值对)格式存储的内存数据库,支持多种数据类型,包括字符串、哈希表、列表、集合、有序集合和位图等。
本书我们将重点介绍Redis在“缓存”层面的相关技术要点,并采用典型的实际案例系统来实战Redis。
2.Redisson简介
Redisson是“架设在Redis基础上的一个Java驻内存数据网络(In-Memory Data Grid)”,可以简单地理解为Redisson是Redis的一个升级版,它充分利用了Redis键值对数据库提供的一系列优势,为使用者提供了一系列具有分布式特性的常用工具类。
Redisson的出现使得原本作为协调单机多线程并发程序的工具包,获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度,同时也简化了分布式环境中程序相互之间的协作。
Redis在分布式系统应用过程中出现的问题,在Redisson这里能够得到很好的解决,比如关于分布式锁的处理,Redisson的处理方式则更为安全、稳定与高效。这在后面Redisson的实战章节中将有所介绍。
3.RabbitM 简介
RabbitM 是一款应用相当广泛并开源的消息中间件,可用于实现消息异步分发、模块解耦、接口限流等功能。特别是在处理分布式系统高并发的业务场景时,RabbitM 能够起到很好的作用,比如接口限流,从而降低应用 的压力;比如消息异步分发,从而降低系统的整体响应时间。
在后续的相关实战章节中,将会对RabbitM 拥有的这些特性与功能进行详细介绍。
4.ZooKeeper简介
ZooKeeper是一个开源的分布式应用程序协调服务,可以为分布式应用提供一致 ,简称ZK。其提供的功能服务包括配置维护、域名服务、分布式同步等;提供的接口则包括分布式独享锁、选举、队列等。
在本书中,我们将介绍ZooKeeper的分布式锁在处理分布式系统中高并发出现的并发问题。
1.3  本书核心知识要点
本书着重介绍目前比较流行的中间件及其相关技术要点。书中首先会讲解中间件的相关基础概念,让读者对其有初步的认识,之后会采用实际的典型应用案例“实战”中间件,真正地将中间件应用到实际的业务场景中,从而让读者掌握中间件的核心技术及实际应用场景!
工欲善其事, 先利其器。在“实战”本书相关技术要点之前,笔者首先会带领读者采用目前比较流行的微服务框架Spring Boot搭建企业级的微服务项目,然后一步一步地引入中间件的配置与相关依赖,从而实战相关的技术要点。
“首当其冲”的中间件是分布式缓存中间件Redis。本书将会介绍Redis的相关基础概念、安装与简单用法,以代码“实战”Redis支持的各种常见数据类型,并以目前两个典型的业务场景“缓存穿透”与“缓存雪崩”,巩固读者对Redis相关知识点的理解, 后以典型的案例“抢红包设计与实战”,带领读者体验Redis在实际项目中的应用。
接着会介绍目前应用相当广泛的分布式消息中间件RabbitM 。本书将会介绍RabbitM 的相关基础概念、作用及常见的业务场景,认识RabbitM 涉及的相关专用词汇,以实际代码“实战”RabbitM 的几种消息模型,并掌握如何采用RabbitTemplate组件发送消息、采用@RabbitListener接受消息等, 后以典型的应用场景“用户 作异步写日志”实战案例,巩固RabbitM 的相关知识点。
在某些业务场景下,需要实现“延时、延迟发送文件或者消息”等功能,此时RabbitM 的死信队列即可搬上用场。本书将会介绍RabbitM 死信队列的相关基础概念、作用及常见的应用场景,认识死信队列DLX、DLK和TTL等相关专用名词,并以实例实现死信队列的消息模型, 后以典型应用场景“商城平台用户支付超时”为案例进行巩固。
介绍完Redis与RabbitM 后,本书将通过一个案例,即采用Redis和RabbitM 的典型应用场景“商城系统高并发抢单”,介绍商城高并发抢单的整体业务流程,以及如何采用Redis和RabbitM 的相关技术实现高并发抢单的核心业务逻辑。
在分布式系统中,“高并发”所产生的诸多问题是很常见的,其中比较典型的问题在于高并发抢占共享资源而导致并发安全的问题。为了解决这个问题,本书采用一章的篇幅介绍了分布式锁,包括其相关概念、作用与常见的应用场景,并以实际的典型应用场景“ 系统设计与实战”为案例驱动,以多种实现方式(数据库乐观锁/悲观锁、Redis原子 作、ZooKeeper分布式锁及Redisson分布式锁)配备实际代码实现分布式锁。
“打铁需趁热”本书将用一章的篇幅介绍Redisson及其分布式锁,包括其相关基础概念和作用,以实际的应用场景“高性能点赞和评论模块设计与实战”为案例驱动,带领读者对该案例展开业务流程分析,进行数据库表设计及项目的整合搭建, 终以代码的形式实现高性能的点赞与评论功能。
1.4  本书实战要求与建议
“师父领进门,修行靠个人”。在笔者带领各位读者步入中间件的殿堂之后,后续的巩固提升及代码实战就得靠自己了!在这里给大家提几点实战方面的要求与建议。
(1)读者须具备Java及Spring Boot方面的相关基础知识,因为本书的实战代码以微框架Spring Boot为奠基整合相关依赖,从而实现中间件的相关技术要点。
(2)读者需在自己的开发机器上安装 基本的软件,如JDK(1.7或者1.8版均可)、MyS L(5.6或者5.7版均可)、Maven(3.3.x版本或者更高版本均可)等,毕竟要进入代码实战,这些可以说是 基本的要求了(笔者采用的是JDK 1.8,MyS L 5.6、Maven 3.3.9)。
(3)由于本书的大部分篇章采用代码实战及实际的案例为驱动,因而强烈建议读者一定要多动手、多写代码,只有代码写多了,才能知道可能会出现的问题及如何解决这些问题,才能将所学之物转化为自己的经验。
(4) 后一点是笔者总结的7个词:沉下心、坚持、多动手、多反思、多做笔记、享受代码、享受Bug。
后,衷心地希望这本书能给你打开一扇通往系统架构师的大门!
显示全部信息