描述
开 本: 128开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302535652
《Spring Boot微服务实战 使用RabbitMQ、Eureka、Ribbon、Zuul和Cucumber开发RESTful服务》使用Spring Boot构建微服务架构,将一个应用从小单体演进到包含多个服务的事件驱动架构。本书遵循增量式的方法来讲解微服务结构、测试驱动开发、Eureka、Ribbon、Zuul,以及使用Cucumber编写的端到端测试。
作者Moises Macero用非常务实的方式解释了这种软件架构的好处,而不是让你被理论概念分散注意力。他从实战的角度介绍了计算机编程中的一些先进技术。从*小可行的产品开始,同时保持灵活性,使其不断发展。
主要内容:
◇ 使用Spring Boot 构建微服务
◇ 使用事件驱动架构,通过RabbitMQ实现消息机制
◇ 使用Spring创建RESTful服务
◇ 使用Eureka掌握服务发现,使用Ribbon掌握负载均衡
◇ 使用Zuul路由请求并将其作为API网关
◇ 使用Cucumber为事件驱动架构编写端到端测试
◇ 进行持续集成和部署
目 录
第1 章 介绍 1
1.1 设置场景 1
1.2 读者对象 2
1.3 本书与其他图书和指南有何区别 2
1.3.1 工具背后的论证 2
1.3.2 学习:渐进的过程 3
1.3.3 这是一本指南还是一本图书 3
1.4 本书内容 3
1.4.1 从基础知识到高级话题 3
1.4.2 搭建Spring Boot骨架的专业方式 4
1.4.3 测试驱动开发 4
1.4.4 连接微服务 4
1.4.5 事件驱动的系统 5
1.4.6 端到端测试 5
1.5 本章小结 5
第2 章 一个基本的Spring Boot应用 7
2.1 业务需求 7
2.2 骨架应用 8
2.2.1 轻薄应用与真实应用 8
2.2.2 创建应用骨架 8
2.3 热身:一些TDD的实战 10
2.4 本章小结 16
第3 章 一个真实的三层Spring Boot 应用 17
3.1 简介 17
3.2 完成基本功能 18
3.3 领域设计 24
3.4 业务逻辑层 28
3.5 展示层(REST API) 30
3.5.1 Multiplication Controller 31
3.5.2 Results控制器 35
3.6 前端(Web客户端) 38
3.7 试玩(第1部分) 42
3.8 数据持久化的新需求 43
3.9 重构代码 45
3.10 数据层 50
3.10.1 数据模型 51
3.10.2 资源库 56
3.11 完成第二个用户故事:串联所有层 63
3.12 畅玩应用(第2部分) 69
3.13 本章小结 71
第4 章 初识微服务 73
4.1 小单体之路 73
4.1.1 单体分析 75
4.1.2 继续前进 76
4.2 游戏化基础 77
4.2.1 分数、徽章和排行榜 77
4.2.2 应用游戏化技术 78
4.3 转向微服务架构 78
4.3.1 职责分离和松耦合 78
4.3.2 独立变更 79
4.3.3 伸缩性 79
4.4 连接不同的微服务 80
4.5 事件驱动架构 81
4.5.1 相关技术 81
4.5.2 事件驱动架构的优缺点 82
4.5.3 深入阅读 84
4.5.4 应用事件驱动架构 84
4.6 使用RabbitMQ和Spring AMQP实现事件驱动 85
4.6.1 在系统中使用RabbitMQ 86
4.6.2 Spring AMQP 86
4.7 从乘法微服务发送事件 87
4.7.1 RabbitMQ配置 87
4.7.2 对事件建模 89
4.7.3 发送事件:分发器模式 91
4.7.4 深入新游戏化微服务 95
4.8 使用RabbitMQ接收事件 111
4.8.1 订阅者 111
4.8.2 RabbitMQ配置 111
4.8.3 事件处理程序 114
4.9 在微服务之间请求数据 115
4.9.1 结合反应式模式和REST 115
4.9.2 保持领域隔离 117
4.9.3 实现REST客户端 119
4.9.4 更新游戏化业务逻辑 123
4.10 使用微服务 126
4.11 本章小结 128
第5 章 使用工具的微服务架构 131
5.1 介绍 131
5.2 抽取UI部分,并连接游戏化服务 132
5.2.1 移动静态内容 133
5.2.2 连接UI和游戏化服务 134
5.2.3 改变现有服务 136
5.2.4 全新的、更好的UI,而且(几乎)不需要额外的代价 139
5.3 当前架构 146
5.4 服务发现和负载均衡 147
5.4.1 服务发现 147
5.4.2 负载均衡 149
5.4.3 多语言系统、Eureka以及 Ribbon 151
5.5 通过API网关路由 153
5.5.1 API网关模式 153
5.5.2 让Zuul、Eureka和Ribbon一起工作 156
5.6 动手准则 158
5.6.1 使用Zuul实现API网关 158
5.6.2 使用服务发现 172
5.6.3 微服务准备好扩展了吗 174
5.6.4 通过Ribbon实现负载均衡 176
5.7 断路器和REST客户端 183
5.7.1 Hystrix断路器 183
5.7.2 Hystrix和Zuul 183
5.7.3 来自REST客户端的Hystrix 186
5.7.4 使用Feign的REST消费者 189
5.8 微服务模式和PaaS 189
5.9 本章小结 190
第6 章 测试分布式系统 193
6.1 介绍 193
6.2 设置场景 194
6.3 Cucumber的工作方式 195
6.4 动手准则 197
6.4.1 创建一个空项目并选择工具 197
6.4.2 让系统可测试 200
6.4.3 编写第一个Cucumber测试 207
6.4.4 把功能测试连接到Java代码 210
6.4.5 支持类 218
6.4.6 在feature之间重用步骤 223
6.4.7 运行测试并检查报告 225
6.5 本章小结 226
附录A 升级到Spring Boot 2.0 229
A.1 介绍 229
A.2 升级依赖项 229
A.3 修复已破坏的变化 232
A.3.1 CrudRepository接口不包含findOne()方法 232
A.3.2 actuator端点被移动 233
A.4 应用可选的更新 234
A.5 使用Spring Boot 2.0 234
后记 235
译 者 序
虽然市面上已经有了很多讲解Spring Boot的图书,但是《Spring Boot微服务实战》绝对会给你带来不一样的体验。Moises Macero没有把《Spring Boot微服务实战》写得像一本使用手册一样面面俱到,也没有一上来就直接给出一个完整的微服务架构设计,然后把这个架构设计实现出来,而是像一本微服务开发者的旅行小说,带着读者一起探索微服务世界,在旅途中一起面临问题,然后一起解决问题,这样一步步用演进方式给读者呈现出最终的微服务架构设计。
这个旅途从一个业务基本需求开始,作者按照敏捷开发的方式写出了第一个用户故事并拆分出具体任务,然后使用测试驱动开发(Test-Driven Development,TDD)的方法实现了基本业务逻辑。紧接着用了一章篇幅详细介绍了一个Spring Boot应用的三层架构体系,并基于这个架构实现了从界面到数据库的一个完整功能。随着需求的不断增加,发现新需求不适合放在原来的应用中,于是介绍了解决这种问题的方案:多个微服务架构。实现了多个微服务以后又发现了新问题,于是开始一个个地介绍解决这些问题的工具,并把这些工具实现到系统中。最后针对复杂的微服务架构系统,发现很难进行端到端测试,因此又带着读者一起使用业务驱动开发(Business-Driven Development,BDD)的方法实现了微服务系统的端到端测试。在整个旅途中,作者在每次解决问题之前,都会深入浅出地解释为什么要这样解决。这好像在旅游时一位经验丰富的导游在给你讲解每个景点背后的故事,以及到达景点为什么要走这条路。
希望读者不仅从《Spring Boot微服务实战》学到如何使用Spring Boot实现微服务,而能够通过《Spring Boot微服务实战》更深入地理解很多微服务的底层逻辑,掌握了这套逻辑就能够使用其他开发语言或者框架实现微服务架构系统。这些年大部分公司都在把传统IT系统的单体架构转型成微服务架构。而基于越来越多的微服务,数字化中台这个概念开始越来越火,很多公司都提出要建设中台。构建中台的一个个微服务,每个微服务都代表企业的某种业务能力,这些业务能力通过微服务改造变成数字化服务后,企业就可以很容易地复用这些业务能力来响应业务诉求,并通过扩展微服务的方式来支持业务规模的迅速扩张。不论是微服务架构还是数字化中台,都不仅是专有的技术概念,而是一个企业在数字化时代需要具备的新技能。
下面这个图是译者提出的数字化中台全景,在《Spring Boot微服务实战》中作者提到的服务发现、API网关、负载均衡、服务容错等概念都能够在这个全景图中找到对应的位置。
《Spring Boot微服务实战》全部章节由张渊与和坚翻译,在这里要感谢清华大学出版社的编辑,他们为《Spring Boot微服务实战》的翻译投入了巨大的热情并付出了很多心血。没有他们的帮助和严谨的要求,《Spring Boot微服务实战》不可能顺利付梓。还要感谢译者的家人们,他们给予的支持保证了译者在工作之余能投入足够的时间和精力进行翻译和校对。
《Spring Boot微服务实战》涉及了大量的实践和专业术语,译者力求翻译得准确易懂。但毕竟水平有限,错误和失误在所难免,如有任何意见和建议,请不吝指正。感激不尽!
译 者
一本优秀书籍!
——laurimt
本书令我着迷。一条故事主线贯穿全书,娓娓道来,指导我构建示例应用程序。作者好像猜透了我的心思,知道我在日常工作中遇到过哪些困难,并对症下药地给出解决之道。
通过学习本书,我掌握了Spring Boot的相关技术和应用,Java开发变得简单、高效。
一本关于端到端微服务开发的精品书籍
——Jason
本书对负载均衡、服务发现以及Cucumber端到端测试的讲解十分精彩,从中可体会到作者的良苦用心。本书操作步骤详细,编程思路清晰,语言平实易懂,介绍*的、成熟的构建方式。强烈推荐Java开发人员使用本书。
本书助你成为马良,用Spring Boot这支神笔绘出灵活多变的微服务!
——Diego R.
本书介绍微服务构建方法,披露微服务体系结构的*实践。首先讲解基础概念,然后浓墨重彩地描述实现方式,详细解释做出决策的原因,指导你采用迭代和增量方式自行开发基于游戏的应用程序。
阅读本书后,你将了解微服务的整体概念,把握使用微服务的时机。你将学习TDD、三层应用程序、负载均衡、伸缩服务和RESTful API等概念,还将学习Spring Boot框架、RabbitMQ消息代理、Eureka服务和Cucumber测试框架。
一个好的跳板,让你纵身跃入微服务的广阔世界中!
——armen.gigoian
阅读文学作品时,我总喜欢跳过几页或几章,因为我始终觉得有些内容是多余的。但面对本书,我完全被带入故事情节,我把每一章的内容读了又读,反复咀嚼。
构建微服务是一项十分复杂的工作,需要考虑的事项千头万绪。本书几乎涵盖了构建基于微服务的项目时需要考虑的所有方面,从基本的微服务设置、技术栈、测试方法、API、同步/异步通信、数据分发、服务发现到负载均衡,本书一应俱全。本书还注重激活读者的思路,让读者自由地发现替代方法。
如果你刚开始接手基于微服务的项目,本书将是你的得力助手。在此强烈向你推荐本书!
评论
还没有评论。