Spring响应式微服务:Spring Boot 2+Spring 5+Spring Cloud实战
  • 推荐0
  • 收藏1
  • 浏览3.0K

Spring响应式微服务:Spring Boot 2+Spring 5+Spring Cloud实战

郑天民 (作者)  李利健 (责任编辑)

  • 书  号:978-7-121-36383-2
  • 出版日期:2019-06-01
  • 页  数:276
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:张春雨
《Spring响应式微服务:Spring Boot 2+Spring 5+Spring Cloud实战》主要包含构建响应式微服务架构过程中所应具备的技术体系和工程实践。围绕响应式编程和微服务 架构的整合,我们将讨论如何使用 Reactor 响应式编程框架、如何构建响应式 RESTful 服务、如何构建响应式数据访问组件、如何构建响应式消息通信组件、如何构建响应式微服务架构,以及如何测试响应式微服务 架构等核心主题,并基于这些核心主题给出具体的案例分析。

《Spring响应式微服务:Spring Boot 2+Spring 5+Spring Cloud实战》面向立志于成为微服务架构师(尤其是响应式微服务架构师)的后端服务开发人员,读者不需要有 很高的技术水平,也不限于特定的开发语言,但熟悉 Java EE 常见技术并掌握一定异步编程模型和分布式架构的基本概念有助于更好地理解书中的内容。同时,本书也可以供具备不同技术体系的架构师同行参考,希 望能给日常研发和管理工作带来启发和帮助。
本书介绍了响应式微服务架构的核心技术和案例分析,是国内第一本响应式微服务架构领域的专著。本书结合作者多年微服务架构设计和实现的工程经验,基于最新的工具框架和编程方法,全面描述响应式微服务架构的核心组件和实现细节。同时,本书也在一定程度上从架构设计维度给出如何设计高性能、高扩展性服务化体系的方法论和总结。
郑天民,网名天涯兰,日本足利工业大学信息工程学硕士,研究方向为人工智能在大规模调度系统中的应用,在SCI、EI等国际三大索引上发表学术论文4篇。10年软件行业从业经验,前后担任系统分析架构师、技术总监和CTO等职务。目前在一家大健康领域的创新性科技公司担任CTO,负责产品研发与技术团队管理工作。主持过十余个面向研发人员的技术和管理类培训课程,对架构设计和技术管理有丰富的经验和深入的理解。著有《系统架构设计:程序员向架构师转型之路》、《向技术管理者转型:软件开发人员跨越行业、技术、管理的转型思维与实践》、《微服务设计原理与架构》、《微服务架构实战》等书籍。
当下互联网行业飞速发展,快速的业务更新和产品迭代也给系统开发过程和模式带来新的挑战。在这个时代背景下,以Spring Cloud为代表的微服务架构实现技术应运而生。微服务架构是一种分布式系统,在具备业务、技术和组织等方面具备相应优势的同时,也不得不面临分布式系统所固有的问题。如何确保微服务系统的即时响应性和服务弹性是我们构建微服务架构的一大挑战。幸运的是,Spring 框架的开发人员已经创建了一个崭新的、支持响应式的项目版本用来支持响应式微服务架构的设计和开发。通过构建响应式微服务架构,我们将在传统微服务架构的基础上提供即时响应性和服务弹性。
  本书从响应式编程和微服务架构的基本概念开始展开。你将了解响应式的基本原理,以及Spring 5框架所集成的Project Reactor响应式开发框架。同时,你将进一步学习如何构建响应式RESTful服务、如何构建响应式数据访问组件、如何构建响应式消息通信组件、如何构建响应式微服务架构,以及如何测试响应式微服务架构等核心主题。所有这些内容都将应用于一个精简而又完整的示例项目,确保你能够将所学到的技能付诸于实践。
  本书主要包含响应式微服务架构实现过程中所应具备的技术体系和工程实践,在组织结构上分如下8章内容。
  第1章“直面响应式微服务架构”。作为全书的开篇,围绕响应式微服务架构的概念和构建方式展开讨论。通过对比传统编程方法和响应式编程方法引出响应式编程的核心概念,并引用响应式宣言来阐述响应式系统所应具备的基本系统特性和维度。同时,本章在介绍传统微服务架构的基础上,分析了响应式微服务架构的设计原则,然后对响应式编程和微服务架构进行了整合。
  第2章“响应式编程模型与Reactor框架”。本章全面介绍响应式编程模型并引出了响应式流规范,Reactor框架为我们提供了一整套实现该规范的具体实现。我们在介绍Reactor框架中Mono和Flux这两个核心组件的基础上,进一步提供了一系列强大的操作符来操作这些组件。本章最后还对Reactor框架中的背压机制做了简单介绍,Reactor框架为我们提供了四种背压处理策略以满足不同场景需求。
  第3章“构建响应式RESTful服务”。要想构建响应式微服务架构,首先需要构建单个响应式微服务。在Spring 5中引入了全新的响应式服务构建框架Spring WebFlux,支持使用注解编程模型和函数式编程模型两种方式来构建响应式RESTful服务。本章基于Spring Boot,对Spring WebFlux框架做了全面介绍。
  第4章“构建响应式数据访问组件”。对于响应式微服务架构而言,数据访问也是构建全栈响应式系统的重要一环。为此,Spring Data框架也专门提供了Spring Reactive Data组件用来创建响应式数据访问层组件。在本章中,我们重点就Mongodb和Redis这两个支持响应式特性的Nosql数据库分别给出了如何使用Spring Reactive Data来实现响应式数据访问的基本步骤和代码示例。
  第5章“构建响应式消息通信组件”。本章内容围绕构建响应式微服务架构的另一个重要主题展开讨论,即响应式消息通信。我们使用Reactive Spring Cloud Stream框架来实现响应式消息通信组件。本章先从事件驱动架构和模型出发,引出了Spring Cloud家族中实现消息通信的Spring Cloud Stream框架。然后对Spring Cloud Stream进行升级,结合响应式编程模型全面介绍Reactive Spring Cloud Stream框架的使用方法。
  第6章“构建响应式微服务架构”。本章是全书的重点章节,我们通过使用Spring Cloud框架来实现响应式微服务架构。我们从服务治理、负载均衡、服务容错、服务网关、服务配置和服务监控等六大主题出发全面讨论了响应式微服务架构的核心组件及其实现方案。对于每个组件的介绍,我们都包含了使用该组件的具体方法以及相应的代码示例。同时,我们还专门使用一节内容来介绍WebClient这一响应式服务调用的实现工具。
  第7章“测试响应式微服务架构”。本章中,首先介绍了初始化测试环境的准备工作,然后分别给出了测试响应式微服务架构中一系列独立层组件的方法和示例,即从数据流层出发,分别对基于响应式Mongodb的Repository层、Service层以及Controller层进行测试。
  第8章“响应式微服务架构演进案例分析”。本章作为全书最后一章,通过一个完整的案例分析全面介绍了构建一个响应式微服务系统的各个方面。在介绍该案例时,首先采用了传统的微服务架构来实现该案例。然后,在传统微服务架构构建完毕的基础上,本章重点对如何向响应式微服务架构演进的方法和过程做了具体展开。首先需要更新基础设施类服务,更为重要的,我们需要完成对数据访问方式、事件通信方式、服务调用方式的全面升级。这里涉及响应式WebFlux、响应式Mongodb和Redis、响应式Spring Cloud Stream等响应式组件的使用方式和最佳实践。
  本书面向立志于成为微服务架构师尤其是响应式微服务架构师的服务开发人员,读者不需要有很深的技术水平,也不限于特定的开发语言,但熟悉Java EE常见技术并掌握一定异步编程模型和分布式架构基本概念有助于更好地理解书中的内容。通过对本书的系统学习,读者将对响应式微服务架构的技术体系和实现方式有全面且深入的了解,为后续的工作和学习铺平道路。
  在本书的撰写过程中,感谢我的家人特别是我的妻子章兰婷女士在我占用大量晚上和周末时间的情况下,能够给予极大的支持和理解。感谢以往以及现在公司的同事们,身处在业界领先的公司和团队中,让我得到很多学习和成长的机会,没有大家的帮助,不可能有这本书的诞生。最后,特别感谢电子工业出版社的张春雨编辑,这本书能够顺利出版,离不开他的帮助。
  由于时间仓促,作者水平和经验有限,书中难免有欠妥和错误之处,恳请读者批评、指正。
  郑天民
  2019年3月于杭州钱江世纪城

