注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络软件与程序设计Spring Cloud Alibaba与Kubernetes微服务容器化实践

Spring Cloud Alibaba与Kubernetes微服务容器化实践

Spring Cloud Alibaba与Kubernetes微服务容器化实践

定 价:¥89.00

作 者: 曹宇、王宇翔、胡书敏
出版社: 清华大学出版社
丛编项:
标 签: 暂缺

购买这本书可以去


ISBN: 9787302619499 出版时间: 2022-12-01 包装: 平装-胶订
开本: 16开 页数: 字数:  

内容简介

  本书围绕分布式微服务的项目需求,全面讲述了Spring Cloud Alibaba组件实现服务治理、负载均衡、安全管理、分布式事务、消息发送和服务监控的技术要点,以及基于Docker与Kubernetes容器化项目管理的相关技术。主要内容包括:Spring Cloud Alibaba体系架构概述,用Nacos和Nacos集群搭建基于服务治理架构的实践要点,用Ribbon实现负载均衡的做法,基于Sentinel组件实现熔断和限流等安全需求的实践要点,用Gateway组件搭建网关的实践要点,用OpenFeign和Dubbo搭建远程调用体系的实践要点,基于Spring Cloud Stream搭建消息通信体系的实践要点,用JPA与Redis与MyCat搭建微服务数据服务层的实践要点,用Seata组件构建分布式事务架构的实践要点和用Skywaiking组件搭建微服务监控体系的实践要点,基于Docker与Kubernetes容器组件搭建微服务体系,用Jenkins组件实践集成化项目部署流程的相关技术等内容。本书技术先进,注重实践,适合有一定Java基础的开发人员和学生阅读,也可以供培训机构和大专院校作为教学用书。

作者简介

  曹 宇,副教授,从事高校教育工作17年,主要研究领域为计算机应用技术,主讲Java编程课程多年,主导开发了EPC企业专利信息协同平台、大宗商品信息管理系统等多个项目,公开发表论文数十篇。王宇翔,副教授,从事高校教育工作20年,主要研究领域为计算机应用技术,主讲Java、微服务等课程,主持上海市 “电子商务技术双证融通改革项目” 等项目校内的实施管理,有多年Java教学经验。胡书敏,硕士,有15年Java开发经验,资深Java架构师,有平安、花旗和IBM等大厂的工作经验,同时还有近8年Java技术面试官的经验。

图书目录


