title | categories | tags | date | keywords | ||
---|---|---|---|---|---|---|
【Node】Node.js API gateway |
技术 |
|
2015-09-21 00:56:29 -0700 |
Nodejs, 前端, ES6 |
一个API网关,可以外部整合,安全化,管理 APIs。它是API消费者(客户端程序)和后端API提供者(API服务器)之间的中介。
功能 | API网关作用 |
---|---|
安全 | 在企业接入层作为第一个拦截器,建立用户标示前, 作为授权,认证,审计(AAA)的提供者或转发者 |
调停和转换 | 介导不同协议间,更换API 的payload(如 HTTP 头,HTTP 请求主体)为了不同的客户端API消费需求 |
基础服务质量 | 为API消费的客户端提供基础设施基本的功能如:分页,限制频率,缓存,分发保证,防火墙,等 |
监控和报表 | 通过监控APIs 和 注入元数据来报备如API 使用,健康度,等其他指标,来指导API实现服务级别协议(SLAs) |
聚合 | 通过动态调用和构建把各个底层业务的细粒度的微服务 API 组合成粗粒度混搭式APIs |
虚拟化 | 通过虚拟化API节点和作为API服务器节点实例的反向代理实现一个高可用,安全,可扩展的抽象层 |
- 1 随着越来越多的老旧系统,云服务,移动设备,甚至是物联网,API 网关的挑战性呈指数级增长
- 2 旧有API通过旧有服务被开发和暴露:
- 建立在异构的平台和语言,由拥有不同技术技能的不同的团队开发
- 在业务领域中没有被切分出离散原子性的边界,而是被构建成在一个业务领域的单块
- 开发的时候没有考虑后续扩展,仅仅限制在当前的访问需求被静态的定义着
- 并没有很好的文档化,内部随便的就发布了,通过口头交流
- 不同服务和API有着不同的数据协议和格式,在集成时都遇到很大问题
- 3 API网关的建设需要长期的磨合。因为它跨多个使用不同工具集和暴露不同风格接口的团队(开发者,运维,数据分析师)
API 网关 管道的4个层级:
- 传输层:监听传入的消息和解包他们为的请求对象。例如,接受HTTP请求,并产生HTTP响应(也可能是websocket)
- 远程处理层:解析请求对象为Node.js对象(作为接收机和方法被调用)
- 模型层:委派数据访问请求到连接器(connector)的实现
- 接口层:分发CRUD等数据资源方法到数据库驱动程序(如JDB)来调用后端系统。
- 客户端应用程序从的OAuth 2.0授权服务器请求一个访问令牌。
- 客户端应用程序发送包含访问令牌的OAuth的2.0资源服务器API请求。
- 资源服务器验证的访问令牌(包括过期,范围,客户ID和资源拥有者),以允许或拒绝访问。如果拒绝,则错误响应被发送到客户端应用程序并且流程终止。
- 指标Metrics中间件捕获API使用和更新指标。
- 限频中间件查看API请求,并检查基于各种约束的频率限制(如服务器健康度,客户端级别等)。如果超过的限制之一,一个错误响应发送到客户端应用程序并且流程终止。
- 代理中间件查找路由配置,以决定该请求是否应该在本地处理还是转发到远程API服务器。
- API服务器处理该请求,并产生一个响应。
- 接收到代理中间件响应,然后送回原来的客户端应用程序。