每天响应数亿次请求,腾讯云如何提供高可用API服务?

每天响应数亿次请求,腾讯云如何提供高可用API服务? https://mp.weixin.qq.com/s/OPwlHcqkaTT_gcwHfr5Shw

李阳 云加社区 2020-09-16

 导语 | 微服务时代,每个服务有各自的发布、运维功能,服务的调用和接入需要依赖一个统一的出入口,那就是 API 网关。API 网关是业务与用户联通的 API 入口,是所有服务的大门。文本将介绍腾讯云 API 3.0 网关的探索和思考,希望与大家一同交流。文章作者:李阳,腾讯云产品研发工程师。

一、API 网关的定义与职能



1. API网关是什么?
在日常工作中,我们经常会听到网关这个名称,这里说的网关特指 API 网关。字面意思是指将所有 API 的调用统一接入 API 网关层,由网关层负责接入和输出。
API 网关是业务与用户联通的 API 入口,是所有服务的大门。
2. 什么情况下需要API网关?
单体应用时代,在业务简单的时候,我们常常把功能都集中在一个应用中。但随着业务功能日益增多,将所有的功能集中在一个程序的时候,每更新一个功能模块,势必要更新整个程序,牵一发而动全身,系统将很难维护。
这个时候,微服务出现了。微服务有各自的发布、运维等功能,解决了单体应用的弊端。微服务化后就必须有统一的出入口,于是,API 网关就出现了。
API 网关很好的解决了微服务下调用、统一接入等问题,如下图所示:

 有了 API 网关之后,各个 API 服务提供团队可以专注于自己的业务逻辑处理,而其他公共功能可以交给API网关。
3. API 网关需要覆盖哪些功能?
首先做为一个网关,可以处理一些非业务的逻辑,比如安全,流控,请求路由等等。其次能够管理API的全生命周期,包括创建、维护、发布、运行、下线等功能。如下图所示:

二、腾讯云 API 3.0



腾讯云每天有数亿的 API 请求,百万级的用户,数百款产品,为了提供更加安全,规范,易用,高可用的 API 服务,腾讯云 API 应运而生。
腾讯云 API 自 2013 年诞生以来,经过了 1.0->2.0->3.0 的迭代演变,1.0 已经完全退出了历史舞台,2.0 也在逐步退出历史的舞台,腾讯云 API 3.0 (以下简称云API 3.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 的设计理念就是要充分保证用户的体验,制定了一整套统一的接口的标准规范,使得文档与接口行为必须严格一致,用户不需要根据不同的接口去理解和适配规则,充分保障用户的体验。

 
 

 

原文地址:https://www.cnblogs.com/rsapaper/p/13677948.html