什么是微服务

1 什么是微服务

根据James Lewis和Martin Fowler的说法,“微服务架构风格是一种将单个应用程序开发为一组小型服务的方法。每个微服务都可以独立运行,且微服务间的通信采用轻量级协议。这些服务围绕业务功能构建,并使用完全自动化的机制完成部署。”

这些服务可以用不同的编程语言编写并使用不同的数据存储技术。

2 微服务的特点

  • 基于REST暴露服务。
  • 都是小型可部署单位。
  • 服务必须可以发布在云端。

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

微服务拆分了应用程序并构建逻辑上独立的较小应用程序。例如,我们可以在Amazon AWS的帮助下以低的成本构建一个云应用程序。

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

3 微服务遵循的原则

微服务有以下原则:

  1. 单一职责原则
  2. 以业务驱动而非技术
  3. 隔离故障
  4. 架构自动化
  5. 独立部署


3.1 单一责任原则

单一职责原则规定,程序中的类或模块应仅承担一项责任。任何微服务一次都不能承担多个责任。

3.2 以业务驱动而非技术

微服务永远不会限制使用最适合于业务需求的技术栈或数据库,甚至不同微服务可以采用不同技术栈构建。

3.3 隔离故障

一个大型应用程序几乎不受单个模块故障的影响,因为服务可能会随时失败。所以,微服务架构中应该能够快速检测故障,甚至自动恢复故障。

3.4 架构自动化

架构自动化其实就是脚本化的过程。借助脚本化,我们可以将相同的配置应用于单个节点或数千个节点。也称为配置管理。

3.5 独立部署

微服务与平台无关。这意味着我们可以独立设计和部署它们,而不会影响其他服务。