目录

第1章 直面响应式微服务架构 1

1.1 响应式系统核心概念 1

1.1.1 从传统编程方法到响应式编程方法 1

1.1.2 响应式宣言与响应式系统 4

1.2 剖析微服务架构 6

1.2.1 分布式系统与微服务架构 6

1.2.2 服务拆分与集成 8

1.2.3 微服务架构的核心组件 11

1.2.4 微服务架构技术体系 13

1.3 构建响应式微服务架构 15

1.3.1 响应式微服务架构设计原则 15

1.3.2 整合响应式编程与微服务架构 18

1.4 全书架构 19

1.5 本章小结 20

第2章 响应式编程模型与Reactor框架 21

2.1 响应式编程模型 21

2.1.1 流 22

2.1.2 背压 24

2.1.3 响应式流 25

2.2 Reactor框架 28

2.2.1 响应式编程实现技术概述 28

2.2.2 引入Reactor框架 31

2.3 创建Flux和Mono 34

2.3.1 创建Flux 34

2.3.2 创建Mono 37

2.4 Flux和Mono操作符 39

2.4.1 转换操作符 39

2.4.2 过滤操作符 43

2.4.3 组合操作符 46

2.4.4 条件操作符 49

2.4.5 数学操作符 52

2.4.6 Observable工具操作符 54

