描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121468728
本书内容丰富,案例通俗易懂,几乎涵盖了目前Spring Cloud的全部热门组件,特别适合想要了解Spring Cloud热门组件及想搭建微服务系统的读者阅读。
读者学习本书的内容,会有以下收获。
- Spring Cloud Alibaba 微服务技术组件的整合与使用。
- 服务治理之服务注册与服务发现。
- 服务间的通信方式。
- 负载均衡器的原理与实践。
- 微服务网关搭建与使用。
- 分布式事务的处理。
- 服务容错之限流及熔断。
- 微服务间的链路追踪。
- ELK日志中心的搭建与使用。
- 针对各个知识点的实战源码和一套可执行的微服务项目源码
本书分为14章。第1~4章主要介绍微服务的基本理论、Spring Cloud技术栈和配置基础开发环境的方法,以及如何构建Spring Cloud Alibaba模板项目;第5~13章从服务通信和服务治理两个重要的概念讲起,主要讲解如何使用Nacos、Sentinel、Seata、OpenFeign、Spring Cloud Gateway、Spring Cloud LoadBalancer、Spring Cloud Sleuth、Zipkin等微服务组件,介绍它们的原理和作用,以及如何搭建和整合这些组件并使用它们搭建微服务系统;第14章主要介绍使用这些微服务组件构建的一个大型微服务架构项目,包括它的主要功能模块、由单体模式到前后端分离模式再到微服务架构模式的开发历程、微服务项目改造前的拆分思路、微服务架构实战项目的启动等注意事项,这个实战项目详细的开发步骤会整理在本套书的下册中。
本书内容丰富,案例通俗易懂,几乎涵盖了目前Spring Cloud的全部热门组件,特别适合想要了解Spring Cloud热门组件及想搭建微服务系统的读者阅读。
目录
第1章 千里之行:微服务架构学习路径与建议 1
1.1 微服务架构的学习路径 1
1.1.1 上手微服务架构项目会遇到哪些问题 2
1.1.2 梳理微服务架构 3
1.1.3 拆解微服务架构搭建的步骤 4
1.1.4 搭建并整合各个微服务组件 6
1.1.5 从零到一开发大型的微服务架构项目 6
1.2 章节规划 8
1.2.1 微服务架构的基础知识 8
1.2.2 微服务架构各组件的搭建与整合 8
1.2.3 微服务架构项目实战 9
1.3 学前必bei 10
1.4 学习建议 10
第2章 知己知彼:详解微服务架构的前世今生 12
2.1 什么是微服务架构 13
2.2 为什么要使用微服务架构 15
2.2.1 架构的演进 15
2.2.2 微服务架构并不是石头缝里蹦出的孙悟空 21
2.2.3 哪些原因导致系统架构往微服务架构的方向演进 22
2.3 微服务架构的优缺点 23
2.3.1 微服务架构的优点 24
2.3.2 微服务架构的缺点 26
2.4 架构的尽头是微服务吗 27
2.5 系统架构升级改造时一定会用到微服务吗 27
2.6 学习微服务架构有什么好处 29
2.7 微服务架构中的常用技术 29
第3章 八面玲珑:一站式解决方案——Spring Cloud技术栈 33
3.1 微服务架构中常用的技术及落地方案 33
3.2 Spring Cloud技术栈 35
3.3 Spring Cloud Netflix套件简介 37
3.4 Spring Cloud Alibaba套件简介 38
3.5 选择Spring Cloud Alibaba的原因 40
第4章 有备无患:项目运行所需的开发环境和基础模板代码 42
4.1 JDK的安装和配置 42
4.1.1 下载安装包 42
4.1.2 安装JDK 44
4.1.3 配置环境变量 45
4.1.4 JDK环境变量验证 46
4.2 Maven的安装和配置 47
4.2.1 下载安装包 47
4.2.2 安装并配置Maven 48
4.2.3 Maven环境变量验证 49
4.2.4 配置国内Maven镜像 49
4.3 开发工具IDEA的安装与配置 51
4.3.1 安装IDEA及其功能简介 52
4.3.2 配置IDEA的Maven环境 54
4.3.3 Lombok插件 55
4.4 Spring Boot简介 56
4.5 Spring Boot项目创建 57
4.5.1 认识Spring Initializr 57
4.5.2 使用Spring Initializr初始化一个Spring Boot项目 58
4.5.3 使用IDEA编辑器初始化Spring Boot项目 59
4.6 Spring Boot项目目录结构简介 60
4.7 启动Spring Boot项目 61
4.7.1 在IDEA编辑器中启动Spring Boot项目 61
4.7.2 Maven插件启动 63
4.7.3 java -jar命令启动 64
4.7.4 Spring Boot项目启动日志 65
4.8 开发第一个Spring Boot项目 66
4.9 构建Spring Cloud Alibaba模板项目 68
第5章 拉开帷幕:详解服务通信与服务治理 74
5.1 认识服务通信 74
5.1.1 为什么需要服务通信 74
5.1.2 服务通信简介 76
5.2 HTTP调用之编码实践 77
5.2.1 被调用端编码实现 79
5.2.2 使用HttpClient处理请求 81
5.2.3 使用RestTemplate处理请求 83
5.2.4 使用WebClient处理请求 85
5.3 为什么需要服务治理 87
5.4 服务注册和服务发现 90
5.4.1 服务注册简介 90
5.4.2 服务发现简介 91
5.5 健康检查机制 92
第6章 好戏开场:服务管理、注册中心、配置中心——Nacos 94
6.1 Nacos简介 94
6.2 Nacos下载与启动 96
6.2.1 下载Nacos 96
6.2.2 启动Nacos 97
6.3 修改Nacos持久化配置 100
6.4 Nacos整合之服务注册编码实践 104
6.4.1 编写服务代码 104
6.4.2 在配置文件中添加Nacos配置参数 107
6.4.3 服务注册功能验证 109
6.4.4 Nacos服务注册源码解析 112
6.5 Nacos整合之服务发现编码实践 119
6.5.1 编写服务消费端的代码 119
6.5.2 将服务注册至Nacos 121
6.5.3 编写服务通信代码 122
6.5.4 服务发现的源码分析 125
6.6 配置中心介绍 140
6.6.1 编码中常用的配置方式分析 140
6.6.2 为什么需要配置中心 142
6.6.3 什么是配置中心 143
6.6.4 配置中心具备哪些功能 144
6.6.5 配置中心的优点 145
6.6.6 配置中心在微服务架构中的作用 146
6.7 整合Nacos配置中心编码实践 147
6.7.1 创建基础工程 147
6.7.2 集成Nacos配置中心 151
6.7.3 Data ID详解 155
6.7.4 整合Nacos配置中心功能验证 156
6.8 集成Nacos实现配置动态刷新 158
6.8.1 实现业务开关 159
6.8.2 配置动态刷新功能的好处及应用场景 162
6.9 多配置文件读取 163
6.9.1 extension-configs配置项简介 163
6.9.2 在配置中心创建多个配置文件 164
6.9.3 在代码中增加多配置读取的配置及功能验证 165
第7章 百里挑一:Spring Cloud LoadBalancer负载均衡器 167
7.1 认识负载均衡 167
7.2 Spring Cloud LoadBalancer简介 168
7.3 负载均衡器的功能演示 169
7.4 Spring Cloud LoadBalancer自动配置源码分析 172
7.5 引入负载均衡器后发起请求的源码分析 177
7.5.1 RestTemplate中没有拦截器时是怎样工作的 177
7.5.2 被定制化后的RestTemplate对象是怎样进入拦截器逻辑的 179
7.5.3 拦截器中处理请求的流程 180
7.6 内置负载均衡器的源码分析 182
7.7 自定义负载均衡算法 184
7.8 服务通信和服务治理知识总结 187
7.9 multi-service-demo模板项目创建 189
第8章 云中锦书:OpenFeign远程调用实践 195
8.1 OpenFeign简介 195
8.2 编码集成OpenFeign 196
8.3 OpenFeign参数传递编码实践 201
8.3.1 简单类型处理 202
8.3.2 简单对象类型处理 206
8.3.3 复杂对象类型处理 209
8.3.4 通用结果类Result 214
第9章 一夫当关:微服务网关——Spring Cloud Gateway 217
9.1 微服务网关介绍 217
9.1.1 认识微服务网关 217
9.1.2 网关层的主流技术选型 219
9.1.3 选择Spring Cloud Gateway的原因 222
9.2 整合Spring Cloud Gateway编码实践 224
9.2.1 编码整合Spring Cloud Gateway 224
9.2.2 将网关服务整合到服务中心 227
9.2.3 整合Spring Cloud Gateway报错503的问题解决方法 230
9.3 微服务网关Spring Cloud Gateway之Predicate 231
9.3.1 Spring Cloud Gateway内置断言工厂 231
9.3.2 自定义断言编码实践 235
9.4 微服务网关Spring Cloud Gateway之Filter 239
9.4.1 Spring Cloud Gateway的内置过滤器 240
9.4.2 自定义网关过滤器 244
第10章 登高望远:分布式事务解决方案——Seata 251
10.1 分布式事务详解 251
10.1.1 数据库事务简介 251
10.1.2 分布式事务的问题演示编码 257
10.1.3 分布式事务问题演示 271
10.2 分布式事务解决方案概览 273
10.2.1 分布式事务产生的原因 273
10.2.2 分布式事务的解决方案 275
10.2.3 Alibaba Seata简介 277
10.3 安装Seata 278
10.3.1 下载Seata Server安装包 278
10.3.2 Seata Server的持久化配置 278
10.4 Seata Server整合Nacos服务中心 282
10.4.1 配置Nacos的连接信息 283
10.4.2 启动Seata Server 283
10.5 整合Seata解决分布式事务编码实践 285
10.5.1 创建undo_log表 285
10.5.2 整合Seata解决分布式事务 287
10.6 Seata整合后的基础检验 290
10.6.1 服务注册验证 290
10.6.2 数据源代理验证 291
10.6.3 服务实例与Seata Server的通信验证 292
10.7 Seata中间件的重要概念 293
10.8 验证分布式事务问题及日志分析 295
10.9 Seata(AT模式)分布式事务的处理流程 302
第11章 防患未然:服务容错解决方案——Sentinel 305
11.1 服务容错详解 305
11.1.1 为什么要引入服务容错组件 305
11.1.2 服务容错落地方案:流量控制与降级熔断 307
11.2 Sentinel简介及控制台安装 310
11.2.1 阿里的流量防卫兵——Sentinel 310
11.2.2 下载与启动Sentinel控制台 312
11.3 整合Sentinel客户端编码实践 314
11.4 Sentinel中的基本概念 317
11.4.1 资源 317
11.4.2 规则 318
11.5 限流策略和流控效果 319
11.5.1 限流策略之直接流控 319
11.5.2 限流策略之关联流控 321
11.5.3 限流策略之链路流控 322
11.5.4 流控效果之快速失败 323
11.5.5 流控效果之Warm Up 323
11.5.6 流控效果之排队等待 325
11.5.7 规则配置及限流效果展示 326
11.6 熔断策略配置实践 329
11.6.1 熔断策略简介 330
11.6.2 异常熔断的基础编码 331
11.6.3 熔断策略配置及效果演示 333
11.7 内外结合:降级熔断 流量控制 337
第12章 顺藤摸瓜:链路追踪解决方案——Spring Cloud Sleuth Zipkin 339
12.1 服务链路追踪及技术选型 339
12.1.1 什么是链路追踪 339
12.1.2 Spring Cloud Sleuth简介 340
12.2 整合Spring Cloud Sleuth编码实践 342
12.2.1 基于Spring Cloud Sleuth的链路追踪实现思路 342
12.2.2 代码基础改造 343
12.2.3 整合Spring Cloud Sleuth编码 346
12.3 搭建Zipkin Server实现链路追踪的可视化管理 350
12.3.1 搭建Zipkin Server的详细过程 350
12.3.2 整合Zipkin Client编码实践 352
12.3.3 链路追踪效果演示 353
第13章 运筹帷幄:Elastic Search Logstash Kibana日志中心搭建 357
13.1 ELK——日志收集、分析和展示的解决方案 357
13.1.1 认识ELK 357
13.1.2 ELK的工作流程 358
13.1.3 ELK的优势 359
13.1.4 ELK增强版 359
13.2 搭建ELK日志中心详细过程 361
13.2.1 日志环境搭建准备 361
13.2.2 搭建ELK日志中心 364
13.3 Spring Boot项目将日志输出至ELK编码实践 370
13.4 Kibana配置索引模板和索引模式 373
13.4.1 配置索引模板 374
13.4.2 配置索引模式 375
13.4.3 通过Kibana查询日志 377
13.5 微服务架构项目实战将日志输出至ELK编码实践 379
13.5.1 微服务架构项目中的日志输出配置 379
13.5.2 通过Kibana查询日志 382
第14章 一战定乾坤:大型微服务架构项目设计与实战 387
14.1 微服务实战项目详解 387
14.1.1 实战项目简介 387
14.1.2 新蜂商城项目的开源历程 388
14.1.3 新蜂商城项目的功能及数据库设计 390
14.2 由单体版到微服务架构版的拆分思路 392
14.3 微服务架构实战项目源码获取和项目启动 393
14.3.1 基础环境准备及微服务组件安装和配置 394
14.3.2 下载微服务架构实战项目的项目源码 394
14.3.3 微服务架构实战项目的目录结构 395
14.3.4 启动并验证微服务实例 399
14.4 微服务架构实战项目的功能演示 408
14.4.1 商城用户的注册与登录功能演示 408
14.4.2 把商品添加至购物车的功能演示 411
14.4.3 下单流程演示 415
14.4.4 后台管理系统的部分功能演示 419
14.5 微服务架构实战项目开发过程 424
14.6 微服务架构实战项目中接口的参数处理及统一结果响应 425
14.7 微服务架构实战项目打包和部署的注意事项 427
大家好,我是十三。
非常感谢你们阅读本书,在技术道路上,我们从此不再独行。
写作背景
2017年2月24日,笔者正式开启技术写作之路,同时也开始在GitHub网站上做开源项目,由于一直坚持更新文章和开源项目,慢慢地被越来越多的人所熟悉。2018年6月7日,电子工业出版社的陈林编辑通过邮件联系笔者并邀请笔者出书。从此,笔者与电子工业出版社结缘。2018年笔者也被不同的平台邀请制作付费专栏课程。自2018年9月起,笔者陆陆续续在CSDN图文课、实验楼、蓝桥云课、掘金小册、极客时间等平台上线了多个付费专栏和课程。2020年,笔者与电子工业出版社的陈林编辑联系并沟通了写作事宜,之后签订了约稿合同,第一本书在2021年正式出版。
笔者写作的初衷是希望把自己对技术的理解及实战项目开发的经验分享给读者。过去几年的经历可以整理成一张图(如图1所示),免费文章→付费专栏→付费视频→实体图书,从0到1,从无到有,都是一步一步走过来的。这些也是笔者的写作背景。
同时,笔者也会将付费专栏和图书中用到的实战项目开源到GitHub和Gitee两个开源代码平台上,本书中基于Spring Cloud Alibaba的微服务实战项目newbee-mall-cloud是笔者开发的一个开源项目。
图1 笔者的写作经历
随着越来越完善的微服务技术栈的发布,以及越来越多的微服务项目实际的落地和上线,使用Java技术栈的企业应该都在尝试或已经让各自的微服务项目落地了。通过招聘网站的信息和每次面试的反馈,Java开发人员也能够清晰地认识到:微服务技术已经逐渐成为Java开发人员必须掌握的一个进阶知识点了。
作为技术人员,各位读者一定对微服务架构有所耳闻,也能够看出它会是未来的一种流行架构,进而也非常希望自己能够掌握微服务技术体系,甚至动手实践完成微服务项目的开发与维护,掌握微服务技术这项非常宝贵的技能。不过,在掌握这项技能时,可能会遇到如下几个问题:
- 微服务技术的体系复杂,从何学起?学习哪些知识点?有没有简洁而有效的学习路径?
- 微服务架构中的组件和中间件很多,如何选择一套合适且可落地的方案?
- 在进行微服务架构的项目搭建与开发时,会遇到哪些问题?这些问题又该如何解决?
- 想要自己动手开发一个大型微服务项目,有没有适合的源码?有没有可以借鉴的经验?
针对这些问题,笔者结合自己的开发经验和一个可操作的大型微服务实战项目,从复杂的微服务体系中梳理一条明确而有效的学习路径,让读者可以成体系地学习微服务架构,本书的知识点规划和学习路径如图2所示。
以上就是笔者为各位开发人员整理的微服务架构项目的学习路径和实战步骤:梳理微服务架构、拆解微服务架构搭建的步骤、搭建并整合各个微服务组件、开发一个大型的微服务项目。
图2 本书的知识点规划和学习路径
笔者首先对概念性的知识进行介绍,让读者了解微服务的“前世今生”。然后介绍微服务的技术选型,包括技术栈的介绍与对比,并确定实战项目所选择的微服务技术组件。接着对这些技术组件进行讲解,包括组件的作用、搭建和优化。书中对Nacos、Spring Cloud Gateway、Sentinel、Seata等组件进行搭建和实际的整合,完成微服务架构实战里中间件搭建和整合的工作。除基本的整合外,也对重点技术栈的源码进行了详细的剖析,让读者能够知其然也知其所以然。搭建并整合完各个中间件之后,就是各个服务的编码和功能实现,在本套书的下册中会对一个大型的商城项目进行拆解和微服务化,并从零到一落地一个功能完整、流程完善的微服务项目。本书内容由浅入深,帮助读者深入理解微服务技术,掌握微服务项目开发的核心知识点,并且能够应用到自己所开发的项目中。
你会学到什么
本书的代码基于Spring Boot 2.6.3版本和Spring Cloud Alibaba 2021.0.1.0版本。笔者通过14章的内容由浅入深,逐一击破微服务架构项目中的难点,让各位读者能够实际地体验微服务架构项目的搭建和开发。另外,本书从书稿整理完成至正式出版耗时近一年时间,在这段时间里,Spring Boot和Spring Cloud Alibaba及相关技术栈也有一些版本升级,如Spring Boot 3.x、Spring Cloud Alibaba 2022.x。对于这些情况,笔者会在本书实战项目的开源仓库中创建不同的代码分支,保持实战项目的源码更新,保证读者学习更新的知识。
读者学习本书的内容,会有以下收获。
- Spring Cloud Alibaba 微服务技术组件的整合与使用。
- 服务治理之服务注册与服务发现。
- 服务间的通信方式。
- 负载均衡器的原理与实践。
- 微服务网关搭建与使用。
- 分布式事务的处理。
- 服务容错之限流及熔断。
- 微服务间的链路追踪。
- ELK日志中心的搭建与使用。
- 针对各个知识点的实战源码和一套可执行的微服务项目源码
适宜人群
- 从事Java Web开发的技术人员。
- 希望进阶高级开发的后端开发人员。
- 对微服务架构感兴趣、想要了解Spring Cloud热门组件的开发人员。
- 希望将微服务架构及相关技术实际运用到项目中的开发人员。
- 想要独立完成一个微服务架构项目的开发人员。
源代码
本书每个实战章节都有对应的源码并提供下载,读者可以在本书封底扫码获取。
最终的实战项目是笔者的开源项目newbee-mall-cloud,源码在开源网站GitHub和Gitee上都能搜索并下载最新的源码。
- https://github.com/newbee-ltd/newbee-mall-cloud
- https://gitee.com/newbee-ltd/newbee-mall-cloud
致谢
感谢电子工业出版社的陈林老师、石悦老师、美术编辑李玲和其他老师,本书能够顺利出版离不开你们的奉献,感谢你们辛苦、严谨的工作。
感谢newbee-mall系列开源仓库的各位用户及笔者专栏文章的所有读者。他们提供了非常多的修改和优化意见,使这个微服务实战项目变得更加完善,也为笔者提供了持续写作的动力。
感谢掘金社区的运营负责人优弧和运营人员Captain。本书部分内容是基于掘金小册《Spring Cloud Alibaba大型微服务项目实战》中的章节来扩展的,本书能顺利出版也得到了掘金社区的大力支持。
特别感谢家人,没有他们的默默付出和大力的支持,笔者不可能有如此多的时间和精力专注于本书的写作。
感谢每一位没有提及名字,但是曾经帮助过笔者的贵人。
评论
还没有评论。