腾讯云API3.0网关的探索与思考

一.API 网关的定义与职能

API网关是什么?

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

什么情况下需要API网关?

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

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

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

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

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

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

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

如下图所示:

二.腾讯云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的产品形态如图:

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

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

系统架构:

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

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

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

云API 3.0覆盖以下功能:

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版,新体验优化如下表,力争带给用户更好的体验。

特别推荐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传输格式。

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

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

·开发工具丰富:

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

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

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

·文档质量高

o更加丰富准确的示例

o更完备的错误码信息

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

o更及时的更新频率

o保持和接口功能的对齐

·数据更丰富

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

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

四. 目标和实现路径

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

-云API的全面统一

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

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

-云API全面标准化

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

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

- 产品优化

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

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

五. 未来展望

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

腾讯的组织能力是什么

快手的另类抉择

腾讯的敏捷研发之战