2.4.7 日志和调试操作符 56

2.5 Reactor框架中的背压机制 58

2.6 本章小结 60

第3章 构建响应式RESTful服务 61

3.1 使用Spring Boot 2.0构建微服务 61

3.1.1 Spring Boot基本特性 61

3.1.2 基于Spring Boot的第一个RESTful服务 63

3.1.3 使用Actuator组件强化服务 67

3.2 使用Spring WebFlux构建响应式服务 80

3.2.1 使用Spring Initializer初始化响应式Web应用 80

3.2.2 对比响应式Spring WebFlux与传统Spring WebMvc 82

3.2.3 使用注解编程模型创建响应式RESTful服务 84

3.2.4 使用函数式编程模型创建响应式RESTful服务 88

3.3 本章小结 93

第4章 构建响应式数据访问组件 94

4.1 Spring Data数据访问模型 94

4.1.1 Spring Data抽象 95

4.1.2 集成Spring Data JPA 98

4.1.3 集成Spring Data Redis 100

4.1.4 集成Spring Data Mongodb 103

4.2 响应式数据访问模型 104

4.2.1 Spring Reactive Data抽象 105

4.2.2 创建响应式数据访问层组件 107

4.3 响应式Mongodb 108

4.3.1 初始化Reactive Mongodb运行环境 109

4.3.2 创建Reactive Mongodb Repository 112

4.3.3 使用CommandLineRunner初始化Mongodb数据 113

4.3.4 在Service层中调用Reactive MongodbRepository 114

4.4 响应式Redis 117

4.4.1 初始化Reactive Redis运行环境 117

4.4.2 创建Reactive Redis Repository 121

4.4.3 在Service层中调用Reactive Repository 122

4.5 本章小结 123

第5章 构建响应式消息通信组件 124

5.1 消息通信系统简介 125

5.2 使用Spring Cloud Stream构建消息通信系统 126

5.2.1 Spring Cloud Stream基本架构 126

5.2.2 Spring Cloud Stream中的Binder组件 130

5.2.3 使用Source组件实现消息发布者 135

5.2.4 使用@StreamListener注解实现消息消费者 137

5.3 引入Reactive Spring Cloud Stream实现响应式 消息通信系统 139

5.3.1 Reactive Spring Cloud Stream组件 139

5.3.2 Reactive Spring Cloud Stream示例 141

5.4 本章小结 147

第6章 构建响应式微服务架构 148

