一种用于构建应用的架构方案,是松散耦合的分布式架构框架;一批独立运行的服务共同构建起系统,每个服务独自运行,通过特定的机制进行通信,例如 REST(REpresentational State Transfer:表现层状态转移)API、RPC;单独服务的更改不会影响整个应用,开发团队能够快速构建应用的新组件,以满足不断变化的业务需求。
有助于更好实现 DevOps 的技术,并让持续集成和持续交付(CI/CD)更加顺畅、容易实现。
简介
特点
- 针对特定服务发布,影响小,风险小,成本低
- 频繁发布版本,快速持续迭代
-
优势
开发周期短
- 高度可扩展
- 出色的弹性
- 易于部署
- 易于访问
-
模块
API 网关
API 网关是一个服务器,是系统的单入口点,它类似于面向对象设计模式中的门面(Facade)模式;API 网关封装了内部系统架构,并针对每个客户端提供一个定制 API;它还可用于认证、监控、负载均衡、缓存和静态响应处理。
API 网关负责请求路由、组合和协议转换:所有客户端请求首先要通过 API 网关,之后请求被路由到适当的服务;API 网关通常会通过调用多个微服务来处理一个请求并聚合结果,它可以在 Web 协议(如 HTTP 和 WebSocket)和用于内部的非 Web 友好协议之间进行转换。技术选择
平台要求:支持异步、非阻塞 I/O
在 JVM 上,可以使用基于
NIO
的框架- 非 JVM 可以使用
Node.js
-
编程模型
传统的异步回调方式来编写 API 组合代码会很快陷入回调地狱,代码将会变得杂乱、难以理解并且容易出错;想要构建简单而高效的 API 网关,更好的方式是使用响应式方法以声明式方式去编写 API 网关代码
Future&CompletableFuture(Java8)
- Promise(ES6)
- RxJS(JavaScript)
服务调用
基于微服务的应用是一个分布式系统,必须使用进程间(inter-process)通信机制,系统通常会同时使用异步和同步两种方式,甚至可以为每种方式应用多个实现;因此,API 网关需要支持各种通信机制。服务发现
局部故障
注册发现
配置管理
网关入口
部署
可以说
Kubernetes
、Docker
这些技术就是为微服务而生的
表现层(Presentation Layer,PL)
处理 HTTP 请求并实现(REST)API 或基于 HTML 的 Web UI 组件