第1章  Spring Cloud Alibaba与微服务架构 1
1.1  微服务架构与Alibaba解决方案 1
1.1.1  单体架构与微服务架构 1
1.1.2  微服务架构的优势与挑战 2
1.1.3  Spring Cloud Alibaba微服务解决方案 3
1.1.4  Spring Boot和Spring Cloud Alibaba的关系 3
1.2  搭建开发环境 4
1.2.1  安装JDK 4
1.2.2  安装IntelliJ IDEA 4
1.2.3  安装Docker环境 5
1.3  搭建Spring Boot单体服务 5
1.3.1  在IDEA中创建Spring Boot项目 5
1.3.2  编写pom.xml 7
1.3.3  编写启动类 8
1.3.4  编写控制器类 8
1.3.5  编写配置文件 9
1.3.6  启动Spring Boot,观察运行效果 9
1.4  动手练习 9
第2章  Spring Boot整合Nacos 11
2.1  认识和安装Nacos 11
2.1.1  Nacos与注册中心 11
2.1.2  Nacos与配置中心 12
2.1.3  搭建Nacos环境,启动Nacos组件 12
2.1.4  观察可视化管理界面 12
2.2  Spring Boot整合Nacos注册中心 13
2.2.1  引入注册中心后的框架图 13
2.2.2  创建服务提供者项目 13
2.2.3  创建服务消费者项目 15
2.2.4  启动Spring Boot类,观察注册中心的效果 17
2.3  用Nacos配置中心管理配置参数 18
2.3.1  在配置中心设置参数 18
2.3.2  在项目中使用参数 19
2.4  搭建高可用的Nacos集群 21
2.4.1  配置Nacos的持久化效果 21
2.4.2  搭建集群 22
2.4.3  观察集群效果 23
2.4.4  以集群的方式管理配置 24
2.4.5  以集群的方式管理服务 24
2.5  动手练习 25
第3章  负载均衡组件Ribbon 27
3.1  负载均衡与Ribbon组件 27
3.1.1  微服务架构中的负载均衡需求 27
3.1.2  Ribbon组件介绍 28
3.1.3  Ribbon和Nacos的整合方式 28
3.2  Ribbon实现负载均衡的范例 28
3.2.1  项目框架图 29
3.2.2  编写服务提供者项目 29
3.2.3  在服务调用者项目里引入Ribbon 31
3.2.4  观察负载均衡效果 33
3.3  Ribbon实战要点分析 34
3.3.1  设置不同的负载均衡策略 34
3.3.2  配置全局性的Ribbon参数 34
3.3.3  实现Ribbon饥饿加载模式 35
3.3.4  Ribbon常用参数分析 35
3.4  Ribbon整合Nacos注册中心集群 36
3.4.1  整合后的系统架构 36
3.4.2  Ribbon整合Nacos集群的实现步骤 36
3.5  动手练习 37
第4章  限流与防护组件Sentinel 38
4.1  微服务体系中的限流和防护需求 38
4.1.1  限流 38
4.1.2  熔断 38
4.1.3  服务降级 39
4.2  Sentinel组件介绍 39
4.2.1  搭建Sentinel环境 39
4.2.2  启动Sentinel控制台 40
4.3  通过Sentinel实现限流 40
4.3.1  创建项目,引入依赖包 40
4.3.2  编写启动类和配置文件 41
4.3.3  编写控制器类 42
4.3.4  在控制台里设置限流参数 42
4.3.5  观察限流效果 44
4.4  实现热点限流效果 45
4.4.1  定义热点限流方法 45
4.4.2  设置热点限流参数 45
4.4.3  观察热点限流效果 46
4.4.4  配置参数例外项 47
4.5  实现熔断效果 48
4.5.1  定义含熔断效果的方法 48
4.5.2  设置慢调用比例熔断参数 48
4.5.3  观察熔断效果 50
4.5.4  设置异常熔断参数 51
4.6  实现服务降级效果 52
4.6.1  实现因限流而导致的服务降级 52
4.6.2  通过fallback参数实现服务降级 53
4.6.3  服务降级的实践做法 53
4.7  动手练习 54
第5章  网关组件Gateway 55
5.1  Gateway网关组件概述 55
5.2  在微服务体系中引入Gateway组件 56
5.2.1  编写业务方法 56
5.2.2  创建网关项目 56
5.2.3  实现简单转发功能 57
5.2.4  网关的过滤器 58
5.2.5  网关的全局过滤器 59
5.2.6  网关的断言 60
5.3  Gateway整合Nacos,实现负载均衡 61
5.3.1  Gateway整合Nacos的架构图 61
5.3.2  基于Nacos的业务集群 62
5.3.3  以负载均衡的方式转发请求 62
5.4  Gateway整合Sentinel和Nacos 64
5.4.1  整合后的架构图 64
5.4.2  搭建网关层项目 65
5.4.3  启动项目和组件 66
5.4.4  根据路由规则限流 67
5.4.5  根据API分组限流 68
5.4.6  配置服务熔断效果 69
5.5  通过Gateway实现灰度发布 69
5.5.1  灰度发布的做法 69
5.5.2  准备灰度发布的环境 70
5.5.3  用Gateway实现灰度发布 70
5.5.4  观察灰度发布的效果 71
5.6  动手练习 72
第6章  声明式服务调用框架OpenFeign 73
6.1  OpenFeign框架概述 73
6.2  使用OpenFeign框架调用服务 73
6.2.1  基于Nacos的服务提供者 74
6.2.2  OpenFeign调用服务实现代码 74
6.2.3  观察OpenFeign的效果 76
6.2.4  设置超时时间 76
6.2.5  设置OpenFeign的日志级别 77
6.2.6  压缩请求和返回 78
6.3  实现负载均衡和服务降级 78
6.3.1  搭建业务集群 78
6.3.2  以负载均衡方式调用服务 79
6.3.3  观察负载均衡效果 80
6.3.4  引入服务降级效果 81
6.4  动手练习 82
第7章  远端调用组件Dubbo 83
7.1  Dubbo组件概述 83
7.1.1  远端方法调用流程和Dubbo组件 83
7.1.2  使用Nacos作为注册中心 84
7.1.3  Dubbo和HTTP调用方式的差别 84
7.2  Dubbo远端调用范例 85
7.2.1  编写服务提供者 85
7.2.2  编写服务调用者 87
7.2.3  定义超时时间和重试次数 88
7.2.4  观察远端调用的效果 89
7.3  注册中心集群和负载均衡 89
7.3.1  系统架构和项目说明 90
7.3.2  实现要点分析 90
7.3.3  观察负载均衡和高可用效果 92
7.3.4  设置Dubbo负载均衡方式 92
7.4  整合Sentinel引入安全防护 93
7.4.1  服务提供端的限流和熔断 93
7.4.2  服务提供端的服务降级 96
7.4.3  服务调用端的服务降级 96
7.4.4  Dubbo的安全措施分析 98
7.5  动手练习 98
第8章  Spring Cloud Steam整合消息中间件 100
8.1  消息中间件与Spring Cloud Stream框架 100
8.1.1  RocketMQ消息中间件 100
8.1.2  RabbitMQ消息中间件 101
8.1.3  Spring Cloud Steam封装消息中间件 102
8.2  Spring Cloud Stream整合RocketMQ 102
8.2.1  搭建RocketMQ环境 102
8.2.2  整合后的消息框架图 103
8.2.3  编写消息发送者项目 104
8.2.4  编写消息接收者项目 106
8.2.5  观察消息通信效果 108
8.3  Spring Cloud Stream整合RabbitMQ 108
8.3.1  搭建RabbitMQ环境 108
8.3.2  整合后的消息框架图 109
8.3.3  编写消息发送者项目 109
8.3.4  编写消息接收者项目 110
8.3.5  观察消息通信效果 111
8.4  动手练习 111
第9章  JPA Redis MyCat搭建微服务数据库服务层 113
9.1  用JPA组件操作数据库 113
9.1.1  JPA访问数据库的接口 113
9.1.2  创建MySQL数据库和数据表 114
9.1.3  通过JPA实现增删改查功能 114
9.1.4  观察JPA操作数据库的效果 118
9.2  微服务整合Redis缓存 119
9.2.1  Redis概述 119
9.2.2  搭建Redis运行环境 120
9.2.3  微服务整合Redis缓存 121
9.2.4  微服务整合MySQL与Redis 124
9.3  微服务整合MyCat分库组件 129
9.3.1  MyCat分库组件概述 129
9.3.2  搭建MyCat环境实现分库效果 130
9.3.3  微服务整合MyCat实现分库效果 132
9.3.4  微服务整合MyCat和Redis 134
9.4  动手练习 135
第10章  Spring Cloud Alibaba Seata实现分布式事务 137
10.1  分布式事务与Seata组件 137
10.1.1  分布式业务和分布式事务 137
10.1.2  Seata组件概述 138
10.1.3  搭建Seata服务端开发环境 139
10.2  用Seata实现分布式事务的范例 141
10.2.1  数据库和分布式事务描述 141
10.2.2  开发库存微服务项目 142
10.2.3  在订单项目里实现分布式事务 147
10.2.4  观察分布式事务效果 151
10.3  搭建高可用的Seata集群 152
10.3.1  Spring Cloud整合Seata集群的架构图 152
10.3.2  搭建Seata集群 153
10.3.3  微服务项目整合Seata集群 156
10.4  动手练习 157
第11章  微服务监控组件Skywalking 158
11.1  服务监控与Skywalking组件 158
11.1.1  微服务监控方面的需求 158
11.1.2  Skywalking组件介绍 159
11.1.3  搭建Skywalking组件运行环境 159
11.2  微服务项目整合Skywalking组件 161
11.2.1  介绍待监控的项目 161
11.2.2  下载并配置agent 161
11.2.3  监控项目运行情况 162
11.3  整合logback监控整条链路 164
11.3.1  服务链路框架 164
11.3.2  整合logback,定义监控日志格式 165
11.3.3  观察链路调用的日志,观察TID 167
11.4  观察Skywalking告警效果 168
11.4.1  配置Skywalking告警规则 169
11.4.2  观察告警效果 170
11.4.3  通过webhooks传递告警信息 171
11.5  动手练习 172
第12章  Docker部署Spring Boot项目和微服务组件 174
12.1  Docker与Spring Cloud微服务 174
12.1.1  Docker镜像、容器和虚拟化管理引擎 174
12.1.2  搭建Docker环境 175
12.1.3  用Docker管理微服务的方式 175
12.2  容器化管理Spring Boot项目 176
12.2.1  准备Spring Boot项目 176
12.2.2  打成jar包 178
12.2.3  用jar包制作镜像 179
12.2.4  以容器化的方式运行Spring Boot 179
12.3  容器化管理组件 180
12.3.1  容器化管理Nacos组件 180
12.3.2  容器化管理Sentinel 181
12.3.3  通过Docker容器部署MySQL 182
12.3.4  通过Docker容器部署Redis 183
12.4  动手练习 184
第13章  Docker部署Spring Cloud Alibaba微服务项目 185
13.1  员工管理微服务系统架构分析 185
13.1.1  微服务项目的表现形式与优势 185
13.1.2  基于Docker容器的微服务架构 186
13.1.3  业务功能点与数据表结构 186
13.2  开发员工管理微服务项目 187
13.2.1  开发员工管理模块 187
13.2.2  开发网关模块 192
13.3  容器化部署员工管理微服务 194
13.3.1  打包员工管理和网关模块 194
13.3.2  容器化部署并运行MySQL和Redis 194
13.3.3  容器化部署并运行Nacos和Sentinel 195
13.3.4  容器化部署员工管理模块 195
13.3.5  容器化部署网关模块 196
13.3.6  观察微服务容器化效果 197
13.3.7  引入限流和熔断措施 198
13.4  扩容与灰度发布 199
13.4.1  演示扩容效果 199
13.4.2  演示灰度发布流程 202
13.5  动手练习 203
第14章  Kubernetes整合Spring Boot 205
14.1  Kubernetes概述 205
14.1.1  Kubernetes的作用 205
14.1.2  准备Kubernetes环境 206
14.1.3  Kubernetes与Docker容器的关系 206
14.1.4  Kubernetes的Service 207
14.1.5  Kubernetes的Labels 207
14.1.6  Deployment的概念 207
14.2  用Kubernetes编排Spring Boot容器 208
14.2.1  基于Spring Boot的Docker容器 208
14.2.2  编写Service和Deployment配置文件 208
14.2.3  通过命令编排Spring Boot容器 209
14.2.4  观察Pod、Service和Deployment 210
14.2.5  查看Pod运行日志 211
14.3  Kubernetes常用实战技巧 211
14.3.1  删除Pod、Service和Deployment 211
14.3.2  伸缩节点 212
14.3.3  自动伸缩节点 212
14.3.4  创建Deployment并开放端口 213
14.3.5  进入Pod,执行命令 214
14.4  用Ingress暴露服务 214
14.4.1  Ingress简介 215
14.4.2  Ingress整合Service的做法 215
14.5  动手练习 216
第15章  用Kubernetes编排Spring Cloud Alibaba微服务 217
15.1  用Kubernetes编排组件 217
15.1.1  编排MySQL 217
15.1.2  编排Redis 220
15.1.3  StatefulSet和Deployment的差别 221
15.1.4  用StatefulSet编排Nacos 222
15.1.5  用StatefulSet编排Sentinel 223
15.2  用Kubernetes编排员工管理模块 225
15.2.1  微服务框架说明 225
15.2.2  员工管理项目的实现要点 226
15.2.3  编排员工管理微服务模块 228
15.2.4  观察Kubernetes编排微服务项目的效果 229
15.2.5  引入限流和熔断等效果 230
15.2.6  编排微服务项目的实践要点 231
15.3  动手练习 232
第16章  基于Jenkins的微服务CI/CD实战 233
16.1  Git工具与持续集成概述 233
16.1.1  持续集成概述 233
16.1.2  搭建Git代码仓库 234
16.1.3  安装Git组件 234
16.1.4  在IDEA里整合Git 235
16.2  用Git实践持续集成 236
16.2.1  待管理的项目代码综述 236
16.2.2  在Git仓库中初始化项目 236
16.2.3  在本地获取远端项目代码 238
16.2.4  创建开发分支 239
16.2.5  提交和推送代码 240
16.2.6  把开发代码合并到主分支 241
16.3  通过Jenkins实践持续交付 242
16.3.1  持续交付概述 242
16.3.2  持续交付需求概述 243
16.3.3  在本地搭建Jenkins环境 243
16.3.4  创建Jenkins任务 244
16.3.5  观察持续交付的实施结果 246
16.4  动手练习 247

本目录推荐