23

腾讯云 API 3.0 网关的探索与思考

 3 years ago
source link: https://mp.weixin.qq.com/s/NxVIAxQw2ywKURdK4lpx9w
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一.API 网关的定义与职能

API网关是什么?

在日常工作中,我们听说过很多次网关这个名称,这里说的网关特指API网关。字面意思是指将所有API的调用统一接入API网关层,由网关层负责接入和输出。API网关是业务与用户联通的API入口,是所有服务的大门。

什么情况下需要API网关?

单体应用时代,在业务简单的时候,我们常常把功能都集中在一个应用中,但随着业务功能日益增多,将所有的功能集中在一个程序的时候,每更新一个功能模块,势必要更新整个程序。牵一发而动全身,系统将很难维护。

这个时候,微服务出现了。微服务有各自的发布、运维等功能,解决了单体应用的弊端。微服务化后就必须有统一的出入口,于是,API 网关就出现了。

API 网关很好的解决了微服务下调用、统一接入等问题,如下图所示: UzqIbai.jpg!mobile

有了API网关之后,各个API服务提供团队可以专注于自己的业务逻辑处理,而其他公共功能可以交给API网关。

API网关需要覆盖哪些功能?

首先做为一个网关,可以处理一些非业务的逻辑,比如安全,流控,请求路由等等,

其次能够管理API的全生命周期,包括创建、维护、发布、运行、下线等功能。

如下图所示: na2aYbV.png!mobile

二.腾讯云API网关

腾讯云每天有数亿的API请求,百万级的用户,数百款产品,为了提供更加安全,规范,易用,高可用的API服务,腾讯云API网关应运而生。

腾讯云API网关自2013年诞生以来,经过了1.0->2.0->3.0的迭代演变,1.0已经完全退出了历史舞台,2.0也在逐步退出历史的舞台,云API3.0网关(以下简称云API3.0)经历了2年多的发展,形成了一整套具备API生命周期管理,请求接入,业务聚合,安全可流控的API网关,已成为腾讯云的API标准。

云API的产品形态如图:

zUb6z2q.png!mobile

提供了控制台,SDK,命令行,小程序,API等多种接入方式,为Iaas,Paas,Saas以及平台服务提供了统一的对外体验。

云API包含了云API核心框架,云API管理系统和云API监控运营系统三大模块。

系统架构:

M3A3EnY.png!mobile

API核心框架承载着海量的流量输入输出,流控,协议转换,路由等,

API管理系统是业务录入接口,负责进行 API全生命周期管理和路由策略配置,

API监控运营系统提供了API各种运营数据以及 画像。

云API 3.0覆盖以下功能:

7VBjYj.jpg!mobile

1. 安全性

HTTPS 支持,保证 API 的安全通讯。有基础的抗DDos攻击的能力,采用安全可靠的认证方式,可使用 SecretId + SecretKey 的方式或者token的方式进行用户认证,支持V1,V3(TC3-HMAC-SHA256)多种签名方案,更加安全,支持内部调用和全程票据功能,进一步加强了安全性。

2. 接口规范

云API 3.0制定并落地了统一的接口规范,得到用户的一直好评。

云API 1.0,2.0没有统一的规范,接口定义百花齐放,比如有的接口使用匈牙利命名法,有的接口使用大小驼峰,有的接口使用全小写如resource_id,接口类型也是灵活可变,可以从int转成string,可返回可不返回,但是用户使用体验不统一,遇到很多问题,比如接口名理解门槛高,返回参数和文档不一致无所适从,业务不兼容修改参数造成存量用户调用失败等等,为此,云API 3.0的设计理念就是要充分保证用户的体验,制定了一整套统一的接口的标准规范,使得文档与接口行为必须严格一致,用户不需要根据不同的接口去理解和适配规则,充分保障用户的体验。

3. 开发者工具

云API 3.0提供了SDK 3.0,TCCLI,API explorer等开发者工具。

SDK 3.0目前包含Java、Python、Node.js、PHP、C++、GO 及 .NET 语言,还有其他一些语言也在开发中。SDK 3.0 实现了统一化,各个语言版本的 SDK 具备使用方法相同、接口调用方式相同、错误码和返回包格式,

TCCLI是管理腾讯云资源的统一工具,通过此工具,您可以快速轻松的调用腾讯云 API来管理您的腾讯云资源,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,能够以更多样的方式进行组合和重用。云API 3.0根据用户的反馈,在version:3.0.252.3之后推出了全新的2020版,新体验优化如下表,力争带给用户更好的体验。

A36Nzmz.png!mobile

特别推荐API explorer,它是一款自动化工具,目前已支持云服务器 CVM、私有网络 VPC、云硬盘 CBS 等  腾讯云产品  的 API 接口调用自动化。可实现自动生成 Java、Python、Node.js、PHP、GO 及 .NET 语言的 SDK 代码、在线调用、发送真实请求及签名串自动生成等功能,降低了 SDK 的使用难度。

三.收益

用户使用云API 3.0,可以带来哪些好处呢?

性能,低延迟:支持用户全地域就近接入云API,请求时延更低,可用性更高。支持内网域名,方便内部调用

安全性高

o签名v3(TC3-HMAC-SHA256):签名方法 v3 功能上覆盖了以前的签名方法 v1,安全性更高,支持更大的请求,支持post/json传输格式。

限频精准:限频进一步提升,精准的秒级请求过滤和子账号控制。

规范统一:让用户在使用腾讯云不同产品时具有标准化统一的体验。

开发工具丰富:

更规范的SDK 3.0,支持更多的编程语言。

新增API Explorer在线调试,SDK代码生成,有效降低使用门槛。

全新的TCCLI,提供更丰富的功能,更完备的信息。

文档质量高

更加丰富准确的示例

更完备的错误码信息

新增初级用户指导文档,降低上云门槛

更及时的更新频率

保持和接口功能的对齐

数据更丰富

API调用信息更加透明,支持按小时/天查询。

requestId贯穿全链路,定位问题更容易。

四. 目标和实现路径

云API以打造行业标杆作为目标,将从以下几个方向努力:

-云API的全面统一

由于历史原因,2.0,3.0的接口共存,2.0用户的体验不佳,业务和平台运维复杂。

现在腾讯内部均已使用云API3.0,且获得了不错的反馈和口碑,未来我们也建议使用云API2.0的用户逐步迁移到云API3.0。

-云API全面标准化

为了给用户更好的体验,云API制定了一系列的标准化规范。目前已经完成接口规范,sdk规范,文档规范,错误码规范,示例规范,上线下线规范,接口导入到处规范,内部调用规范,数据规范等等,

iuURviJ.png!mobile

还有更多的规范,比如时间规范化等都在逐步完善中。

- 产品优化

统一的云API对外平台,提供文档,错误码以及错误码解决方案的一站式服务。

统一的云API控制台,提供用户端的运营数据,监控等一系列能力。

五. 未来展望

云API目前专注服务于腾讯云,与云其他的平台协同,提供了一个标准规范的的API网关平台。但是其他场景也不断有接入的诉求,所以有计划扩展应用场景,也考虑走出去,赋能更多用户。

iqeAfiE.png!mobile

3qaAVza.jpg!mobile

2Y7r6zj.jpg!mobile

快手的另类抉择

IJZjyaF.jpg!mobile

腾讯的敏捷研发之战

VBjymiz.gif!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK