首页 > 其他分享 >性能、安全和稳定,袋鼠云数据服务DataAPI为企业 API 保驾护航

性能、安全和稳定,袋鼠云数据服务DataAPI为企业 API 保驾护航

时间:2023-11-13 15:31:38浏览次数:36  
标签:数据服务 调用 用户 DataAPI TOKEN API 权限


通过 API 对外提供数据服务是大部分企业中比较常见的数据应用方式,对于 API 平台管理者、开发者和调用者来说,API 的调用性能、安全性和稳定性是在平台选型时最需要考虑的三个因素。

袋鼠云API开发及管理平台【数栈-数据服务 DataAPI】通过多种手段标准化管控服务,可完成从 API 创建、发布、申请/审批、调用的全生命周期管控,至今已经服务于300+客户。本文将为大家分享 DataAPI 是如何实现这三方面保障的。

DataAPI 的调用性能

在数据库和网络状况良好的情况下,DataAPI 目前的 API 调用性能在 5k QPS 时单次调用耗时最小可在 30-80ms 内。近期平台不仅从多个后端调用链路环节做了优化,也在产品层支持了一系列的功能,通过性能可观测、可配置等方式进行了全面的性能提升。

调用结果缓存

API 支持开启数据缓存,可选择用 HBase/Redis 存储缓存结果,在缓存失效策略上,DataAPI 采用 LFU(最不经常使用页置换算法),根据数据更新频率可自定义缓存清理周期与时间。

性能、安全和稳定,袋鼠云数据服务DataAPI为企业 API 保驾护航_Server

针对源数据更新频率不高,且存在多次相同输入参数重复查询的情况,开启缓存可缩短调用链路,显著降低调用耗时。

服务编排

复杂查询逻辑的实现可用带 Java/Python 函数的服务编排代替 SQL 来完成,以提升查询效率。

性能、安全和稳定,袋鼠云数据服务DataAPI为企业 API 保驾护航_API_02

入参格式校验

对于一些有明显格式规则的输入参数,例如手机号、身份证号等,入参内容如果不满足相应格式要求则会导致一定无法正确返回结果。

因此我们可以为高并发 API 的这些参数配置正则校验规则,在数据库执行查询语句前由 Gateway 先进行内容校验,若不满足格式要求则直接返回查询失败,减少无效查询。

性能、安全和稳定,袋鼠云数据服务DataAPI为企业 API 保驾护航_API_03

调用链路耗时分析

创建 API 的测试调用环节,可通过调用分析查看 API 调用过程所经过的环节、执行内容,以及每条执行内容的耗时瀑布图,用户可直观地看到性能损耗的关键点,以便快速调整。

例如 Server 端的数据解密、行级权限等校验耗时整体明显增加时,可能是 Server 资源到了瓶颈,可进一步排查 Server 端的负载;数据源查询耗时增加则可能是当前数据源查询并发变高。

性能、安全和稳定,袋鼠云数据服务DataAPI为企业 API 保驾护航_Server_04

DataAPI 的安全性

安全层面,DataAPI 从开发及调用两个层面进行了全方位的保障。

开发安全

● 服务分组

重要 API 在发生逻辑变更时,可以通过服务分组来测试新逻辑的可靠性,通过类似 AB测试的方式将可控比例范围内的流量导向新逻辑,出现问题时立即调整分流比例切换回原逻辑,能够在用户无感知的情况下最大程度降低对业务侧的影响。

性能、安全和稳定,袋鼠云数据服务DataAPI为企业 API 保驾护航_IP_05

● 角色权限管理

平台内置多个固定角色,区分了 API 查看、开发、申请调用权限、管理等功能的场景,能满足90%的用户需求。另外管理员可根据企业内部权限管控要求调整固定角色权限点或者新增自定义角色,灵活把控用户权限配置。

性能、安全和稳定,袋鼠云数据服务DataAPI为企业 API 保驾护航_服务器软件_06

● 测试/生产项目隔离

对于 API 开发投产安全性要求一般的场景,流程一般是 API 创建-提交网关测试-发布,发布后可直接生产调用。如果企业内部对开发和生产环境进行了严格隔离,也可在开发环境完成开发测试后,通过绑定项目一键发布或导出导入式发布复制到生产环境。这种方式进一步规范了生产 API 的变更流程,减少了误操作发生率。

性能、安全和稳定,袋鼠云数据服务DataAPI为企业 API 保驾护航_大数据_07

调用安全

● 调用申请审批

DataAPI 租户层的 API 市场汇集了各个项目发布的 API,实现 API 一定范围内的共享时也对 API 调用做了权限管控,用户在申请 API 调用权限时可控制其调用次数、周期及字段粒度的输出参数访问。对于某用户已经获得审批通过的 API,管理员也可在到期前进行权限回收。权限申请与审批操作方便、管理粒度细、灵活度高。

性能、安全和稳定,袋鼠云数据服务DataAPI为企业 API 保驾护航_服务器软件_08

● 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,实现更精细化的权限管控。

性能、安全和稳定,袋鼠云数据服务DataAPI为企业 API 保驾护航_Server_09

● 异常调用的服务熔断

针对一些高并发调用的 API 可以配置熔断策略,当单位时长的异常调用达到一定的次数等条件时,为保证 API 整体服务不瘫痪,DataAPI 会对该 API 从 Gateway 处开启一定时长的熔断,经过熔断时长后探测服务健康状态并进行自动恢复。

