企业级API网关设计参考
统一解决:认证、鉴权、安全、流量管控、缓存、服务路由,协议转换、服务编排、熔断、灰度发布、监控报警等
...自定义组件扩展
1)除产品内置的组件外,用户可以根据行业需求自定义组件,输出成Jar包,通过Admin上传发布即可。
2)网关根据API配置动态加载新的组件,无需重启服务器。
多维度的认证授权策略
1)网关提供多种认证模式,如:Token、Basic、IP地址等,只有通过认证的客户端才能进一步访问网关暴露的服务。
2)认证通过后再检测客户端是否有权限访问指定的API
......
流量控制策略
1)在APIGW Admin中配置API流量阈值,如:每秒、每分、每小时的请求次数限制,当流量超过阈值,新来的请求会被网关拦截,确保后端服务可以正常运行。
2)客户可以根据需求选择集群或者单网关节点的流量控制;
服务编排控制
1)服务编排:对于APP或者前端Web应用,存在一个页面需要集成多个后端服务数据的情况而其是远程连接,导致大部分的时间都消耗在建立连接上; 为此可以通过管理中心将多个后端服务编排成一个新的服务,由网关将每个后端服务的数据聚合后再返回给客户端,提高页面的响应速度。
......
服务转换与数据缓存
1)后端服务路由和协议转换:网关对外统一暴露的是Rest服务,但后端服务确实多样的,客户开发人员可以根据后端服务接口类型开发不同的路由转换组件。按照约定的格式打成Jar包,通过管理中心发布即可使用; 网关默认提供Rest风格的服务路由。
2)API数据缓存:对于查询类型且数据变化不频繁的API,适当的缓存设置可以有效降低后端服务的压力;管理人员可以根据API服务的特点配置是否需要缓存已经缓存更新的策略。 网关接收到请求后会判断API是否有设置缓存,如果有且缓存未过期网关直接从缓存提取数据并返回给客户端,如果已经过期则通过路由组件访问后端后在更新缓存;该机制对后端服务开发人员是透明的,只需要在管理中心设置即可生效。
API设计、在线测试、快速开发
1)产品提供了可视化的API设计功能,产品经理等非技术人员可以无障碍快速设计API,构建模拟数据,在无开发人员的介入情况完成前期设计对接;
2)服务调用者可以在线测试,服务提供方开发人员可以下载模板工程,填写相关的业务逻辑代码即可,系统自动提供了相关的脚手架代码。
......
基于DB快速创建API
1)支持连接各类数据源通过编写SQL快速创建API的能力,尤其是对于一些外购系统(无源码)可以直接通过DB开放API,高效、便捷、安全。
API监控告警
1)通过监控平台提供了API调用过程的各种统计报表,便于运维人员提前规避风险;
2)管理人员可以自定义各种报警规则,系统将自行监控并推送告警信息。
... ...服务超时和熔断处理
1)服务超时和熔断处理:网关对于稳定性和性能要求非常高,不能因为个别API响应缓慢或者无法提供服务导致整个网关堵塞。为此网关为所有注册的API提供了超时处理机制,管理员可以根据API的特点设置合理的超时时间,当响应超时网关直接返回超时异常或者API预设置的异常返回数据; 如果某个API服务连续多次请求无响应,系统会自动熔断对该API的请求,从而避免每次请求过来都需要触发超时和服务返回异常才返回客户端,当服务恢复后网关会自动恢复熔断链路。
功能点 | 功能点介绍 |
---|---|
认证 | 支持4种认证方式,包括:Baisc认证、JWT认证、微信小程序Token认证、NULL认证(放行) |
鉴权 | 支持2种授权方式,包括:基于接入应用进行授权、NULL授权(放行) |
微信小程序支持 | 对小程序类型的客户端应用进行了特殊处理,简化小程序对微信用户进行认证,后端服务只需要关系业务逻辑。 |
流量管控 | 支持2种流程管理,包括: 1、基于客户端应用进行流量管控,防止客户端恶意获取数据; 2、基于API的流量管理,保护上游服务,支持按天、小时、分钟、秒等多种纬度进行限流; 3、支持本地和分布式限流; |
缓存 | 缓存API后端服务返回的数据,降低后端服务压力。 |
安全防护 | 保护API的安全是API网关重任: 1、客户端身份认证; 2、只有授权的应用才能访问对应的API; 3、公私钥算法保护API接口调用和数据传输安全; 4、IP白名单、黑名单机制; 5、防重放; 6、通过组件二次开发可以扩展很多定制安全功能,如:设备id,地理位置、敏感数据二次检验等; |
服务路由 | 1、识别请求参数和路径转发上游API服务; 2、服务地址伪装,可将内部服务伪装成一个不易识别的地址暴露到公网; |
日志记录 | 默认以分钟纬度对API调用情况进行汇总记录,也支持配置第三方服务记录完整的API调用详细信息,方便自定义审计和统计。 |
服务注册和暴露 | 支持Http rest、Webservice服务注册和暴露。 |
协议转换 | 1、支持将Webservice服务转换成Restful对外提供服务; 2、引入脚本引擎,支持各类参数自定义转换; 3、扩展协议转换组件,实现更多类型的服务接入平台; |
负载均衡|心跳检测 | 支持网关内部负载均衡,用户可以选择注册代理和服务实例地址,网关通过心跳检测机制自动探测服务实例的可用性。 |
服务编排 | 1、提供WebIDE实现图形化的方式编辑服务流程; 2、将各种类型的异构服务以SOA的形式进行编排,替代原有ESB系统,更加高效、快捷; |
DB快速开发 | 对接各种数据源,无需应用快速生成新的API。 |
dubbo集成 | 无需编写代码,自动将dubbo转化为restful服务。 |
超时控制 | 通过API配置访问超时时间,超时后立即返回,避免工作线程长时间等等。 |
灰度发布 | 产品支持让指定部分客户端应用使用新版本API,其他应用继续使用以前的API,当新版本的API逐渐稳定后,所有用户能平滑过渡到新版本的API。使用灰度发布能够及早获得用户的意见反馈,完善产品功能,提升产品质量。让用户参与产品测试,加强与用户互动,降低产品升级所影响的用户范围。 |
熔断、自动恢复 | 后端服务N秒内连续X%调用出现超时或者异常,系统自动熔断该服务,M秒后尝试恢复链路;该机制可以有效避免无效等等。 |
动态配置更新 | 运行时变更API、分组、组件等配置,自动同步、及时生效。 |
API系统迁移 | 支持API以系统维度接入API网关,自动纪录API,让API系统迁移自动化。 |
高可用 | 产品支持企业级高可用部署,避免单点故障。 |
高性能 | 网关无状态,支持横向扩展,运行时弱依赖持久层,最大化提升网关整体性能。 |
分布式缓存(redis) | 当系统API缓存量大时,可使用redis集群提高系统的响应。 |
自定义组件开发 | 支持自定义组件开发,动态加载,在不中断网关服务的情况下重新加载配置和运行组件;企业可根据自身业务需求扩展更多组件。 |
自定义规则报警 | 支持自定义规则报警,采用短信、邮件等方式通知运维人员。 |
管理中心 | 1、服务注册、更新、删除、发布、历史版本切换、绑定组件、应用授权、在线测试、服务导入、导出、Swagger集成等; 2、组件管理,上传、编辑、发布组件等; 3、客户端应用管理,新建、编辑、删除、授权、导出文档等; 4、系统报警订阅、网关|监控中心|Redis|Zookeeper节点维护; 5、角色管理、用户管理、邮件系统设置、短信平台设置、黑白名单维护等; |
监控中心 | 1、API平均响应时间、调用次数、正确率、流量等多种纬度报表; 2、统计API被消费的情况; 3、查看API调用明细,包括详细入参信息和返回结果等; 4、从客户端应用的纬度统计其调用了哪些API,调用情况等; 5、熔断面板展示; 6、各类告警信息统计; |