微服务宏观把控

架构演进过程

  1. 单体应用架构模式

  2. 单体应用优化架构模式

  3. ESB 企业总线架构模式

    SOA 架构主要针对企业级、采用 ESB 服务(ESB企业服务总线),非常笨重,需要序列化和反序列化,采用 XML 格式传输。ESB 也可以说是传统中间件技术与 XML、Web Service 等技术相互结合的产物。

  4. 微服务架构模式

    微服务架构主要用于互联网公司,轻量级、小巧、独立运行,基于 Http、REST、JSON 格式传输。

单体架构的缺点

  • 复杂性逐渐变高

  • 技术债务逐渐上升

  • 部署速度逐渐变慢

  • 阻碍技术创新

  • 无法按需伸缩

什么是微服务

Martin Fowler:简而言之,微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统。其中每个小型服务都运行在自己的进程中,并经常采用 HTTP 资源 API 这样轻量的机制来相互通信。这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务我们仅做最低限度的集中管理(也就是去中心化)。

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务于服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESRful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免同一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。

微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

微服务架构风格特点

  • 服务组件化

  • 服务围绕业务

  • 产品开发模式

  • 轻量级通信机制

    REST API 或者是 RPC

  • 去中心化处理

  • 去中心化数据设计

  • 故障处理设计

  • 演进式设计

  • 基础设施自动化

微服务的优点与挑战

优点

  • 开发简单

    易于开发和维护。

  • 技术栈灵活

    技术栈不受限制。

  • 服务独立

    启动较快,局部修改容易部署。

  • 按需扩容

    按需伸缩。

  • DevOps

    开发要参与运维工作。

挑战

  • 运维复杂

    对运维要求较高,也需要开发人员在一定程度上参与其中。

  • 数据一致性问题

  • 分布式的复杂性

  • 接口调整成本高

  • 集成测试复杂

  • 重复代码

  • 监控困难

微服务设计原则

  • 单一职责原则

  • 服务自治原则

  • 轻量级通信原则

  • 接口明确原则

Last updated