Spring Cloud微服务架构实战
  • 推荐0
  • 收藏0
  • 浏览312

Spring Cloud微服务架构实战

陈韶健 (作者)  安娜 (责任编辑)

  • 书  号: ISBN 978-7-121-38286-4
  • 出版日期:2020-03-01
  • 页  数:
  • 开  本:
  • 出版状态:上市销售
  • 维护人:安娜
本书以Spring Cloud为主导,以电商平台为实例,从服务架构设计的角度,对架构设计、程序开发、运维部署三个层面进行了详细的阐述。本书不仅详细介绍了如何使用Spring Cloud工具套件进行微服务应用的开发,还介绍了如何结合Consul、Docker、Kubernets和Jenkins等的使用方法,将开发的微服务应用以一种可扩展的方式在云端发布。通过对本书的系统学习,读者可快速将所掌握的知识应用于实际工作中,提高自身的职业竞争力。
本书的读者对象为广大的Java开发者、系统架构师和系统运维人员。本书特别适合使用过Spring开源框架或具有一定Spring框架基础知识的读者阅读。
本书按架构设计、程序开发、运维部署层层递进讲解。
代码全部赠送,作者定期维护。
内容包括Spring Cloud、MyBatis、MongoDB、Docker Swarm、Kubernetes等。
陈韶健,一个资深的IT从业人员,多年并且至今从事于程序开发、架构设计和运维管理等工作,热衷于开源技术的探讨和研究。近几年来,根据自己的工作经验和实践写了几本技术书:《深入实践Spring Boot》《Neo4j全栈开发》《Spring Cloud与Docker高并发微服务架构设计实施》等,这些书均可作为一种实际工作的参考工具使用。




前 言

越来越多的企业使用Spring Cloud实现微服务架构设计。我们可以看到这样一种现象:不管是全新开发,还是系统重构,大家似乎都在争先恐后地使用微服务。对于一个Java开发人员来说,学习微服务相关知识大有裨益。
两年前,我写了《Spring Cloud与Docker高并发微服务架构设计实施》一书,于2018年6月出版,得到了许多读者的认可。随着Spring Cloud的版本更新和技术升级,我对原书的内容进行了更新和升级。因为原书名太长,所以本次改版将以一个全新的书名面世,于是就诞生了这本新书《Spring Cloud微服务架构实战》,读者不妨把本书当作对原书的一次改版。
本书的内容和结构将在保持原书风格的基础上,进行全面的更新和升级,主要体现在以下三个方面。
? 本书仍以电商平台作为案例,但使用的代码,已经根据官方版本进行全面升级,并且对项目结构进行了全面的精简化处理,使其更适合实际的开发习惯。
? 在数据库使用方面,从原来单一化使用JPA和MySQL,转变为多样化的设计,以适应不同业务场景的需求。同时,增加了MyBatis开发框架的使用和MongoDB的开发案例等章节。
? 在运维部分中,不仅增加了使用公有云的设计,而且对于部署工具,在使用Docker容器引擎的基础上,介绍了一些高级工具,如Docker Swarm部署工具、Kubernetes工具的使用案例。
期望通过本书,我能与读者一起,共同经历一次愉悦的微服务构建之旅。
本书的读者对象
本书的读者对象为广大的Java开发者、系统架构师和系统运维人员。本书特别适合使用过Spring开源框架或具有一定Spring框架基础知识的读者阅读。
本书结构
本书由三部分组成,结构如下所示:
第一部分 架构设计
第1章 微服务架构与Spring Cloud
第2章 高并发微服务架构设计
第3章 大型电商平台设计实例
第二部分 程序开发
第4章 开发环境准备
第5章 微服务治理
第6章 类目管理微服务开发
第7章 库存管理与分布式文件系统
第8章 海量订单系统微服务开发
第9章 移动商城的设计和开发
第10章 商家管理后台与SSO设计
第11章 平台管理后台与商家菜单资源管理
第三部分 运维部署
第12章 云服务环境与Docker部署工具
第13章 可扩展分布式数据库集群的搭建
第14章 高可用分布式文件系统的组建
第15章 使用Jenkins实现自动化构建
实例代码
本书的实例代码存放在开源中国的码云代码仓库中,读者可以通过下列链接打开各个项目工程进行下载或使用Git检出:
https://gitee.com/chenshaojian/projects
检出项目后,请获取本书实例的分支V2.1。以后如有代码更新,将会使用新的分支发布,请读者留意。
勘误与反馈
在阅读本书过程中,遇到任何问题都可以通过如下链接发起话题与笔者交流。在本书出版后,如有勘误,也会在这里发布:
https://gitee.com/chenshaojian/SpringCloud/issues
致谢
感谢一直以来给予我无限支持的朋友们,包括出版社的编辑及其相关工作人员、广大的读者,以及我所有的同事和家人。你们的支持和鼓励,让我感到无比幸福,同时充满奋斗的激情。感谢曾经与我一起进行过微服务设计和开发的伙伴,正是我们共同成长的经历,才让先进的技术在实践中得以呈现。
如果书中有任何不对的地方或者纰漏,敬请读者不吝赐教,我将感激不尽。

