科技>计算机>编程语言
Spring响应式微服务:SpringBoot2+Spring5+SpringCloud实战

Spring响应式微服务:SpringBoot2+Spring5+SpringCloud实战"

作者:郑天民
ISBN:9787121363832
定价:¥75.0
字数:375千字
页数:276
出版时间:2019-05
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书主要包含响应式微服务架构实现过程中所应具备的技术体系和工程实践,围绕响应式编程模型和微服务架构的整合,我们将讨论响应式编程模型与Reactor框架、如何构建响应式RESTful服务、如何构建响应式数据访问组件、如何构建响应式消息通信组件、如何构建响应式微服务架构以及如何测试响应式微服务架构等核心主题,并基于这些核心主题给出具体的案例分析

前言

前 言 当下互联网行业飞速发展,快速的业务更新和产品迭代也给系统开发过程和模式带来新的挑战。在这个时代背景下,以Spring Cloud为代表的微服务架构实现技术应运而生。微服务架构是一种分布式系统,在业务、技术和组织等方面具备相应优势的同时,也不得不面临分布式系统所固有的问题。确保微服务系统的即时响应性和服务弹性是我们构建微服务架构的一大挑战。幸运的是,Spring 框架的开发人员已经创建了一个崭新的、支持响应式的项目版本,用来支持响应式微服务架构的设计和开发。通过构建响应式微服务架构,我们将在传统微服务架构的基础上提供即时响应性和服务弹性。 本书从响应式编程和微服务架构的基本概念开始并逐步展开。你将了解响应式的基本原理,以及Spring 5框架所集成的Project Reactor响应式开发框架。同时,你将进一步了解如何构建响应式RESTful服务、如何构建响应式数据访问组件、如何构建响应式消息通信组件、如何构建响应式微服务架构,以及如何测试响应式微服务架构等核心主题。所有这些内容都将应用于一个简明而又完整的示例项目,确保你能够将所学到的技能付诸于实践。 本书主要包含响应式微服务架构实现过程中所应具备的技术体系和工程实践,在组织结构上分如下8章内容。 第1章“直面响应式微服务架构”,作为全书的开篇,围绕响应式微服务架构的概念和构建方式展开讨论。通过对比传统的编程方法和响应式编程方法引出响应式编程的核心概念,并引用响应式宣言来阐述响应式系统所应具备的基本系统特性和维度。同时,本章在介绍传统微服务架构的基础上,分析了响应式微服务架构的设计原则,然后对响应式编程和微服务架构进行了整合。 第2章“响应式编程模型与Reactor框架”,本章全面介绍响应式编程模型并引出了响应式流规范,Reactor框架为我们提供了一整套实现该规范的具体实现。我们在介绍Reactor框架中Mono和Flux这两个核心组件的基础上,进一步提供了一系列强大的操作符来操作这些组件。本章最后还对Reactor框架中的背压机制做了简单介绍,Reactor框架提供了4种背压处理策略以满足不同场景的需求。 第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框架来实现响应式微服务架构。我们从服务治理、负载均衡、服务容错、服务网关、服务配置和服务监控共6大主题出发全面讨论了响应式微服务架构的核心组件及其实现方案。对于每个组件的介绍,我们都包含了使用该组件的具体方法以及相应的代码示例。同时,我们还专门使用一节内容来介绍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 ·VIII· Spring响应式微服务:Spring Boot 2+Spring 5+Spring Cloud实战 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 ·IX· 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.3.4 更新服务调用方式 .................................................................................................... 251 8.4 本章小结 ............................................................................................................................... 265 参考文献 ................................................................................................................................. 266

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个