书籍内容
本书详细阐述了与Spring Boot 2.0相关的基本解决方案,主要包括定制auto-configuration、Spring CLI和Actuator、Spring Cloud和配置操作、Spring Cloud Netflix和Service Discovery、构建Spring Boot RESTful微服务、利用Netflix Zuul 创建API网关、利用Feign客户端简化HTTP API、构建事件驱动和异步响应式系统、利用Hystrix和Turbine构建弹性系统、测试Spring Boot应用程序、微服务的容器化、API管理器、云部署(AWS)、生产服务监视和z佳实践等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
前言/序言
前 言 Pivotal最近发布了Spring Boot 2.0,以支持响应式编程和云计算。Spring Boot 2.0引入了诸多新特性和增强方案,本书也将对此进行逐一介绍。另外,本书还将引领读者深入理解Spring Boot和云微服务架构方面的知识。 当前,许多公司已经将Spring Boot作为企业应用程序开发的主要框架,对于采用微服务架构的REST API尤其如此。对于Spring Boot来说,我们并不需要使用外部企业服务器。本书旨在阐述本地云应用程序背后所采用的常见设计方案,以及如何在Spring Boot 2.0的Spring Cloud模块中对其予以实现。其间,作者还进一步总结了分布式设计日志记录机制和应用程序开发过程中的一些最佳实践方案。 本书共15章,涵盖了从基于微服务的云应用程序开发到微服务的部署(使用虚拟机或Docker等容器)的方方面面,包括如何使用Rest模板、Spring Cloud Netflix Feign实现微服务架构中服务间的通信;如何使用Spring Cloud Stream和Kafka构建一个事件驱动的弹性系统。这一部分内容还向读者展示了如何使用Hystrix和Turbine进行监视。最后,本书还将解释如何测试和构建API,并将其部署到容器(如Docker)以及云中(如AWS)。 适用读者 本书适用于各种层次的Java开发人员,他们希望学习Spring Boot 和Spring Cloud并将其作为基于企业分布式云的应用程序。因此,当采用基于Spring Boot 2.0和Spring Cloud的微服务架构时,本书对企业级Java和Spring开发人员来说十分有用,进而帮助他们深入理解本地云设计模式,以及微服务体系结构如何解决分布式应用程序中本地云基础设施中的常见设计问题,并可将本书中的示例结合自己的项目加以使用。在阅读本书之前,读者应具备Core Java、Spring Core Framework以及Spring Boot方面的基础知识。 本书内容 第1章整体介绍了Spring Boot 2.0及其新特性,包括某些核心组件,以及Spring Boot的某些改进措施。 第2章阐述了Spring Boot的自动配置特性,同时进一步解释了如何覆盖默认的自动配置机制。 第3章通过多种方式创建Spring Boot应用程序,涉及Spring Boot的Web接口、STS IDE以及Spring Boot CLI。本章深入讨论了Spring Boot CLI,以及如何在机器设备上安装Spring Boot CLI,并以此创建Spring Boot应用程序。另外,本章还将通过Actuator介绍Spring Boot的生产环境特性。 第4章讨论如何构建配置服务器,并向客户端应用程序提供Git存储库中的一组配置文件。在本章中,读者将学习到与Spring Cloud配置服务相关的知识,以及如何构建和使用配置服务。 第5章介绍Spring Cloud Netflix和基于Eureka的 Service Discovery。 第6章构建一个RESTful原子微服务,该服务使用Spring Cloud和Spring数据在内存数据库(HSQL或H2)上执行CRUD操作,以使该服务能够向Eureka服务器进行服务发现注册。 第7章探讨微服务通信的API网关模式,无论是来自UI组件还是来自内部服务调用。另外,还将使用Netflix API Zuul实现一个API网关,并了解如何在应用程序中设置Zuul代理。 第8章对Feign及其工作方式加以介绍,其中包含了针对业务需求相关的、详细的Feign扩展/定制方式,其中展示了自定义编码器、解码器、Hystrix和单元测试异常处理方面的参考实现。 第9章讲述了如何采用事件驱动架构并作为本地云应用程序构建事件驱动型微服务。对于分布式系统中的数据一致性处理,本章将考查一些重要的概念和主题。 第10章通过参考实现探讨断路器模式,其中涉及Netflix Hystrix库的使用,配置Turbine仪表盘以整合来自多项服务的Hystrix流。 第11章通过JUnit和Mockito讨论Spring Boot Services单元测试。其中,全部参考实现都将完成相应的单元测试。因此,本章内容更多地是整合了微服务的各种测试机制。 第12章介绍容器,并在Docker中运行第11章中构建的服务、编写Dockerfile、使用docker-compose编排容器,并在Kubernetes中提供编排示例。 第13章探讨分布式系统中的API管理,设置KONG开源API管理器、在KONG API管理器中配置前述章节中的API端点、针对API标准引入Swagger。最后,本章还将展示速率限制以及基于KONG的日志记录。 第14章介绍如何在AWS EC2实例中手动部署微服务,以及 CloudFormation脚本的应用方式。 第 15 章详细介绍构建分布式系统的一些最佳实践,并深入讨论生产环境下服务的性能监控方案。 软件环境和资源下载 本书内容可供读者独立阅读。但是,为了更好地理解书中的相关示例,读者需要安装Java 8。对此,可访问http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads- 2133151.html下载Java 8。此外,读者还可根据个人喜好安装相应的IDE,如Software Spring Tool Suite。读者可访问https://spring.io/tools/sts/all,并根据个人操作系统下载Spring Tool Suite(STS)的最新版本。Java 8和STS也适用于其他平台,如Windows、macOS和Linux。 读者可访问http://www.packtpub.com并通过个人账户下载示例代码文件。另外,在http://www.packtpub.com/support中注册成功后,我们将以电子邮件的方式将相关文件发与读者。 读者可根据下列步骤下载代码文件: (1)利用电子邮件地址和密码登录或注册我们的网站。 (2)选择SUPPORT选项卡。 (3)单击Code Downloads & Errata。 (4)在Serach文本框中输入书名。 当文件下载完毕后,确保使用下列最新版本软件解压文件夹: ? Windows系统下的WinRAR/7-Zip。 ? Mac系统下的Zipeg/iZip/UnRarX。 ? Linux系统下的7-Zip/PeaZip。 另外,读者还可访问GitHub获取本书的代码包,对应网址为https://github.com/ PacktPublishing/Mastering-Spring-Boot-2.0。此外,读者还可访问https://github.com/PacktPublishing/以了解丰富的代码和视频资源。 本书约定 本书通过不同的文本风格区分相应的信息类型。下面通过一些示例对此类风格以及具体含义的解释予以展示。 代码块如下所示: @RestController class HelloController { @GetMapping("/") String hello() { "Hello World!!!" } } 当某个代码块希望引起读者的足够重视时,一般会采用黑体表示,如下所示: org.springframework.boot spring-boot-starter-web 命令行输入或输出则采用下列方式表达: $ Spring run HelloController.groovy 图标表示较为重要的说明事项。 图标表示提示信息和操作技巧。 读者反馈和客户支持 欢迎读者对本书的建议或意见予以反馈。 对此,读者可发送邮件,并以书名作为邮件标题。若读者对本书有任何疑问,均可发送邮件,我们将竭诚为您服务。 若读者针对某项技术具有专家级的见解,抑或计划撰写书籍或完善某部著作的出版工作,则可访问。 勘误表 尽管我们在最大程度上做到尽善尽美,但错误依然在所难免。如果读者发现谬误之处,无论是文字错误抑或是代码错误,还望不吝赐教。 版权须知 一直以来,互联网上的版权问题从未间断,Packt出版社对此类问题异常重视。若读者在互联网上发现本书任意形式的副本,请告知网络地址或网站名称,我们将对此予以处理。关于盗版问题,读者可发送邮件。