目录

第一部分 架构
第1章 微服务架构与Spring Cloud 2
1.1 微服务架构的特点 2
1.2 微服务架构与整体式架构的区别 4
1.3 微服务架构与SOA的比较 7
1.4 微服务架构的优势 8
1.5 为实施微服务架构做好准备 9
1.5.1 思想观念 9
1.5.2 团队管理 10
1.5.3 自动化基础设施 10
1.6 Spring Cloud的优势 11
1.7 Spring Cloud工具套件介绍 12
1.8 Spring Cloud的版本说明 15
1.9 小结 15
第2章 高并发微服务架构设计 16
2.1 微服务总体架构设计 16
2.2 自然的压力分解 18
2.3 可弹性伸缩的集群环境 18
2.4 高度的独立性设计 19
2.5 API的分层调用关系 19
2.6 高可用的基础资源支持 20
2.7 快速响应的自动化基础设施 21
2.8 完善的监控体系 21
2.9 微服务的安全保障 21
2.10 小结 22
第3章 大型电商平台设计实例 23
3.1 电商平台总体设计 23
3.1.1 总体业务流程设计 23
3.1.2 总体业务功能设计 25
3.2 电商平台业务模型设计 25
3.2.1 移动商城业务模型 26
3.2.2 商家管理后台业务模型 26
3.2.3 平台管理后台业务模型 27
3.3 合理划分微服务 28
3.4 创建REST API微服务 29
3.5 创建Web UI微服务 30
3.5.1 移动商城Web UI微服务 30
3.5.2 商家管理后台的Web UI微服务 31
3.5.3 平台管理后台Web UI微服务 31
3.6 电商平台微服务体系架构 32
3.7 电商平台微服务项目工程 33
3.8 微服务项目数据库选型 33
3.9 电商平台微服务项目代码库 34
3.10 小结 34
第二部分 开发
第4章 开发环境准备 36
4.1 选择Java SDK的版本 36
4.2 下载InterlliJ IDEA 37
4.3 下载及配置Git客户端 37
4.4 创建Spring Cloud项目 38
4.5 小结 39
第5章 微服务治理 40
5.1 使用Consul创建注册中心 41
5.1.1 服务注册与发现 42
5.1.2 统一配置管理 44
5.2 合理发挥断路器的作用 46
5.3 如何实现有效的监控 47
5.3.1 服务健康状态监控 47
5.3.2 重大故障告警 49
5.3.3 断路器仪表盘 49
5.4 Zipkin链路跟踪 52
5.5 ELK日志分析平台 55
5.5.1 创建日志分析平台 55
5.5.2 使用日志分析平台 56
5.6 小结 57
第6章 类目管理微服务开发 58
6.1 了解领域驱动设计 58
6.1.1 DDD的分层结构 59
6.1.2 DDD的基本元素 59
6.2 Spring Data JPA 59
6.2.1 Druid数据源配置 60
6.2.2 JPA初始化和基本配置 62
6.3 实体建模 63
6.4 查询对象设计 65
6.5 数据持久化设计 66
6.6 数据管理服务设计 68
6.7 单元测试 70
6.8 类目接口微服务开发 71
6.8.1 RESTful接口开发 71
6.8.2 微服务接口调试 73
6.9 基于RESTful的微服务接口调用 74
6.9.1 声明式FeignClient设计 74
6.9.2 断路器的使用 76
6.10 类目管理Web应用微服务开发 76
6.10.1 接口调用引用相关配置 77
6.10.2 Spring MVC控制器设计 77
6.11 使用Thymeleaf模板 78
6.11.1 HTML页面设计 79
6.11.2 统一风格模板设计 80
6.12 总体测试 82
6.13 有关项目打包与部署 83
6.14 小结 84
第7章 库存管理与分布式文件系统 85
7.1 基于MyBatis的数据库开发 85
7.1.1 使用经过组装的MyBatis组件 85
7.1.2 数据对象及其表结构定义 86
7.1.3 Mapper与SQL定制 88
7.2 数据库服务组装 89
7.3 单元测试 91
7.4 库存微服务接口开发 92
7.4.1 在主程序中支持MyBatis 92
7.4.2 基于REST协议的控制器设计 93
7.5 库存管理的Web应用开发 94
7.5.1 公共对象的依赖引用 95
7.5.2 商品分页数据调用设计 95
7.6 Web应用项目热部署设置 97
7.7 使用分布式文件系统DFS 99
7.7.1 分布式文件系统客户端开发 99
7.7.2 商品图片上传设计 102
7.7.3 富文本编辑器上传图片设计 106
7.7.4 建立本地文件信息库 108
7.8 总体测试 112
7.9 小结 114
第8章 海量订单系统微服务开发 115
8.1 使用MongoDB支持海量数据 115
8.1.1 使用Mongo插件 115
8.1.2 MongoDB数据源相关配置 116
8.2 订单文档建模 117
8.2.1 订单及其明细数据 117
8.2.2 订单状态枚举 119
8.3 反应式MongoDB编程设计 121
8.3.1 基于Spring Data的存储库接口设计 121
8.3.2 动态分页查询设计 121
8.4 Mongo单元测试 123
8.5 订单接口微服务开发 125
8.6 订单的分布式事务管理 127
8.6.1 订单取消的消息生成 127
8.6.2 订单取消的库存变化处理 129
8.7 订单管理后台微服务开发 131
8.7.1 订单查询主页设计 131
8.7.2 订单状态修改设计 133
8.8 集成测试 135
8.9 小结 137
第9章 移动商城的设计和开发 138
9.1 移动商城首页设计 139
9.2 商城的分类查询设计 143
9.3 商品详情页设计 145
9.4 用户下单功能实现 147
9.5 商城的用户登录与账户切换设计 152
9.5.1 用户登录设计 152
9.5.2 切换账号设计 155
9.6 订单查询设计 156
9.7 集成测试 160
9.8 小结 162
第10章 商家管理后台与SSO设计 163
10.1 商家权限体系的设计及开发 164
10.1.1 权限管理模型设计 165
10.1.2 权限管理模型的持久化设计 170
10.1.3 权限管理模型的服务封装 171
10.2 商家管理微服务设计 175
10.2.1 商家管理服务层单元测试 175
10.2.2 商家服务的接口开发 178
10.3 SSO设计 183
10.3.1 SSO的基本配置 183
10.3.2 SSO第三方应用授权设计 184
10.3.3 SSO登录认证设计 186
10.3.4 有关验证码的说明 191
10.3.5 SSO的主页设计 193
10.4 SSO客户端设计 196
10.4.1 安全认证的项目管理配置 196
10.4.2 安全认证项目的配置类 196
10.4.3 权限管理验证设计 198
10.4.4 客户端应用接入SSO 201
10.4.5 有关跨站请求的相关设置 203
10.4.6 根据用户权限自动分配菜单 203
10.5 小结 206
第11章 平台管理后台与商家菜单资源管理 207
11.1 平台管理后台访问控制设计 207
11.1.1 实体建模 207
11.1.2 为实体赋予行为 210
11.1.3 数据访问服务设计 210
11.1.4 单元测试 213
11.2 平台管理后台的访问控制设计 214
11.2.1 在访问控制中使用操作员 215
11.2.2 平台管理后台的权限管理设计 215
11.3 商家的注册管理设计 219
11.4 商家权限及其菜单资源管理设计 222
11.4.1 分类菜单管理设计 222
11.4.2 模块菜单管理设计 224
11.4.3 资源菜单管理设计 228
11.5 商家角色管理设计 232
11.6 小结 236
第三部分 运维
第12章 云服务环境与Docker部署工具 238
12.1 虚拟机与基于Docker创建的容器 238
12.2 安全可靠的云服务环境 239
12.3 Docker和docker-compose的下载与配置 240
12.3.1 Docker引擎的安装及使用 240
12.3.2 docker-compose的下载及配置 241
12.4 使用Docker方式发布微服务 242
12.4.1 镜像创建及其生成脚本 242
12.4.2 服务发布与更新 243
12.5 使用Docker部署日志分析平台 243
12.6 基于Docker的高级部署工具 246
12.6.1 私域镜像仓库 246
12.6.2 Docker Swarm 247
12.6.3 Kubernetes 249
12.7 小结 253
第13章 可扩展分布式数据库集群的搭建 254
13.1 MySQL集群主机分配 255
13.2 主从同步设置 256
13.3 主主同步设置 259
13.4 数据库代理中间件选择 261
13.5 使用OneProxy实现读写分离设计 261
13.5.1 安装OneProxy 262
13.5.2 高可用读写分离配置 263
13.6 OneProxy分库分区设计 267
13.6.1 按范围分库分表 268
13.6.2 按值列表分库分表 268
13.6.3 按散列算法分库分表 269
13.7 双机热备设计 271
13.7.1 Real Server配置 272
13.7.2 LVS主机配置 273
13.7.3 LVS备用机配置 275
13.8 小结 277
第14章 高可用分布式文件系统的组建 278
14.1 FastDFS架构 278
14.2 FastDFS的安装 279
14.3 跟踪服务器配置 280
14.4 存储节点配置 281
14.5 上传文件测试 282
14.6 Nginx的安装及负载均衡配置 283
14.6.1 在跟踪器上安装Nginx 283
14.6.2 在存储节点上安装Nginx 285
14.7 开机启动 287
14.7.1 开机启动Tracker 287
14.7.2 开机启动Storage 289
14.7.3 开机启动Nginx 291
14.8 小结 293
第15章 使用Jenkins实现自动化构建 294
15.1 持续交付工作流程 295
15.2 Jenkins的安装 296
15.3 Jenkins的基本配置 298
15.4 Jenkins的自动部署实例 300
15.4.1 创建任务 300
15.4.2 任务配置 301
15.4.3 执行任务 305
15.5 小结 309
后记 310
参考文献 311

