实现新架构不是一件容易的事情,它带来了许多挑战,如应用程序可伸缩性、服务发现、监控、分布式跟踪、安全性、管理等。这本《Spring微服务实战》(第2版)可以帮你解决这些难题。
《Spring微服务实战》(第2版)是一本专为Java/Spring开发人员准备的微服务实战指南,书中将介绍Spring中的微服务世界,讲解如何应对所有这些挑战,并展示将微服务应用于业务应用程序的权衡。你将学习如何使用诸如Spring Cloud、Spring Boot、Swagger、Docker、Kubernetes、ELK(Elasticsearch、Logstash和Kibana)、Stack、Grafana、Prometheus等技术来构建微服务应用程序。
Spring微服务实战(第2版)
1.本书将O-stock项目拆解划分成众多微服务,让它们运行在各自的Docker容器中,实现持续集成/持续部署。 2.作者在十几年的计算机工作中一直致力于软件开发,使用不同的语言和不同类型的软件架构,一直保持着好奇心与从业初心,不断地研究并将新知识应用到开发中 3.微服务将逐渐成为单体应用程序的替代方案,它通过将大型代码库分解为小的、定义良好的部分,帮助解决代码的复杂问题
本书以一个名为O-stock的项目为主线,介绍云、微服务等概念以及Spring Boot和Spring Cloud等诸多Spring项目,并介绍如何将O-stock项目一步一步地从单体架构重构成微服务架构,进而将这个项目拆分成众多微服务,让它们运行在各自的Docker容器中,实现持续集成/持续部署,并最终自动部署到云环境(AWS)的 Kubernetes集群中。
针对在重构过程中遇到的各种微服务开发会面临的典型问题(包括开发、测试和运维等问题),本书介绍了解决这些问题的核心模式,以及在实战中如何选择特定Spring Cloud子项目或其他工具(如 KeyCloak、Zipkin、ELK技术栈)解决这些问题。本书适合拥有构建分布式应用程序的经验、拥有Spring的知识背景以及对学习构建基于微服务的应用程序感兴趣的Java开发人员阅读。对于希望使用微服务构建基于云的应用程序,以及希望了解如何将基于微服务的应用部署到云上的开发人员,本书也具有很好的学习参考价值。
选择Spring微服务实战(第2版)的四大理由
这本书讲什么
本书组织结构
本书包含12章和3个附录。
- 第1章介绍微服务架构为什么是构建应用程序,尤其是基于云的应用程序的重要相关方法。
- ?第2章介绍我们将使用的Spring云技术,并提供如何按照十二要素应用程序最佳实践构建云原生微服务的指南。本章还将介绍如何使用Spring Boot构建第一个基于REST的微服务。
- 第3章介绍如何通过架构师、应用工程师和DevOps工程师的角度来审视微服务,并提供在第一个基于REST的微服务中实现某些微服务最佳实践的指南。
- 第4章介绍容器,重点介绍容器和虚拟机之间的主要区别。本章还将介绍如何使用几个Maven插件和Docker命令来容器化微服务。
- 第5章介绍如何使用Spring Cloud Config管理微服务的配置。Spring Cloud Config可帮助确保服务的配置信息集中在单个存储库中,并且在所有服务实例中都是版本控制和可重复的。
- 第6章介绍服务发现路由模式。在这一章中,读者将学习如何使用Spring Cloud和Netflix的Eureka服务将服务的位置从客户的使用中抽象出来,还将学习如何使用Spring Cloud LoadBalancer和Netflix Feign客户端实现客户端负载均衡。
- 第 7 章讨论如何在一个或多个微服务实例关闭或处于降级状态时保护微服务的消费者。这一章将演示如何使用Spring Cloud和Resilience4j来实现断路器模式、后备模式和舱壁模式。
- 第8章介绍服务网关路由模式。使用Spring Cloud Gateway,我们将为我们的所有微服务建立一个单一入口点。我们将演示如何使用Spring Cloud Gateway的过滤器来构建可以针对流经服务网关的所有服务强制执行的策略。
- 第9章介绍如何使用Keycloak实现服务验证和授权。在本章中,我们将介绍OAuth2的一些基本原则,以及如何使用Spring和Keycloak来保护微服务架构。
- 第10章讨论如何使用Spring Cloud Stream和Apache Kafka将异步消息传递引入微服务。本章还介绍如何使用Redis进行缓存查找。
- 第11章介绍如何使用Spring Cloud Sleuth、Zipkin和ELK技术栈来实现日志关联、日志聚合和跟踪等常见的日志记录模式。
- 第12章是本书的基石项目。我们将使用在本书中构建的服务,将它们部署到亚马逊弹性Kubernetes服务(Amazon Elastic Kubernetes Service,Amazon EKS)。我们还将讨论如何使用Jenkins等工具自动构建和部署微服务。
- 附录A展示额外的微服务架构最佳实践,并解释Richardson成熟度模型。
- 附录B是OAuth2的补充资料。OAuth2是一种非常灵活的身份验证模型,这一附录简要介绍OAuth2可用于保护应用程序及其相应微服务的不同方式。
- 附录C介绍如何使用Spring Boot Actuator、Micrometer、Prometheus和Grafana等几种技术来监控Spring Boot微服务。
阅读线路
总体上看,开发人员应该阅读第1~3章,这3章提供了关于最佳实践和在Java 11中使用Spring Boot实现微服务的基本信息。对于Docker新手,我们强烈建议仔细阅读第4章,因为它简要介绍了全书中使用的所有Docker概念。
本书的其余部分讨论了几种微服务模式,如服务发现、分布式跟踪、API网关等。阅读本书的方法是按顺序阅读各章,并遵循各章的代码示例。
本书的目标读者
- 拥有构建分布式应用程序经验(1~3年)的Java开发人员。
- 拥有Spring的知识背景(1年以上)的人。
- 对学习构建基于微服务的应用程序感兴趣的人。
- 对使用微服务构建基于云的应用程序感兴趣的人。
- 想要知道Java和Spring是否是用于构建基于微服务的应用程序的相关技术的人。
- 有兴趣了解如何将基于微服务的应用部署到云上的人。
关于作者
约翰·卡内尔(John Carnell)是一名软件架构师,为Genesys Cloud领导开发团队。约翰每天大部分时间都在教Genesys Cloud客户和内部开发人员如何交付基于云的呼叫中心和电话解决方案,以及基于云开发的最佳实践。
他使用AWS平台亲手构建基于电话的微服务。他的日常工作是设计和构建跨Java、Clojure和Go等多种技术平台的微服务。此外,他是一位高产的演讲者和作家。他经常在当地的用户群体发表演讲,并且是“The No Fluff Just Stuff Software Symposium”的常规发言人。在过去的二十多年里,他是许多基于Java的技术书籍和行业刊物的作者、合作者和技术审稿人。约翰拥有马奎特大学(Marquette University)学士学位和威斯康星大学奥什科什分校(University of Wisconsion Oshkosh)工商管理硕士(MBA)学位。约翰是一位充满激情的技术专家,他不断探索新技术和编程语言。当他不演讲、不写作或者不编码的时候,他与妻子Janet和3个孩子(Christopher、Agatha和Jack)以及他的狗Vader生活在北卡罗来纳州的卡里。
伊拉里·华卢波·桑切斯(Illary Huaylupo Sánchez)是一名软件工程师,她毕业于森福泰克大学(Cenfotec University),并拥有哥斯达黎加拉丁美洲科技大学(Latin American University of Science and Technology)的IT管理MBA学位。她在软件开发方面的知识相当广泛,拥有使用Java和其他编程语言(如Python、C#、Node.js)以及其他技术(如各种数据库、框架、云服务等)的经验。目前,她在哥斯达黎加圣何塞的微软公司担任高级软件工程师,在那里她将大部分时间花在研究和开发各种流行的最新项目上。
|