6.1 使用Spring Cloud创建响应式微服务架构 148

6.1.1 服务治理 149

6.1.2 负载均衡 154

6.1.3 服务容错 161

6.1.4 服务网关 166

6.1.5 服务配置 173

6.1.6 服务监控 177

6.2 使用WebClient实现响应式服务调用 182

6.2.1 创建和配置WebClient 182

6.2.2 使用WebClient访问服务 183

6.3 本章小结 187

第7章 测试响应式微服务架构 188

7.1 初始化测试环境 189

7.1.1 引入spring-boot-starter-test组件 189

7.1.2 解析基础类测试注解 190

7.1.3 编写第一个测试用例 191

7.2 测试Reactor组件 192

7.3 测试响应式Repository层组件 194

7.3.1 测试内嵌式Mongodb 194

7.3.2 测试真实MongoDB 197

7.4 测试响应式Service层组件 199

7.5 测试响应式Controller层组件 201

7.6 本章小结 204

第8章 响应式微服务架构演进案例分析 205

8.1 PrescriptionSystem案例简介 205

8.2 传统微服务架构实现案例 207

8.2.1 构建基础设施类服务 207

8.2.2 构建Medicine服务 213

8.2.3 构建Card服务 219

8.2.4 构建Prescription服务 224

8.3 响应式微服务架构演进案例 237

8.3.1 更新基础设施类服务 237

8.3.2 更新数据访问方式 241

8.3.3 更新事件通信方式 246

8.4 本章小结 266

参考文献 267

读者评论

  • 我想问一下这个下载资源是这本书的吗?

    cymeini发表于 2020/6/29 10:20:05

下载资源

图书类别

相关博文

  • Spring响应式微服务,面向未来Java技术栈

    Spring响应式微服务,面向未来Java技术栈

    管理员账号 2019-06-13

    随着以Dubbo、Spring Cloud 等框架为代表的分布式服务调用和治理工具的大行其道,以及以 Docker 、 Kubernetes 等容器技术的日渐成熟,微服务架构毫无疑问是近年来最热门的一种服务化架构模式。 微服务相比...

    管理员账号 2019-06-13
    997 0 0 0

相关图书

深入集群:大型数据中心资源调度与管理

李雨前 (作者)

本书内容聚焦资源侧:集群调度和管理,非一般性的应用集群调度和管理。尽管按集群调度和集群管理两大部分来进行内容组织,实质上这两部分是一体的。集群管理是为了保障集群...

¥89.00

Netty源码剖析与应用

刘耀林 (作者)

Netty涉及多线程技术、复杂数据结构与内存管理模型,它运用了各种设计模式及一些TCP的底层技术。本书对这些难点一一进行攻破,让读者能快速掌握相关知识。 本书...

¥62.30

架构解密:从分布式到微服务(第2版)

吴治辉 (作者)

微服务、云原生、Kubernetes、Service Mesh是分布式领域的热点技术,它们并不是凭空出现的,一定继承了某些“前辈”的优点。我们不仅要了解这些技术...

 

趣谈网络协议

刘超 (作者)

网络协议是每个程序员入门的必修课,但是完全掌握网络协议知识并进行实际应用却并非易事。在本书中,作者将结合自己从业多年的“泣血”经验,以通俗易懂、更加贴近日常生活...

¥108.00

大型系统应用架构实战:部署、容灾、性能优化

李彦超 郭东白 陈禹 谢松林 周志伟 桑植 (作者)

本书理论与实战相结合,以AliExpress 网站为基础,全面介绍大型系统的总体技术方案、全球区域化部署技术、全球网络调度技术、性能优化,以及SRE 在AliE...

 

Java微服务测试:基于Arquillian、Hoverfly、AssertJ、JUnit、Selenium与Mockito

Alex Soto Bueno, Jason Porter, Andy Gumbrecht (作者) 刘梦馨 (译者)

本书从实战出发,介绍微服务架构所带来的测试方面的挑战,以及如何利用新的技术来应对这些挑战。通过本书,读者可以学会如何编写微服务架构下的单元测试、组件测试、集成测...

¥89.00