本书以一个名为EagleEye的项目为主线,介绍云、微服务等概念以及Spring Boot和Spring Cloud等诸多Spring项目,并介绍如何将EagleEye项目一步一步地从单体架构重构成微服务架构,进而将这个项目拆分成众多微服务,让它们运行在各自的Docker容器中,实现持续集成/持续部署,并*终自动部署到云环境中。针对在重构过程中遇到的各种微服务开发会面临的典型问题(包括开发、测试和运维等问题),本书介绍了解决这些问题的核心模式,以及在实战中如何选择特定Spring Cloud子项目或其他工具解决这些问题。 本书适合拥有构建分布式应用程序的经验、拥有Spring的知识背景以及对学习构建基于微服务的应用程序感兴趣的Java开发人员阅读。对于希望使用微服务构建基于云的应用程序,以及希望了解如何将基于微服务的应用部署到云上的开发人员,本书也具有很好的学习参考价值。
目录
第 1章 欢迎迈入云世界,Spring 1
1.1 什么是微服务 1
1.2 什么是Spring,为什么它与微服务有关 4
1.3 在本书中读者会学到什么 5
1.4 为什么本书与你有关 6
1.5 使用Spring Boot来构建微服务 6
1.6 为什么要改变构建应用的方式 10
1.7 云到底是什么 11
1.8 为什么是云和微服务 13
1.9 微服务不只是编写代码 14
1.9.1 核心微服务开发模式 15
1.9.2 微服务路由模式 16
1.9.3 微服务客户端弹性模式 17
1.9.4 微服务安全模式 18
1.9.5 微服务日志记录和跟踪模式 19
1.9.6 微服务构建和部署模式 20
1.10 使用Spring Cloud构建微服务 22
1.10.1 Spring Boot 23
1.10.2 Spring Cloud Config 23
1.10.3 Spring Cloud服务发现 24
1.10.4 Spring Cloud与Netflix Hystrix和Netflix Ribbon 24
1.10.5 Spring Cloud与Netflix Zuul 24
1.10.6 Spring Cloud Stream 24
1.10.7 Spring Cloud Sleuth 24
1.10.8 Spring Cloud Security 25
1.10.9 代码供应 25
1.11 通过示例来介绍Spring Cloud 25
1.12 确保本书的示例是有意义的 27
1.13 小结 28
第 2章 使用Spring Boot构建微服务 29
2.1 架构师的故事:设计微服务架构 31
2.1.1 分解业务问题 31
2.1.2 建立服务粒度 32
2.1.3 互相交流:定义服务接口 35
2.2 何时不应该使用微服务 36
2.2.1 构建分布式系统的复杂性 36
2.2.2 服务器散乱 36
2.2.3 应用程序的类型 36
2.2.4 数据事务和一致性 37
2.3 开发人员的故事:用SpringBoot和Java构建微服务 37
2.3.1 从骨架项目开始 37
2.3.2 引导Spring Boot应用程序:编写引导类 39
2.3.3 构建微服务的入口:Spring Boot控制器 40
2.4 DevOps工程师的故事:构建运行时的严谨性 44
2.4.1 服务装配:打包和部署微服务 46
2.4.2 服务引导:管理微服务的配置 47
2.4.3 服务注册和发现:客户端如何与微服务通信 48
2.4.4 传达微服务的“健康状况” 49
2.5 将视角综合起来 51
2.6 小结 52
第3章 使用Spring Cloud配置服务器控制配置 53
3.1 管理配置(和复杂性) 54
3.1.1 配置管理架构 55
3.1.2 实施选择 56
3.2 构建Spring Cloud配置服务器 58
3.2.1 创建Spring Cloud Config引导类 61
3.2.2 使用带有文件系统的Spring Cloud配置服务器 62
3.3 将Spring Cloud Config与Spring Boot客户端集成 64
3.3.1 建立许可证服务对Spring Cloud Config服务器的依赖 65
3.3.2 配置许可证服务以使用Spring Cloud Config 66
3.3.3 使用Spring Cloud配置服务器连接数据源 69
3.3.4 使用@Value注解直接读取属性 72
3.3.5 使用Spring Cloud配置服务器和Git 73
3.3.6 使用Spring Cloud配置服务器刷新属性 73
3.4 保护敏感的配置信息 75
3.4.1 下载并安装加密所需的Oracle JCE jar 75
3.4.2 创建加密密钥 76
3.4.3 加密和解密属性 76
3.4.4 配置微服务以在客户端使用加密 78
3.5 *后的想法 79
3.6 小结 80
第4章 服务发现 81
4.1 我的服务在哪里 82
4.2 云中的服务发现 84
4.2.1 服务发现架构 84
4.2.2 使用Spring和Netflix Eureka进行服务发现实战 87
4.3 构建Spring Eureka服务 88
4.4 通过Spring Eureka注册服务 90
4.5 使用服务发现来查找服务 93
4.5.1 使用Spring DiscoveryClient查找服务实例 95
4.5.2 使用带有Ribbon功能的Spring RestTemplate调用服务 97
4.5.3 使用Netflix Feign客户端调用服务 98
4.6 小结 100
第5章 使用Spring Cloud和NetflixHystrix的客户端弹性模式 101
5.1 什么是客户端弹性模式 102
5.1.1 客户端负载均衡模式 103
5.1.2 断路器模式 103
5.1.3 后备模式 103
5.1.4 舱壁模式 104
5.2 为什么客户端弹性很重要 104
5.3 进入Hystrix 107
5.4 搭建许可服务器以使用Spring Cloud和Hystrix 107
5.5 使用Hystrix实现断路器 109
5.5.1 对组织微服务的调用超时 111
5.5.2 定制断路器的超时时间 112
5.6 后备处理 113
5.7 实现舱壁模式 115
5.8 基础进阶—微调Hystrix 118
5.9 线程上下文和Hystrix 122
5.9.1 ThreadLocal与Hystrix 122
5.9.2 HystrixConcurrencyStrategy实战 125
5.10 小结 129
第6章 使用Spring Cloud和Zuul进行服务路由 131
6.1 什么是服务网关 132
6.2 Spring Cloud和Netflix Zuul简介 133
6.2.1 建立一个Zuul Spring Boot项目 134
6.2.2 为Zuul服务使用Spring Cloud注解 134
6.2.3 配置Zuul与Eureka进行通信 135
6.3 在Zuul中配置路由 135
6.3.1 通过服务发现自动映射路由 136
6.3.2 使用服务发现手动映射路由 137
6.3.3 使用静态URL手动映射路由 140
6.3.4 动态重新加载路由配置 142
6.3.5 Zuul和服务超时 143
6.4 Zuul的真正威力:过滤器 144
6.5 构建* 一个生成关联ID的Zuul前置过滤器 147
6.6 构建接收关联ID的后置过滤器 155
6.7 构建动态路由过滤器 157
6.7.1 构建路由过滤器的骨架 159
6.7.2 实现run()方法 159
6.7.3 转发路由 161
6.7.4 整合 162
6.8 小结 163
第7章 保护微服务 164
7.1 OAuth2简介 165
7.2 从小事做起:使用Spring和OAuth2来保护单个端点 167
7.2.1 建立EagleEye OAuth2验证服务 167
7.2.2 使用OAuth2服务注册客户端应用程序 168
7.2.3 配置EagleEye用户 171
7.2.4 验证用户 172
7.3 使用OAuth2保护组织服务 175
7.3.1 将Spring Security和OAuth2 jar添加到各个服务 176
7.3.2 配置服务以指向OAuth2验证服务 176
7.3.3 定义谁可以访问服务 177
7.3.4 传播OAuth2访问令牌 180
7.4 JSON Web Token与OAuth2 183
7.4.1 修改验证服务以颁发JWT令牌 184
7.4.2 在微服务中使用JWT 188
7.4.3 扩展JWT令牌 189
7.4.4 从JWT令牌中解析自定义字段 191
7.5 关于微服务安全的总结 193
7.6 小结 195
第8章 使用Spring Cloud Stream的事件驱动架构 196
8.1 为什么使用消息传递、EDA和微服务 197
8.1.1 使用同步请求-响应方式来传达状态变化 198
8.1.2 使用消息传递在服务之间传达状态更改 199
8.1.3 消息传递架构的缺点 201
8.2 Spring Cloud Stream简介 202
8.3 编写简单的消息生产者和消费者 205
8.3.1 在组织服务中编写消息生产者 205
8.3.2 在许可证服务中编写消息消费者 210
8.3.3 在实际操作中查看消息服务 213
8.4 Spring Cloud Stream用例:分布式缓存 214
8.4.1 使用Redis来缓存查找 215
8.4.2 定义自定义通道 221
8.4.3 将其全部汇集在一起:在收到消息时清除缓存 222
8.5 小结 223
第9章 使用Spring Cloud Sleuth和Zipkin进行分布式跟踪 224
9.1 Spring Cloud Sleuth与关联ID 225
9.1.1 将Spring Cloud Sleuth添加到许可证服务和组织服务中 226
9.1.2 剖析Spring Cloud Sleuth跟踪 226
9.2 日志聚合与Spring Cloud Sleuth 227
9.2.1 Spring Cloud Sleuth与Papertrail实现实战 229
9.2.2 创建Papertrail账户并配置syslog连接器 230
9.2.3 将Docker输出重定向到Papertrail 232
9.2.4 在Papertrail中搜索Spring Cloud Sleuth的跟踪ID 234
9.2.5 使用Zuul将关联ID添加到HTTP响应 235
9.3 使用Open Zipkin进行分布式跟踪 237
9.3.1 添加Spring Cloud Sleuth和Zipkin依赖项 238
9.3.2 配置服务以指向Zipkin 238
9.3.3 安装和配置Zipkin服务器 239
9.3.4 设置跟踪级别 240
9.3.5 使用Zipkin跟踪事务 241
9.3.6 可视化更复杂的事务 243
9.3.7 捕获消息传递跟踪 244
9.3.8 添加自定义跨度 246
9.4 小结 248
第 10章 部署微服务 250
10.1 EagleEye:在云中建立核心基础设施 251
10.1.1 使用* 的RDS创建PostgreSQL数据库 253
10.1.2 在AWS中创建Redis集群 257
10.1.3 创建ECS集群 258
10.2 * 越基础设施:部署EagleEye 262
10.3 构建和部署管道的架构 265
10.4 构建和部署管道实战 268
10.5 开始构建和部署管道:GitHub和Travis CI 270
10.6 使服务能够在Travis CI中构建 270
10.6.1 构建的核心运行时配置 273
10.6.2 安装预构建工具 275
10.6.3 执行构建 277
10.6.4 标记源代码 277
10.6.5 构建微服务并创建Docker镜像 279
10.6.6 将镜像推送到Docker Hub 279
10.6.7 在* ECS中启动服务 280
10.6.8 启动平台测试 280
10.7 关于构建和部署管道的总结 282
10.8 小结 282
附录A 在桌面运行云服务 283
附录B OAuth2授权类型 291
这本《Spring微服务实战》真的像一本宝藏!我之前一直用 Spring Boot 来构建单体应用,虽然也很方便,但随着业务的增长,单体应用的管理和部署越来越吃力,性能瓶颈也逐渐显现。读了这本书,我才真正理解了微服务架构的优势所在,以及如何通过 Spring Cloud 来优雅地实现服务拆分和解耦。书中提供的“云原生Java开发教程书”的视角,让我明白微服务与云计算技术的融合是未来的大势所趋。我特别喜欢书中关于“如何选择合适的微服务通信方式”的分析,以及对于不同技术栈(如 Eureka、Nacos、Consul)的比较,让我能够根据实际需求做出更明智的技术选型。书中对于“微服务设计的开发指南”部分,更是让我受益匪浅,它不仅仅是教我如何写代码,更教我如何去思考,如何去设计一个面向未来的微服务系统。这本书的语言风格也很接地气,没有太多晦涩难懂的术语,读起来轻松愉快,但内容却十分有料。
评分这本书真的让我对 Spring 微服务的理解提升到了一个全新的高度。我之前尝试过一些微服务相关的零散资料,但总是感觉碎片化,难以形成系统性的认知。这本书的结构非常清晰,从基础概念的讲解,到核心组件(如 Spring Cloud、Eureka、Config、Gateway、Sleuth 等)的详细剖析,再到实际案例的落地,循序渐进,逻辑严谨。让我印象最深刻的是书中关于服务拆分、API 网关设计、服务注册与发现、配置中心管理以及分布式链路追踪等方面的讲解,不仅理论扎实,更提供了大量的代码示例和实践建议,让我能够快速上手,并在实际工作中进行参考。特别是对于熔断、限流、降级这些高可用方面的处理,书中给出了非常实用的方案和代码实现,让我对构建稳定可靠的微服务系统有了更深的信心。这本书不仅仅是技术的堆砌,它更注重设计思想的传达,让我明白“为什么”要这么做,而不是仅仅“怎么”做。读完之后,感觉自己真的掌握了一套完整的微服务开发方法论,对未来的项目开发充满了期待。
评分这本书简直是为我量身定制的!我一直觉得微服务听起来很美好,但实际落地的时候总会遇到各种各样的问题,比如服务间的通信、数据一致性、部署和运维的复杂性等等,让我头疼不已。这本书把这些难点都一一拆解开来,用非常通俗易懂的语言进行解释,并且提供了大量具体的操作指南。我特别喜欢其中关于“服务治理”和“服务安全”章节的讲解,让我明白了如何有效地管理和保护大量的微服务实例,避免了许多潜在的安全隐患。书中关于 Kubernetes 在微服务中的应用也让我大开眼界,让我看到了微服务与容器化技术结合的强大威力,为我未来的容器化部署之路指明了方向。最重要的是,这本书的案例非常贴合实际业务场景,让我能够将学到的知识直接应用到我的工作中,解决了很多之前悬而未决的问题。读这本书的过程中,我感觉自己就像在和一个经验丰富的架构师在交流,他把所有复杂的概念都讲得明明白白,让我茅塞顿开。
评分这本书的深度和广度都超出了我的预期。我本来以为它会停留在 Spring Cloud 的基础应用层面,但没想到它深入探讨了微服务架构的一些更深层次的设计原则和最佳实践。书中关于领域驱动设计(DDD)在微服务中的应用,以及如何进行服务边界的划分,让我对如何构建一个可维护、可扩展的微服务系统有了全新的认识。它不像一些教程那样只是罗列 API,而是引导读者去思考微服务的设计哲学,比如如何处理分布式事务,如何实现最终一致性,如何在服务间进行高效的通信(RESTful、RPC、消息队列等),以及如何构建弹性的微服务系统。书中对一些高级特性的讲解,如服务网格(Service Mesh)的初步介绍,也让我对微服务技术的未来发展有了更清晰的洞察。我尤其欣赏书中对于“运维”这个环节的重视,很多微服务教程都会忽略这一点,但这本书却花了不少篇幅讲解如何进行日志收集、监控告警、灰度发布等,这对于真正落地微服务至关重要。
评分我之前对云计算和Java开发都有一定的了解,但一直想学习如何将这些技术结合起来构建现代化的微服务应用。这本书正好满足了我的需求。它将 Spring Boot、Spring Cloud 以及云计算的一些核心概念融会贯通,提供了一个非常全面的学习路径。从基础的 Spring Boot 配置,到 Spring Cloud 的各个组件的使用,再到如何将这些微服务部署到云平台上,书中的讲解都非常详细和到位。我印象深刻的是书中关于“分布式配置管理”的讲解,让我明白了如何集中管理不同服务的配置信息,避免了手动修改配置文件的麻烦。而且,书中关于“服务熔断降级”的策略和实现,对于提升微服务的健壮性非常有帮助。我之前对这些概念只是有所耳闻,这本书让我真正理解了它们的原理和应用场景。总体来说,这本书是学习 Spring 微服务和云计算Java开发的绝佳参考资料,它让我能够系统地掌握构建现代化、高可用、可扩展的微服务系统的核心技术和设计理念。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有