一种用于构建应用的架构方案,是松散耦合的分布式架构框架;一批独立运行的服务共同构建起系统,每个服务独自运行,通过特定的机制进行通信,例如 REST(REpresentational State Transfer:表现层状态转移)API、RPC;单独服务的更改不会影响整个应用,开发团队能够快速构建应用的新组件,以满足不断变化的业务需求。
有助于更好实现 DevOps 的技术,并让持续集成和持续交付(CI/CD)更加顺畅、容易实现。

简介

特点

  • 针对特定服务发布,影响小,风险小,成本低
  • 频繁发布版本,快速持续迭代
  • 低成本扩容,弹性伸缩

    优势

  • 开发周期短

  • 高度可扩展
  • 出色的弹性
  • 易于部署
  • 易于访问
  • 更加开放

    模块

    微服务架构
    微服务入门到部署 - 图2

    API 网关

    API 网关是一个服务器,是系统的单入口点,它类似于面向对象设计模式中的门面(Facade)模式;API 网关封装了内部系统架构,并针对每个客户端提供一个定制 API;它还可用于认证、监控、负载均衡、缓存和静态响应处理。
    API 网关负责请求路由、组合和协议转换:所有客户端请求首先要通过 API 网关,之后请求被路由到适当的服务;API 网关通常会通过调用多个微服务来处理一个请求并聚合结果,它可以在 Web 协议(如 HTTP 和 WebSocket)和用于内部的非 Web 友好协议之间进行转换。

    技术选择

    平台要求:支持异步、非阻塞 I/O

  • 在 JVM 上,可以使用基于 NIO 的框架

  • 非 JVM 可以使用 Node.js
  • 还可以选择使用 Nginx

    编程模型

    传统的异步回调方式来编写 API 组合代码会很快陷入回调地狱,代码将会变得杂乱、难以理解并且容易出错;想要构建简单而高效的 API 网关,更好的方式是使用响应式方法以声明式方式去编写 API 网关代码

  • Future&CompletableFuture(Java8)

  • Promise(ES6)
  • RxJS(JavaScript)

    服务调用

    基于微服务的应用是一个分布式系统,必须使用进程间(inter-process)通信机制,系统通常会同时使用异步和同步两种方式,甚至可以为每种方式应用多个实现;因此,API 网关需要支持各种通信机制。

    服务发现

局部故障

注册发现

微服务入门到部署 - 图3

配置管理

微服务入门到部署 - 图4

网关入口

微服务入门到部署 - 图5

部署

可以说KubernetesDocker这些技术就是为微服务而生的

典型的企业应用由至少三种不同类型的组件组成:

表现层(Presentation Layer,PL)

处理 HTTP 请求并实现(REST)API 或基于 HTML 的 Web UI 组件

业务逻辑层(Business Logic Layer,BLL)

作为应用核心,实现业务规则的组件

数据访问层(Data Access Layer,DAL)

数据访问基础设施组件,如数据库和消息代理

教程

《微服务:从入门到部署》