Spring微服务实战(第2版)主要观点

计算机与互联网 [美] 约翰·卡内尔
简介: 一本为Java/Spring开发人员编写的微服务实战指南。

*文中代码字体版权说明

第1章

本章主要内容

・了解微服务架构

・了解企业采用微服务的原因

・使用Spring、Spring Boot和Spring Cloud来搭建微服务

・了解云的概念和基于云的计算模型

实现新架构不是一件容易的事情,它带来了许多挑战,如应用程序可伸缩性、服务发现、监控、分布式跟踪、安全性、管理等。本书将介绍Spring中的微服务世界,讲解如何应对所有这些挑战,并展示将微服务应用于业务应用程序的权衡。你将学习如何使用诸如Spring Cloud、Spring Boot、Swagger、Do-cker、Kubernetes、ELK(Elasticsearch、Logstash和Kibana)、Stack、Grafana、Prometheus等技术来构建微服务应用程序。

Spring Boot和Spring Cloud为Java开发人员提供了一条从构建传统的单体的Spring应用到构建可以部署在云端的微服务应用的平滑迁移路径。本书使用实际的例子、图表和描述性的文本,提供了如何实现微服务架构的更多细节。

最后,你将学习如何实现诸如客户端负载均衡、动态伸缩、分布式跟踪等技术和技巧,以使用Spring Boot和Spring Cloud创建灵活、新式和自主的基于微服务的业务应用程序。通过应用Kubernetes、Jenkins和Docker等技术,你还可以创建自己的构建/部署管道,以实现业务中的持续交付和集成。

软件架构是指建立软件组件之间的结构、操作和交互的所有基本部分。本书解释了如何创建一个微服务架构,该架构由松耦合的软件服务组成,这些软件服务执行少量定义良好的任务,并通过网络使用消息进行通信。我们首先考虑一下微服务和其他一些常见架构之间的区别。

一种常见的企业架构类型是多层或n层架构。通过这种设计,应用程序被划分为多个层,每个层都有自己的职责和功能,如用户界面(UI)、服务、数据、测试等。例如,当你创建应用程序时,你先为UI创建一个特定的项目或解决方案,然后为服务创建一个项目或解决方案,再为数据层创建一个项目或解决方案,以此类推。最后,你将拥有几个项目,将这些项目组合起来,创建一个完整的应用程序。对于大型企业系统,n层架构应用程序有许多优点,包括:

・n层架构应用程序提供了良好的关注点分离,使得人们可以分别考虑用户界面、数据和业务逻辑等领域;

・团队很容易在n层架构应用程序的不同组件上独立工作;

・因为这是一个易于理解的企业架构,所以为n层架构项目找到熟练的开发人员相对容易。

n层架构应用程序也有缺点,例如:

・当你想要进行更改时,必须停止并重新启动整个应用程序;

・消息往往在各层之间上下传递,这可能是低效的;

・一旦部署,重构一个大型的n层架构应用程序可能会很困难。

虽然我们在本书中讨论的一些主题与n层架构应用程序直接相关,但我们将更直接地关注微服务与另一种常见架构(通常称为单体架构)的区别。

许多中小型基于Web的应用程序都是使用单体架构风格构建的。在单体架构中,应用程序作为单个可部署的软件制品交付。所有用户界面、业务和数据库访问逻辑都打包到一个唯一的应用程序中,并部署到应用程序服务器。图1-1显示了这个应用程序的基本架构。

虽然应用程序可能是作为单个工作单元部署的,但经常会有多个开发团队在一个应用程序上工作。每个开发团队负责应用程序的不同部分,并且他们经常用自己的功能部件来服务特定的客户。例如,想象一个场景,我们有一个内部定制的客户关系管理(CRM)应用,它涉及多个团队之间的合作,包括UI/UX团队、客户团队、数据仓库团队以及金融从业者等。

版权:人民邮电出版社