API网关的几点思考

API网关的几点思考:

1、规范
restful api、API文档、版本管理【V1.2.1】 url规范
URL、请求参数、响应、头部和查询请求\方法、状态码等;
数据的范围: 弹性
数据的输出格式:json
函数的范围:只读,get ,put ,head,options
函数输入格式,参数格式,类型定义,映射关系, 命名与标识
接口编写统一、一致性命名
swagger 2.0 编写向导化 ,接口文档自动化,文档详细
版本要向后兼容: 兼容添加参数
幂等性:多次操作不影响初次值
严格记录历史:维护更改日志、选择版本方案、编写升级指南

特别数据

性别、日期、大整数、大的浮点数、状态码

出错、问题信息的规范

返回状态码表示出错信息
向客户端返回详细的出错信息
需要返回意义不明确的信息:登陆错误,是邮箱不对,还是密码错误?
#状态码的约定
#https
#限制单位时间每个用户访问上限、限速、限流
#API断线重连
#热更新配置:网关配置

支持缓存、负载均衡

访问控制策略(AC)。

如果我们需要把资源的权限划分到一个很细的粒度,就不得不考虑用户以何种身份来访问受限的资源,选择基于访问控制列表(ACL)还是基于用户角色的访问控制(RBAC)或者其他访问控制策略。

消息推送;订阅

前台查询与后台读如何分离

# 非堵塞\异步

2、架构设计
服务路由、认证授权、超时处理、限流控制、熔断处理、日志记录、负载均衡、灰度发布
模拟、开发、测试、预生产环境、生产环境
管理端和客户端
WEB\移动端
生命周期管理:分析、创建(开发)、发布(操作、变更)、废弃下线等
KONG & ZUUL 2.0?

3、技术要求

性能:TPS(每秒事务处理能力)、QPS(每秒查询能力)

组件:

认证组件
该组件用于缓存后端API返回的数据,如果API开启了缓存网关首先会尝试从缓存中获取数据,数据过期或者没有命中缓存再调用后端服务查询数据。
鉴权组件
该组件用于鉴别客户端应用是否有权限访问当前API,客户端应用的权限可以通过API所属的分组或者直接通过需要访问的API授权。
流量管控、
限制API 的调用频率,避免因为并发量过高导致API服务提供方崩溃。
使用说明
1、用户通过组件配置页面可以现在API每分钟、每小时、每天的访问量,同时支持设置单个客户端应用所能占用的百分比。
2、用户可以选择基于全局缓存记录流量消耗情况,这样更精确,如果没有搭建全局缓存也可以基于本地内存记录流量,后者系统会根据用户设置的流量阈值除以网关节点数量进行流量控制。
缓存、
该组件用于缓存后端API返回的数据,如果API开启了缓存网关首先会尝试从缓存中获取数据,数据过期或者没有命中缓存再调用后端服务查询数据。
服务器路由
将网关收到的客户端应用的请求转发到后端服务提供方,支持协议转换、负载均衡等。
目前平台支持Restful和Webservice两种方式的服务注册和暴露,其它类型的协议可以通过自定义路由组件来实现。
日志组件;
该组件用于记录API的访问日志,包括每分钟的调用次数、平均响应时间、总流量、正确率等;监控中心的所有报表展示都基于该组件采集的数据汇总产生的,API创建的时候系统默认会绑定这个组件,用户也可以选择不收集监控数据。

API访问鉴权:JWT(java web token)

熔断插件

网关会自动根据API返回的状态码触发熔断,您可以设置多个异常状态码,如当API返回404或500时启动熔断。熔断启动后,API网关会跳过转发步骤,直接返回预设的正确内容,让前端服务不受影响。

熔断启动后,网关会周期性检测后端服务器是否恢复正常,若判定API已恢复正常,则网关重新启用API转发功能。

IP防火墙

网关会自动根据IP黑白名单拦截来自非法IP的请求,或者仅允许白名单中的IP访问相应的API。

流量控制

您可以限制不同用户的访问频次或总量,单位时间支持秒、分钟、小时、天。

运维监控

网关提供强大的API监控功能,让您实时了解API运行状态,一旦发现API或节点异常则产生告警并及时通知运维人员,减少由于服务不可用导致的损失。
API监控 & 报表

您可以通过实时的可视化的图表了解网关的运行情况,或者下载历史数据报表。统计内容包括网关的各个状态的请求数量、异常API列表、整体访问速度等情况。
##告警通知

当API或节点出现异常时,网关会自动通过邮件及API通知相关负责人,帮助您及早发现并解决问题。

支持集群部署

网关由系统控制台和若干网关节点组成,节点支持水平拓展,有效避免服务器单点故障等问题,提高系统的可用性。

##后端负载均衡

网关节点动态分配流量到后端业务服务器,降低后端服务器压力

动态服务注册

通过定期检查后端服务器的可用情况,智能识别可用后端、屏蔽不可用后端,减少服务器开销。

3、功能

人员权限管理、角色分组

基于工作空间,自定义成员的角色分组,为每个角色分配不同的权限,能够限制同一位成员在不同工作空间中所拥有的权限。
精细化的权限管理,通过自定义不同的角色分组,可以设置不同成员所允许操作的模块。

例如:

· 运维人员负责监控与告警的读写操作,接口和策略的只读操作;

· 开发人员负责各自接口项目的读写操作,插件的读写操作;

· 项目管理员拥有最高权限,可以对所有模块进行读写操。

配置管理

隔率机制

在微服务的模式下,应用之间的联系变得没那么强烈,理想中任何一个应用超过负载或是挂掉了,都不应该去影响到其他应用。

重试机制

重试的场景分为三种:

okToRetryOnConnectErrors:只重试网络错误
okToRetryOnAllErrors:重试所有错误
OkToRetryOnAllOperations:重试所有操作(这里不太理解,猜测是 GET/POST 等请求都会重试)

重试的次数有两种:

MaxAutoRetries:每个节点的最大重试次数
MaxAutoRetriesNextServer:更换节点重试的最大次数

API 安全

抗攻击,DDOS,CC攻击

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值