API GateWay服务网关
SOA团队 2020-03-16
API网关是一个服务器,也可以说是进入系统的唯一节点。这与面向对象设计模式中的Facade模式很像。API网关封装内部系统的架构,并且提供API给各个客户端。它还可能还具备授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等功能。
对于API网关,虽然网上有类似Netfix Zuul和Kong等的开源实现,但是本篇重点还是想再思考下网关应该具备的一些关键功能点。主要还是是服务接入,服务运维,服务运营,服务安全,服务管控治理等几个方面来思考下一个完整的API网关应该具备或后续扩展的能力。
■ 服务注册和服务接入能力
1. 直接将Java API接口发布为服务,即内部可以用Java API或RPC,跨模块访问走Rest接口服务注册到网关
2. 将已有的Rest API接口通过代理方式注册和接入
3. 将已有的Soap WS服务接入通过协议转换和数据格式转换后发布为Rest API服务接口
4. 将内部基于JMS或AMQP的消息适配后发布为Rest API服务接口
5. 提供服务自动化注册和接入的能力
■ 网关接入和发布核心功能
1. 协议转换:重点是支持SOAP,JMS,Rest间的协议转换
2. 数据转换:重点是支持XML和Json之间的报文格式转换能力(可选)
3. 负载均衡:注意是网关本身的负载均衡,可以部署多个API网关形成Cluster集群
4. 路由:基础能力,基本的服务路由支持
■ 服务安全
1. 基于Token的客户端访问控制和安全策略
2. 传输数据和报文加密,到服务端解密,需要在客户端有独立的SDK代理包
3. 基于Https的传输加密,客户端和服务端数字证书支持
4. 基于OAuth2.0的服务安全认证(授权码,客户端,密码模式等)
■ 服务管控和治理
1. 服务消息和日志监控能力,能够查看详细的服务消息日志,在取中心化的网关中需要单独处理
2. 服务流量控制,限流和熔断能力,可以设置不同的流量控制策略
3. 服务链的监控和跟踪,可以跟踪多个服务间的调用链,需要进一步规约Trace_id的使用
■ 面向开发者的自服务能力
1. 提供开发者门户和面向开发者的各种自服务能力
2. 提供API服务目录,服务详细说明,服务调用示例,在线测试等基础功能
3. 提供服务接入,服务订购关键自服务流程
4. 提供详细的服务开发案例代码,开发框架,本地SDK包,接入指南帮助文档等