通过 API 对外提供数据服务是大部分企业中比较常见的数据应用方式,对于 API 平台管理者、开发者和调用者来说,API 的调用性能、安全性和稳定性是在平台选型时最需要考虑的三个因素。
袋鼠云API开发及管理平台【数栈-数据服务 DataAPI】通过多种手段标准化管控服务,可完成从 API 创建、发布、申请/审批、调用的全生命周期管控,至今已经服务于300+客户。本文将为大家分享 DataAPI 是如何实现这三方面保障的。
DataAPI 的调用性能
在数据库和网络状况良好的情况下,DataAPI 目前的 API 调用性能在 5k QPS 时单次调用耗时最小可在 30-80ms 内。近期平台不仅从多个后端调用链路环节做了优化,也在产品层支持了一系列的功能,通过性能可观测、可配置等方式进行了全面的性能提升。
调用结果缓存
API 支持开启数据缓存,可选择用 HBase/Redis 存储缓存结果,在缓存失效策略上,DataAPI 采用 LFU(最不经常使用页置换算法),根据数据更新频率可自定义缓存清理周期与时间。
针对源数据更新频率不高,且存在多次相同输入参数重复查询的情况,开启缓存可缩短调用链路,显著降低调用耗时。
服务编排
复杂查询逻辑的实现可用带 Java/Python 函数的服务编排代替 SQL 来完成,以提升查询效率。
入参格式校验
对于一些有明显格式规则的输入参数,例如手机号、身份证号等,入参内容如果不满足相应格式要求则会导致一定无法正确返回结果。
因此我们可以为高并发 API 的这些参数配置正则校验规则,在数据库执行查询语句前由 Gateway 先进行内容校验,若不满足格式要求则直接返回查询失败,减少无效查询。
调用链路耗时分析
创建 API 的测试调用环节,可通过调用分析查看 API 调用过程所经过的环节、执行内容,以及每条执行内容的耗时瀑布图,用户可直观地看到性能损耗的关键点,以便快速调整。
例如 Server 端的数据解密、行级权限等校验耗时整体明显增加时,可能是 Server 资源到了瓶颈,可进一步排查 Server 端的负载;数据源查询耗时增加则可能是当前数据源查询并发变高。
DataAPI 的安全性
安全层面,DataAPI 从开发及调用两个层面进行了全方位的保障。
开发安全
● 服务分组
重要 API 在发生逻辑变更时,可以通过服务分组来测试新逻辑的可靠性,通过类似 AB测试的方式将可控比例范围内的流量导向新逻辑,出现问题时立即调整分流比例切换回原逻辑,能够在用户无感知的情况下最大程度降低对业务侧的影响。
● 角色权限管理
平台内置多个固定角色,区分了 API 查看、开发、申请调用权限、管理等功能的场景,能满足90%的用户需求。另外管理员可根据企业内部权限管控要求调整固定角色权限点或者新增自定义角色,灵活把控用户权限配置。
● 测试/生产项目隔离
对于 API 开发投产安全性要求一般的场景,流程一般是 API 创建-提交网关测试-发布,发布后可直接生产调用。如果企业内部对开发和生产环境进行了严格隔离,也可在开发环境完成开发测试后,通过绑定项目一键发布或导出导入式发布复制到生产环境。这种方式进一步规范了生产 API 的变更流程,减少了误操作发生率。
调用安全
● 调用申请审批
DataAPI 租户层的 API 市场汇集了各个项目发布的 API,实现 API 一定范围内的共享时也对 API 调用做了权限管控,用户在申请 API 调用权限时可控制其调用次数、周期及字段粒度的输出参数访问。对于某用户已经获得审批通过的 API,管理员也可在到期前进行权限回收。权限申请与审批操作方便、管理粒度细、灵活度高。
● 2种调用权限认证方式
· API-TOKEN / USER-TOKEN:每个用户的单个 API 一个 TOKEN / 每个用户的所有 API 一个 TOKEN,用户对某个 API 的调用权限申请通过时平台会提供 TOKEN 信息, TOKEN+API URL 即可正常调用 API,适用于对调用安全要求一般的场景
· AK/SK:通过密钥和加密签名的方式对 API 的调用进行认证,安全性保障更好
● 数据传输加密
· RSA+AES:支持对大量数据加解密的同时,保证了加解密速度,应用于一些对于用户个人信息或其他敏感信息加密的安全性要求较高的场景
· SM2+AES:SM2 在安全、速度等方面较 RSA 更优,可按企业内部要求选择数据传输加密方式
● 行级数据权限控制
用户可在数据源层面配置用户数据访问行粒度的权限,然后将这个权限控制应用到指定的 API,实现更精细化的权限管控。
● 异常调用的服务熔断
针对一些高并发调用的 API 可以配置熔断策略,当单位时长的异常调用达到一定的次数等条件时,为保证 API 整体服务不瘫痪,DataAPI 会对该 API 从 Gateway 处开启一定时长的熔断,经过熔断时长后探测服务健康状态并进行自动恢复。
● IP 地址安全组
IP 地址安全组中可划分 IP 黑名单与白名单,对于有调用 IP 约束的 API,确保不会在非法 IP 中被调用。
DataAPI 的稳定性
DataAPI 的部署包含2台web、2台Server 及2台Gateway(每台默认16c32g),版本升级可通过数栈自带的运维升级工具 EasyManager 实现快速平滑升级。当业务增长时,通过简单增加 Server 和 Gateway 部署台数即可稳定支持更高的调用并发。
DataAPI 的后续规划
接下来的日子 DataAPI 将继续深耕性能与安全层的优化,为企业业务提供更加稳定、高效且安全的支持。下面是我们的主要规划:
· 调用性能:全链路性能优化、数据库资源组划分保障重要业务调用
· 调用安全:数据输出动态脱敏,保护敏感信息