新版本:针对Spring Cloud Hoxton Spring Boot 2.2.x版本 专注实践:实战项目贯穿全书,体验单体应用到微服务架构的升级过程 技术全面:Spring Boot、Spring Cloud Netflix/阿里巴巴、Docker、Kubernetes和Service Mesh核心技术全覆盖 低门槛:通过实战项目学练结合,初学者也能轻松上手 深剖析:通过实战案例展示业界主流的微服务架构实践
售 价:¥
纸质售价:¥117.60购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
内容简介
推荐序
专家力荐
前言
第1章 热身运动
1.1 准备工作
1.1.1 安装JDK
1.1.2 安装IDE
1.1.3 安装Maven
1.1.4 安装Postman
1.2 Java Web开发的进化史
1.2.1 应用服务器
1.2.1.1 什么是应用服务器
1.2.1.2 Apache Tomcat下载和安装
1.2.2 青铜Servlet
1.2.2.1 什么是Servlet
1.2.2.2 使用Servlet实现HelloWorld
1.2.3 铂金Spring MVC
1.2.3.1 什么是Spring MVC
1.2.3.2 使用Spring MVC实现HelloWorld
1.2.4 王者Spring Boot
1.2.4.1 什么是Spring Boot
1.2.4.2 使用Spring Boot实现HelloWorld
第2章 Spring Boot介绍
2.1 Spring Boot的前尘往事
2.1.1 Spring Framework
2.1.2 Spring Boot
2.2 Spring Boot的设计理念
2.3 Spring Boot的核心功能
2.3.1 易于使用的依赖管理Starter
2.3.2 约定大于配置的Auto Configuration
2.3.3 优雅灵活的配置管理Properties
2.3.4 简单明了的管理工具Actuator
2.3.5 方便快捷的内置容器Embedded Container
第3章 Spring Boot实战
3.1 创建Spring Boot项目
3.1.1 利用Spring Initializr创建项目
3.1.2 项目结构
3.1.3 在项目中添加Starter
3.1.4 偷懒神器lombok
3.2 项目运行打包
3.2.1 Spring Boot项目编译打包
3.2.2 运行Spring Boot项目
3.2.2.1 IDE运行
3.2.2.2 Maven运行
3.2.2.3 Java运行
3.3 Spring Boot管理日志
3.3.1 日志框架
3.3.2 Log4J2
3.3.3 Logback
3.3.4 Slf4j
3.4 数据访问
3.4.1 访问关系型数据库
3.4.1.1 MySQL简介
3.4.1.2 安装MySQL
3.4.1.3 ORM
3.4.1.4 事务管理
3.4.1.5 Spring Boot访问数据库
3.4.2 实现优惠券模板模块DAO层
3.4.3 实现用户领券模块DAO层
3.4.4 使用key-value store实现缓存
3.4.4.1 Redis简介
3.4.4.2 安装Redis
3.4.4.3 Redis实现缓存
3.5 消息系统
3.5.1 消息系统的作用
3.5.2 消息系统的两种模式
3.5.3 集成RabbitMQ
3.5.3.1 安装RabbitMQ
3.5.3.2 Spring Boot与MQ集成
3.5.4 集成Kafka
3.5.4.1 安装Kafka
3.5.4.2 Spring Boot与Kafka集成
3.6 应用安全管理
3.6.1 Authentication用户身份鉴定
3.6.2 Authorization用户鉴权
3.6.3 OAuth 2.0
3.6.4 Spring Security
3.6.4.1 Spring Security介绍
3.6.4.2 Spring Boot与Spring Security集成
3.7 定时任务
3.7.1 Quartz
3.7.1.1 Quartz Scheduler简介
3.7.1.2 Cron表达式
3.7.2 Spring Batch
3.7.2.1 Spring Batch简介
3.7.2.2 集成Quartz和Spring Batch
3.8 Spring Boot项目测试
第4章 微服务与Spring Cloud
4.1 什么是微服务架构
4.1.1 微服务架构的特点
4.1.2 一线大厂为什么采用微服务架构
4.1.3 微服务架构对系统运维的挑战
4.2 微服务的拆分规范
4.2.1 领域模型
4.2.2 计算密集型业务和I/O密集型业务
4.2.3 区分高频、低频业务场景和突发流量
4.2.4 规划业务主链路
4.3 大厂微服务架构的服务治理方案
4.3.1 业界主流服务治理框架一览
4.3.2 微服务框架的选型建议
4.4 了解Spring Cloud
4.4.1 Spring Cloud简介
4.4.2 Spring Cloud和Spring Boot的关系
4.5 了解Spring Cloud组件库
4.5.1 Spring Cloud的整体架构
4.5.2 Spring Cloud的子项目
4.5.3 Netflix组件库
4.5.4 Alibaba组件库
4.6 实战项目技术选型
4.6.1 技术架构选型
4.6.2 Spring Cloud组件选型与版本
第5章 使用Eureka实现服务治理
5.1 什么是服务治理
5.2 Spring Cloud中常用的注册中心
5.3 分布式系统理论
5.3.1 了解CAP定理
5.3.2 高并发应用在CAP中的偏向性
5.4 Eureka核心概念
5.4.1 服务注册
5.4.2 服务发现
5.4.3 服务续约和服务下线
5.4.4 服务剔除
5.4.5 服务自保
5.5 优惠券项目改造——高可用注册中心
5.5.1 创建项目结构
5.5.2 修改host文件
5.5.3 引入Maven依赖项
5.5.4 创建项目启动类
5.5.5 为注册中心添加配置
5.6 coupon-template-service微服务架构升级
5.6.1 添加依赖项
5.6.2 创建启动类
5.6.3 添加配置项
5.6.4 运行项目
5.7 改造coupon-calculator
5.8 改造coupon-user-service服务
5.8.1 添加依赖项和配置项
5.8.2 声明RestTemplate
5.8.3 改造findCoupon()方法——RestTemplate.exchange函数的用法
5.8.4 改造requestCoupon()方法——getForObject函数的用法
5.8.5 改造placeOrder()方法
5.8.6 启动项目并验证服务注册
5.9 Eureka中的其他配置参数
第6章 使用Nacos实现服务治理
6.1 什么是Nacos
6.2 Nacos的核心功能
6.2.1 服务注册、服务发现与健康检测
6.2.2 配置管理
6.3 Nacos下载与安装
6.4 Nacos实战
6.4.1 Nacos与Spring Cloud的集成
6.4.2 Nacos控制台
6.4.3 Nacos实现配置管理
6.4.4 Nacos实现服务注册与服务发现
第7章 使用Ribbon实现负载均衡
7.1 什么是负载均衡
7.2 了解Ribbon
7.3 了解Ribbon的负载均衡器
7.3.1 Ribbon内置的负载均衡策略
7.3.2 各个负载均衡器适用的业务场景
7.3.3 Ribbon的IRule扩展接口
7.4 IPing机制
7.4.1 了解IPing机制
7.4.2 Ribbon内置的IPing策略类
7.5 微服务项目架构升级
7.5.1 添加Ribbon依赖项
7.5.2 添加@LoadBalancer注解
7.5.3 修改getUrl()方法
7.5.4 配置Ribbon负载均衡策略
7.5.4.1 Ribbon的全局开关
7.5.4.2 指定负载均衡策略和IPing策略
7.5.4.3 如何进行负载均衡测试
第8章 使用OpenFeign实现服务间调用
8.1 Feign
8.1.1 什么是Feign
8.1.2 Feign的工作流程
8.1.3 Feign对请求和响应的压缩
8.2 微服务架构升级——使用Feign代理接口调用
8.2.1 添加依赖项
8.2.2 开启Feign注解支持
8.2.3 定义Feign接口
8.2.4 替换RestTemplate
8.2.5 Feign与Ribbon的超时与重试配置
8.2.6 Feign的日志配置
8.2.7 配置请求和响应的压缩参数
第9章 使用Hystrix实现服务间容错
9.1 Hystrix
9.1.1 什么是Hystrix
9.1.2 服务雪崩
9.1.3 服务雪崩的解决方案
9.2 Hystrix的核心概念
9.2.1 服务降级
9.2.2 服务熔断
9.2.3 Hystrix如何切换断路器的开关
9.3 微服务架构升级——配置熔断和降级
9.3.1 添加依赖项和配置项
9.3.2 在Feign接口上指定降级类
9.3.2.1 创建降级类
9.3.2.2 在FeignClient中指定降级类
9.3.3 为特定方法指定降级逻辑
9.3.4 设置全局熔断参数
9.3.5 为指定方法设置超时时间
9.3.6 隔离机制的配置项
9.3.7 使用@CacheResult缓存注解
9.3.8 开放Actuator端点
9.4 微服务架构升级——利用Turbine收集Hystrix信息
9.4.1 什么是Turbine
9.4.2 添加Turbine子项目
9.4.3 创建启动类
9.4.4 指定需要监控的服务名称
9.5 微服务架构升级——利用Hystrix Dashboard观察服务健康度
9.5.1 什么是Hystrix Dashboard
9.5.2 添加Hystrix Dashboard项目
9.5.3 创建配置项和启动类
9.6 启用Hystrix Dashboard观察服务状态
第10章 使用Sentinel实现限流控制
10.1 服务容错
10.2 Sentinel简介
10.2.1 什么是Sentinel
10.2.2 Sentinel的核心功能
10.3 Sentinel控制台
10.4 Sentinel与Spring Cloud的集成
10.5 使用Sentinel实现降级控制
10.6 使用Sentinel实现限流控制
10.7 Sentinel的日志
第11章 使用Spring Cloud Config和Bus搭建配置中心
11.1 配置中心在微服务中的应用
11.1.1 环境隔离
11.1.2 业务配置项动态推送
11.1.3 中心化的配置管理
11.2 了解Spring Cloud Config和Bus
11.2.1 Spring Cloud Config+Bus架构图
11.2.2 保存配置的几种方式
11.3 准备工作——创建GitHub文件
11.3.1 创建GitHub Repo
11.3.2 添加YML配置文件
11.4 微服务架构升级——搭建高可用的配置中心
11.4.1 创建高可用的config-server项目
11.4.2 添加依赖项和启动类
11.4.3 添加配置——设置GitHub地址,借助Eureka实现高可用
11.4.4 从多个GitHub Repo中读取配置
11.5 GitHub配置文件命名规则
11.5.1 Application、Profile和Label
11.5.2 路径匹配规则
11.6 对GitHub中的配置项进行加解密
11.6.1 更新JDK中的JCE组件
11.6.2 使用对称密钥对配置项加解密
11.6.3 使用非对称密钥对配置项加解密
11.7 微服务架构升级——从配置中心读取配置项
11.7.1 添加Spring Cloud Config和Bus的依赖项
11.7.2 为配置中心添加service-id
11.7.3 对数据库访问密码进行加密存储
11.7.4 配置@RefreshScope注解
11.7.5 从客户端触发配置刷新
11.7.6 使用Bus批量刷新配置项
第12章 使用Spring Cloud Gateway搭建服务网关
12.1 了解微服务网关
12.1.1 服务网关的用途
12.1.2 Spring Cloud中的网关组件
12.2 Spring Cloud Gateway的核心概念——路由、谓词和过滤器
12.3 路由功能
12.3.1 通过配置文件设置简单路由
12.3.2 通过Java代码配置路由
12.3.3 谓词工厂
12.3.4 Gateway常用谓词
12.3.5 过滤器
12.4 微服务架构改造——搭建网关模块
12.4.1 添加Gateway的依赖项和启动类
12.4.2 将Gateway连接到注册中心
12.4.3 在Java文件中设置路由规则
12.4.4 添加网关层跨域过滤器
12.5 微服务架构升级——使用Redis+Lua做流控
12.5.1 Redis和Lua的限流算法
12.5.2 设置限流规则
12.5.3 通过Actuator端点查看路由
第13章 使用Sleuth进行调用链路追踪
13.1 为什么微服务架构需要链路追踪
13.2 链路追踪技术介绍
13.2.1 Sleuth
13.2.2 Zipkin
13.2.3 ELK
13.3 Sleuth基本数据结构
13.4 微服务架构升级——集成Sleuth实现链路追踪
13.4.1 添加依赖项
13.4.2 配置Sleuth采样率
13.5 微服务架构升级——搭建Zipkin服务器
13.5.1 添加Zipkin依赖
13.5.2 创建Zipkin启动类
13.5.3 通过RabbitMQ接收日志文件
13.5.4 应用程序集成Zipkin
13.6 微服务架构升级——搭建ELK环境
13.6.1 下载ELK的Docker镜像
13.6.2 在镜像内配置ELK属性
13.6.3 将应用日志输送到Logstash
13.6.4 在Kibana中搜索日志
第14章 使用Stream集成消息队列
14.1 了解Stream
14.2 消息队列在微服务架构中的应用
14.3 消息队列的概念
14.3.1 发布订阅
14.3.2 消费组
14.3.3 消息分区
14.4 微服务架构升级——异步分发优惠券
14.4.1 添加Stream依赖项和消息信道
14.4.2 创建消息生产者
14.4.3 创建消息消费者并添加启动注解
14.4.4 添加Stream配置
14.5 微服务架构升级——Stream异常处理
14.5.1 本机重试
14.5.2 消息重新入队
14.5.3 自定义异常处理——添加降级逻辑
14.5.4 死信队列
14.6 Stream实现延迟消息
14.6.1 延迟消息的使用场景
14.6.2 安装延迟消息插件
14.6.3 实现延迟消息
第15章 使用Seata实现分布式事务
15.1 为什么需要分布式事务
15.2 分布式事务的替代方案
15.3 传统的XA分布式事务解决方案
15.4 Seata框架介绍
15.5 Seata的AT模式
15.5.1 AT模式原理
15.5.2 AT模式下的写隔离
15.5.3 AT模式下的读隔离
15.5.4 TCC模式
15.5.5 Saga模式
15.5.6 XA模式
15.6 微服务架构升级——搭建Seata服务器
15.6.1 下载Seata服务器
15.6.2 修改file.conf文件
15.6.3 修改registry.conf文件
15.6.4 添加服务器JDBC驱动
15.6.5 创建数据库表
15.7 微服务架构升级——应用改造
15.7.1 添加Seata依赖项和配置项
15.7.2 实现业务逻辑
15.7.3 添加数据源代理
第16章 走进容器化的世界
16.1 微服务落地的难点
16.1.1 微服务的兴起与容器的顺势而为
16.1.2 业务的高内聚和低耦合
16.1.3 摆脱软硬件异构的困境
16.1.4 遵循云原生12因素
16.1.5 满足康威定律
16.1.6 一线大厂为什么采用容器技术
16.2 容器技术的演进
16.2.1 容器技术的前世今生
16.2.2 主流容器技术介绍
16.2.3 容器技术生态圈对比
16.2.4 未来展望
16.3 容器编排技术先睹为快
16.3.1 资源统一管理和容器编排协作
16.3.2 Swarm
16.3.3 Mesos
16.3.4 Kubernetes
16.3.5 Rancher
16.3.6 各大容器编排框架对比
第17章 Docker容器技术
17.1 从HelloWorld起步
17.1.1 容器实战基本思路
17.1.2 5分钟Docker安装
17.1.3 1分钟HelloWorld
17.1.4 Docker感受分享
17.2 Docker架构
17.2.1 整体架构
17.2.2 客户端
17.2.3 Docker宿主机
17.2.4 仓库
17.2.5 镜像
17.2.6 容器
17.2.7 各个组件用途归纳
17.3 Docker镜像
17.3.1 镜像结构
17.3.2 镜像制作
17.3.3 Dockerfile常用指令
17.3.4 Dockerfile排疑解惑
17.3.5 镜像管理思路
17.4 Docker容器
17.4.1 容器的运行原理
17.4.2 隔离特性
17.4.3 限制特性
17.4.4 容器的起承转合
17.4.5 容器的管理思路
17.5 Docker存储
17.5.1 存储管理的目标
17.5.2 系统卷
17.5.3 数据卷
17.5.4 数据卷容器
17.5.5 存储模式总结
17.6 Docker网络
17.6.1 网络技术分类
17.6.2 none网络
17.6.3 host网络
17.6.4 bridge网络
17.6.5 自定义网络
17.6.6 第三方网络
17.6.7 网络技术选型
17.7 进一步感受Docker的魅力
17.7.1 Nginx反向代理部署
17.7.2 Redis缓存部署
17.7.3 MySQL数据库部署
17.7.4 MongoDB文档数据库部署
17.7.5 RabbitMQ消息队列部署
17.7.6 Kafka集群部署
17.7.7 ELK监控部署
17.7.8 Docker感受新体验
17.8 镜像仓库
17.8.1 搭建私有仓库
17.8.2 上传镜像
17.8.3 下载镜像
17.8.4 仓库的扩展
17.9 【优惠券项目落地】——Docker容器化
17.9.1 容器化总体思路
17.9.2 无状态应用模块容器化
17.9.3 无状态中间件容器化
17.9.4 有状态中间件容器化
17.9.5 容器间网络互通
17.9.6 后续改造规划
第18章 Kubernetes基础
18.1 了解容器编排
18.1.1 容器编排的意义和使命
18.1.2 容器编排的难点
18.2 了解Kubernetes
18.2.1 Kubernetes整体架构
18.2.2 Kubernetes Master节点
18.2.3 Kubernetes Node节点
18.3 Kubernetes基本概念
18.3.1 Pod概念
18.3.2 Controller概念
18.3.3 Label资源锁定
18.3.4 Namespace逻辑隔离
18.3.5 Kubernetes的功能理解导图
18.4 Kubernetes集群搭建
18.4.1 基础软件安装
18.4.2 在Master节点创建集群
18.4.3 网络选择和初始化
18.4.4 Node节点加入集群
18.5 Pod管理
18.5.1 Pod原理和实现
18.5.2 Pod生命周期管理
18.5.3 资源限制和调度选择
18.5.4 健康检查
18.6 Controller管理
18.6.1 Controller原理
18.6.2 Deployment
18.6.3 滚动升级
18.6.4 后台应用DaemonSet
18.6.5 任务Job
18.6.6 控制器选择思路
18.7 【优惠券项目落地】——Kubernetes容器化管理
18.7.1 应用Pod划分总体思路
18.7.2 应用Controller选择
18.7.3 Node资源分配
18.7.4 Liveness健康检查
第19章 Kubernetes网络互联
19.1 跨节点网络
19.1.1 网络互联总体思路
19.1.2 Flannel网络的Kubernetes实现
19.1.3 Canal网络的Kubernetes实现
19.1.4 网络选型
19.2 服务发现与负载均衡
19.2.1 Pod访问方式
19.2.2 ClusterIP方式
19.2.3 NodePort方式
19.2.4 LoadBalancer方式
19.2.5 Ingress方式
19.2.6 服务发现总体思路
19.3 【优惠券项目落地】——服务发现和互联
19.3.1 有状态服务搭建
19.3.2 无状态服务搭建
19.3.3 微服务网络互联和服务发现
第20章 Kubernetes数据存储
20.1 Volume卷
20.1.1 磁盘管理整体思路
20.1.2 emptyDir方式
20.1.3 hostPath方式
20.1.4 云存储方式
20.1.5 PV-PVC方式
20.1.6 StorageClass方式
20.2 ConfigMap和Secret
20.2.1 ConfigMap和Secret的定位
20.2.2 创建方式
20.2.3 数据传递方式
20.3 【优惠券项目落地】——配置和磁盘管理
20.3.1 应用环境变量加载
20.3.2 有状态应用磁盘挂载
第21章 Kubernetes高级功能
21.1 容器化的非功能性需求
21.1.1 架构设计的非功能性考量
21.1.2 Kubernetes容器方案的架构特性
21.2 安全性
21.2.1 安全性整体思路
21.2.2 认证和授权
21.2.3 Pod安全策略
21.2.4 网络访问策略
21.3 可用性
21.3.1 高可用架构整体思路
21.3.2 Node节点高可用
21.3.3 etcd高可用
21.3.4 Master节点高可用
21.4 扩展性
21.4.1 水平还是垂直扩展
21.4.2 手动扩缩容
21.4.3 HPA自动扩缩容
21.4.4 Serverless扩缩容
21.5 易用性
21.5.1 易用性的考量要素
21.5.2 Helm应用包管理
21.5.3 CI/CD流水线
21.6 可观察性
21.6.1 集群观察要点
21.6.2 Dashboard
21.6.3 Prometheus Grafana
21.6.4 Elasticsearch Fluentd Kibana
21.7 【优惠券项目落地】——Kubernetes容器架构终态
21.7.1 实现服务高可用
21.7.2 容器水平扩展
21.7.3 设置性能监控告警
21.7.4 设置日志监控搜索
21.7.5 微服务容器化落地的思考
第22章 Service Mesh
22.1 Service Mesh在微服务中的应用
22.1.1 Service Mesh引领微服务新时代
22.1.2 Istio的诞生和兴起
22.1.3 Service Mesh在大厂中的应用
22.2 从BoofInfo样例起步
22.2.1 异构应用的网络互通
22.2.2 应用拓扑监控
22.2.3 应用蓝绿发布
22.2.4 Service Mesh感受分享
22.3 了解Istio架构
22.3.1 Istio工作原理和整体架构
22.3.2 Proxy模块
22.3.3 Istiod模块
22.4 服务治理
22.4.1 服务治理的整体思路
22.4.2 灰度发布
22.4.3 故障注入
22.4.4 数据流镜像
22.4.5 服务熔断
22.4.6 服务网关
22.5 服务安全
22.5.1 服务安全整体思路
22.5.2 mTLS双向认证加密
22.5.3 基于mTLS的用户授权
22.5.4 JWT用户认证授权
22.6 服务监控
22.6.1 服务监控整体思路
22.6.2 Prometheus+Grafana性能监控
22.6.3 Jaeger服务追踪
22.7 【优惠券项目落地】——非侵入式容器进阶态
22.7.1 激活Service Mesh
22.7.2 透明授权验证
22.7.3 无埋点应用拓扑管理
22.7.4 优惠券项目容器化落地思考
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