微服务架构是一种面向服务的架构。在微服务架构中,存在大量的微服务。 通过组合所有微服务,它构建了一个大型服务。在微服务架构中,所有服务都相互通信。

此微服务教程将介绍如何使用Spring Cloud实现微服务。学习如何在微服务之间建立通信,如何实现负载平衡,微服务的放大和缩小。 我们还将学习使用Spring Cloud Config Server集中微服务的配置。使用Spring Cloud Sleuth和Zipkin实现Eureka Naming Server和分布式跟踪,以及使用Zipkin创建容错微服务。

我们的微服务教程讨论了微服务架构的基本功能以及相关示例,方便读者学习。

1. 微服务是什么?

定义: 微服务是可以协同工作的小型服务。

根据James Lewis和Martin Fowler的说法,“微服务架构风格是一种将单个应用程序开发为一组小服务的方法。每个微服务都运行其流程并与轻量级机制进行通信。这些服务围绕业务功能构建,并由以下人员独立开发 完全自动化的部署机制。”

这些服务的集中管理几乎没有,可以使用不同的编程语言编写并使用不同的数据存储技术。

微服务的特点:

  • 这些是REST公开的服务。
  • 这些是精心挑选的小型可部署单位。
  • 这些服务必须启用了云。

微服务定义了一种体系结构的方法,该方法将应用程序划分为实现业务需求的松散耦合服务池。它紧邻面向服务的体系结构(SOA)。 基于微服务的体系结构的最重要特征是,它可以执行大型复杂应用程序的连续交付。

微服务有助于分割应用程序并构建逻辑上独立的较小应用程序。 例如,可以在Amazon AWS的帮助下以构建一个云应用程序。

微服务是什么

在上图中,每个微服务都有自己的业务层和数据库。如果更改一项微服务,则不会影响其他服务。这些服务通过使用轻量级协议(例如HTTP或REST)或消息传递协议相互通信。

2. 微服务的原则

微服务有以下原则:

  • 单一责任原则 - 单一责任原则规定,程序中的类或模块应仅承担一项责任。任何微服务一次都不能承担多个责任。
  • 围绕业务领域建模 - 微服务不会限制自己接受适当的技术堆栈或数据库。堆栈或数据库最适合解决业务目的。
  • 隔离失败 - 大型应用程序几乎不受单个模块故障的影响。服务可能会随时失败。 因此,重要的是快速检测故障,如果可能的话,自动恢复故障。
  • 基础设施自动化 - 基础架构自动化是脚本环境的过程。 借助脚本环境,可以将相同的配置应用于单个节点或数千个节点。 也称为配置管理,脚本化基础结构和系统配置管理。
  • 独立部署 - 微服务与平台无关。因此可以独立设计和部署它们,而不会影响其他服务。

3. 面向读者

微服务教程为希望通过简单步骤学习微服务架构的软件专业人员和初学者。 本教程将提供有关微服务体系结构及其组件的深入知识,例如RabbitMQ Server,Eureka Naming Server,Zuul API Gateway,Ribbon,Hystrix和Zipkin Server。 完成本教程后,相信你可以独立使用Spring Cloud开发微服务服务。

4. 前提条件

在继续本教程之前,应该对Java,Spring和Spring Cloud Framework有基本的了解。 因为本教程主要使用Spring Cloud开发微服务。

教程目录