读者评论

相关图书

看漫画学Python:有趣、有料、好玩、好用(全彩版)

关东升、赵大羽 (作者)

Python是一门既简单又强大的编程语言,被广泛应用于数据分析、大数据、网络爬虫、自动化运维、科学计算和人工智能等领域。Python也越来越重要,成为国家计算机...

 

游戏设计师的Playlist:激发创造力的必玩游戏

Zack Hiwiller (作者) 李天颀 (译者)

在本书中,作者基于多年的游戏设计及教授经验,用诙谐幽默的语言向读者传授了一个又一个重要的游戏设计理念。书中的每一章均有一个明确的主题,涉及随机性、叙事、挑战、机...

¥99.00

Julia高性能科学计算 : 第2版

Changhyun Kwon ( 权昌贤) (作者) 徐国栋 李琦 (译者)

Julia 像C一样快,像MATLAB 一样方便,并且像Python 一样通用。在Julia 开发者,特别是JuMP 包开发者的大力支持下,Julia 为运筹学...

 

Boost程序库完全开发指南――深入C++”准”标准库(第5版)

罗剑锋 (作者)

Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉。<br>Boost由C++标准委员会的部分成员所设...

¥118.00

程序员修炼之道:通向务实的最高境界(第2版)

THOMAS, DAVID; HUNT, ANDREW (作者)

《程序员修炼之道》之所以在全球范围内广泛传播,被一代代开发者奉为圭臬,盖因它可以创造出真正的价值:或编写出更好的软件,或探究出编程的本质,而所有收获均不依赖于特...

¥89.00

ASP.NET Core 3框架揭秘

蒋金楠 (作者)

本书主要阐述 ASP.NET Core 最核心的部分——请求处理管道。通过阅读本书,读者可以深刻系统地了解 ASP.NET Core 应用在启动过程中管道的构建...

¥199.00