性能、安全和稳定,袋鼠云数据服务DataAPI为企业 API 保驾护航_服务器软件_10

● IP 地址安全组

IP 地址安全组中可划分 IP 黑名单与白名单,对于有调用 IP 约束的 API,确保不会在非法 IP 中被调用。

DataAPI 的稳定性

DataAPI 的部署包含2台web、2台Server 及2台Gateway(每台默认16c32g),版本升级可通过数栈自带的运维升级工具 EasyManager 实现快速平滑升级。当业务增长时,通过简单增加 Server 和 Gateway 部署台数即可稳定支持更高的调用并发。

DataAPI 的后续规划

接下来的日子 DataAPI 将继续深耕性能与安全层的优化,为企业业务提供更加稳定、高效且安全的支持。下面是我们的主要规划:

· 调用性能:全链路性能优化、数据库资源组划分保障重要业务调用

· 调用安全:数据输出动态脱敏,保护敏感信息


标签:数据服务,调用,用户,DataAPI,TOKEN,API,权限
From: https://blog.51cto.com/u_15137832/8344983

相关文章

  • 个微协议开发/微信个人号二次开发/ipad协议/api接口
    E云管家,是完整的第三方服务平台,并基于IPAD协议8.0.37开发出的最新个微API服务框架。你可以通过API实现个性化微信功能(例云发单助手、社群小助手、客服系统、机器人等),用来自动管理微信消息。用户仅可一次对接,完善所有功能。可实现分布式部署,批量管理服务器。如果您不想自己部......
  • fastapi 的 TestClient 的 delete 方法如何传递请求体?
    在FastAPI的TestClient中,delete方法通常不适用于传递请求体(payload)。DELETE请求通常不允许发送请求体。不过,根据HTTP规范,您可以通过在URL中包含查询参数或使用params参数来传递参数。以下是使用FastAPI的TestClient进行DELETE请求时传递参数的示例:fromfastapi.testclientimportT......
  • 关于 Gdiplus api 调用的bug解决以及注意事项
    1.加入空间命,以识别这是Gdiplus的类与函数2.调用前需调用   Gdiplus::GdiplusStartupInputgsi;ULONG_PTRpToken;Gdiplus::Statuss=Gdiplus::GdiplusStartup(&pToken,&gsi,NULL);用完Gdiplus函数后调用Gdiplus::GdiplusShutdown(pToken);如果不调用,各个Gdiplus的类将......
  • 从GPT定制到Turbo升级再到Assistants API,未来AI世界,你准备好了吗?
    引言在OpenAIDevDay发布会上,OpenAI再次震撼整个人工智能行业,为AI领域带来了重大的更新。CEOSamAltman宣布推出了定制版本的ChatGPT,这意味着用户现在可以根据自己的需求打造个性化的GPT,并分享至GPTStore。这一消息对于受AI影响广泛的各行各业都具有深远的意义。不仅如此,OpenA......
  • Kubernetes API Codec 解析
    概述在KubernetesAPI多版本和序列化这篇文章中,介绍了API多版本的功能和实现原理,其中Codec就是用来做序列化工作的,它主要用在两个地方:一个是通过HTTP协议跟客户端进行交互时,会对传输的数据进行序列化和反序列化,将字节流类型的数据转换成对应的API对象,或者是将API对象转换成对......
  • Kubernetes API Scheme 解析
    概述在KubernetesAPI多版本和序列化这篇文章中,介绍了API多版本的功能和实现原理,其中Scheme就是其实现原理的一项重要机制,在平时的开发中也经常会遇到,本篇文章就对其进行下分析。Scheme起到了一个类型(Type)注册中心的作用,在APIServer内部,全局只有一个Scheme实例,各个版本的API......
  • Kubernetes API 多版本和序列化
    前言三年前在分析KuberneteAPIServer时,就经常遇到两个东西,一个是Scheme,一个是Codec,当时对它们并不是很理解,也没有去细究,但是后来越来越多的能够遇见它们,尤其是在做KubernetesAPI相关的开发时,Scheme的出镜率很高,于是查了下资料才知道,原来他们跟Kubernetes的API多版本和序列化有......
  • kube-apiserver源码阅读
    kubernetes代码版本:v1.20.2个人认为kube-apiserver是k8s中最核心的组件,承上启下,无论是k8s其他组件还是是外部客户端都需要跟kube-apiserver组件进行交互,kube-apiserver负责接受请求并将数据持久化到后端存储(一般来说就是etcd.)。下面是个人关于kube-apiserver代码阅读的一些记......
  • 使用 AJAX、PHP 和服务器发送事件从 OpenAI 的 API 流式传输数据
    如何使用服务器发送事件(SSE)将数据从上述API流式传输到使用JavaScript和PHP的浏览器客户端?我已经研究这个问题好几个小时了,但我似乎无法弄清楚出了什么问题。作为参考,我尝试在这里调整解决方案:StreamDATAFromopenaiGPT-3APIusingPHP我的代码的其余部分或多或少与上......
  • 接口开放太麻烦?试试阿里云API网关吧
    前言我在多方合作时,系统间的交互是怎么做的?这篇文章中写过一些多方合作时接口的调用规则和例子,然而,接口开放所涉及的安全、权限、监控、流量控制等问题,可不是简简单单就可以解决的,这一般需要专业的开放平台来支撑。但为了开放几个接口就要做一个开放平台,实在是不合算。为此阿里云为......