Spring Cloud微服务架构开发实战
内容介绍
本书首先从微服务架构兴起的背景讲起,探讨了为何在分布式系统开发中微服务架构将逐渐取代单体架构,然后对Spring Cloud所提供的微服务组件及解决方案进行了一一讲解,从而让读者不但可以系统地学习Spring Cloud的相关知识,而且还可以全面掌握微服务架构应用的设计、开发、部署和运维等知识。
本书共11章,分为3篇。第1篇为微服务开发基础——Spring Boot框架及使用;第2篇为Spring Cloud组件实战;第3篇为微服务与Docker容器技术。其中第2篇为全书的核心,涵盖了构建微服务架构所需要的服务治理(Eureka)、客户端负载均衡(Ribbon)、微服务容错与降级处理(Hystrix)、微服务API统一网关(Zuul)、分布式配置中心(Config)、微服务调用链追踪(Sleuth)、微服务消息驱动开发(Stream)及微服务安全(OAuth及JWT)等相关知识。
本书内容通俗易懂,每章都结合实例进行讲解,特别适合Spring Cloud的入门读者阅读,也适合致力于互联网开发和Java开发的进阶读者阅读。如果你是运维人员,或者你对微服务架构有兴趣,那么本书也非常适合你阅读。此外,本书也可以作为相关培训机构的教材使用。
目录
- 第1篇 微服务开发基础——Spring Boot框架及使用
- 第1章 微服务架构开发 2
- 1.1 单体架构应用的困境 2
- 1.2 微服务架构 3
- 1.2.1 如何定义微服务架构 4
- 1.2.2 微服务架构的优点 5
- 1.2.3 微服务架构的缺点 6
- 1.3 微服务架构设计 7
- 1.3.1 微服务粒度 7
- 1.3.2 微服务拆分原则 8
- 1.3.3 微服务自治原则 9
- 1.3.4 微服务交互原则 10
- 1.3.5 微服务架构迁移 10
- 1.4 不应使用微服务架构的情形 11
- 第2章 微服务基础——Spring Boot 12
- 2.1 Spring与Spring Boot 12
- 2.2 快速启动Spring Boot 13
- 2.2.1 编写pom.xml文件 14
- 2.2.2 编写应用引导类 16
- 2.2.3 编写配置文件 17
- 2.2.4 运行项目 17
- 2.3 使用Spring Boot构建示例项目 19
- 2.3.1 经典三层应用架构 19
- 2.3.2 设计领域对象 20
- 2.3.3 实现数据管理 23
- 2.3.4 编写业务逻辑层 29
- 2.3.5 编写RESTful API 31
- 2.3.6 数据库初始化 35
- 2.3.7 启动测试 36
- 2.4 Spring Boot特性 37
- 2.4.1 Spring Boot自动配置机制 37
- 2.4.2 Spring Boot扩展属性配置 38
- 2.4.3 Spring Boot日志配置 39
- 2.5 关于敏捷开发 40
- 2.6 关于RESTful API设计 41
- 2.6.1 以资源为中心进行URL设计 42
- 2.6.2 正确使用HTTP方法及状态码 42
- 2.6.3 查询及分页处理原则 43
- 2.6.4 其他指导原则 43
- 第2篇 Spring Cloud组件实战
- 第3章 Spring Cloud简介 46
- 3.1 微服务架构的核心关键点 46
- 3.2 Spring Cloud技术概览 49
- 3.2.1 Spring Cloud子项目 50
- 3.2.2 为何选择Spring Cloud 53
- 3.3 Spring Cloud版Hello World示例 54
- 第4章 服务治理与负载均衡 58
- 4.1 什么是服务治理 58
- 4.2 构建服务治理——Eureka 59
- 4.2.1 搭建微服务Parent工程 60
- 4.2.2 搭建服务治理服务器——Eureka服务器 62
- 4.2.3 搭建服务提供者——注册服务 64
- 4.2.4 搭建服务消费者——获取服务 68
- 4.3 使用客户端负载均衡——Ribbon 72
- 4.3.1 什么是客户端负载均衡 72
- 4.3.2 启用Ribbon 74
- 4.3.3 负载均衡测试 75
- 4.4 使用Feign简化微服务调用 77
- 4.5 深入Eureka 80
- 4.5.1 服务注册及相关原理 80
- 4.5.2 Eureka自我保护模式 82
- 4.5.3 注册一个服务实例需要的时间 84
- 4.5.4 Eureka高可用集群及示例 84
- 4.5.5 多网卡及IP指定 88
- 4.5.6 Eureka服务访问安全 89
- 4.6 深入Ribbon 90
- 4.6.1 Ribbon客户端负载均衡原理 90
- 4.6.2 Ribbon负载均衡策略及配置 92
- 4.6.3 直接使用Ribbon API 94
- 4.7 深入Feign 96
- 4.7.1 Feign的参数绑定 96
- 4.7.2 Feign中的继承 97
- 4.7.3 Feign与Swagger的冲突 98
- 4.8 微服务健康监控 99
- 4.9 异构服务解决方案——Sidecar 101
- 第5章 微服务容错保护——Hystrix 102
- 5.1 什么是微服务容错保护 102
- 5.2 快速启动Hystrix 103
- 5.2.1 引入Hystrix依赖 104
- 5.2.2 开启Hystrix支持 104
- 5.2.3 修改UserService实现 104
- 5.2.4 容错测试 105
- 5.2.5 服务降级的两种实现方式 107
- 5.2.6 在Feign中使用Hystrix回退 109
- 5.3 Hystrix容错机制分析 110
- 5.3.1 Hystrix整体处理流程 111
- 5.3.2 HystrixCommand与HystrixObservableCommand 113
- 5.3.3 断路器原理分析 115
- 5.3.4 Hystrix异常——HystrixBadRequestException 117
- 5.4 服务隔离 117
- 5.4.1 线程池隔离与信号量隔离 118
- 5.4.2 服务隔离的颗粒度 119
- 5.4.3 服务隔离配置 119
- 5.4.4 小结 120
- 5.5 服务降级模式 121
- 5.5.1 快速失败 121
- 5.5.2 静默失败 121
- 5.5.3 返回默认值 122
- 5.5.4 返回组装的值 122
- 5.5.5 返回远程缓存 123
- 5.5.6 主/从降级模式 124
- 5.6 请求缓存 127
- 5.7 请求合并 128
- 5.8 Hystrix监控 130
- 5.8.1 Hystrix仪表盘 131
- 5.8.2 Turbine仪表盘集群监控 133
- 5.8.3 Turbine与消息服务器集成 136
- ……
- 第6章 API服务网关——Zuul 137
- 第7章 统一配置中心——Config 166
- 第8章 分布式服务跟踪——Sleuth 192
- 第9章 消息驱动——Stream 215
- 第10章 微服务应用安全——Security 258
- 第3篇 微服务与Docker容器技术
- 第11章 微服务与Docker 288
- 11.1 Docker简介 288
- 11.2 Docker的使用 289
- 11.3 Docker与Spring Cloud微服务 301
- 11.4 微服务与Jenkins 305
- 11.5 微服务编排 315