每天响应数亿次请求,腾讯云如何提供高可用API服务?
每天响应数亿次请求,腾讯云如何提供高可用API服务? https://mp.weixin.qq.com/s/OPwlHcqkaTT_gcwHfr5Shw
导语 | 微服务时代,每个服务有各自的发布、运维功能,服务的调用和接入需要依赖一个统一的出入口,那就是 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 的设计理念就是要充分保证用户的体验,制定了一整套统一的接口的标准规范,使得文档与接口行为必须严格一致,用户不需要根据不同的接口去理解和适配规则,充分保障用户的体验。
每天响应数亿次请求,腾讯云如何提供高可用API服务?的更多相关文章
- 腾讯云部署keepalived高可用
使用背景: 通过调用python SDK在腾讯云手动部署keepalived高可用 部署环境 系统:centos7.3 Master:192.168.0.100 Slave:192.168.0.14 ...
- 腾讯云:ubuntu搭建 FTP 文件服务
搭建 FTP 文件服务 安装并启动 FTP 服务 任务时间:5min ~ 10min 安装 VSFTPD 使用 apt-get 安装 vsftpd: sudo apt-get install vsft ...
- 剑指Kubernetes 揭秘腾讯云的PaaS技术选型策略
1.前言 Kubernetes 很火,一大批互联网公司早已领先一步,搭建起专有的 PaaS平台,传统企业们看到的 Kubernetes的趋势,亦不甘落后,在试水的道上一路狂奔-- 虽然,Kuberne ...
- 国内云存储对比: 阿里云、腾讯云、Ucloud、首都在线
阿里云的数据存储<http://www.aliyun.com/product/rds/> RDS — 关系型数据库服务(Relational Database Service,简称RDS) ...
- 如何用腾讯云打造一款微视频APP
版权声明:本文由腾讯云原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/196 来源:腾云阁 https://www.qclo ...
- 磊哥测评之数据库SaaS篇:腾讯云控制台、DMC和小程序
本文由云+社区发表 作者:腾讯云数据库 随着云计算和数据库技术的发展,数据库正在变得越来越强大.数据库的性能如处理速度.对高并发的支持在节节攀升,同时分布式.实时的数据分析.兼容主流数据库等强大的性能 ...
- 如何优雅地使用腾讯云COS-.NET篇
如何优雅地使用腾讯云COS-.NET篇 代码下载地址 https://github.com/whuanle/txypx20190809 前提 创建子账号 打开 https://console.clou ...
- 腾讯云Redis全面升级,性能提升400%,可用性高达5个9
2022年6月,腾讯云Redis全新升级,发布高性能版本,单节点可提供50W+吞吐,性能是原生Redis的4倍.同时,腾讯云Redis推出全球复制功能,解决原生Redis诸多痛点问题,可用性升级高达9 ...
- 腾讯云TDSQL审计原理揭秘
版权声明:本文由孙勇福原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/244 来源:腾云阁 https://www.qclo ...
随机推荐
- NET 5 Session、Cookie和Cache的使用
1.Cookie public IConfiguration Configuration { get; } // This method gets called by the runtime. Use ...
- C#中搜索xsd文件中的某个数据源
步骤 1.打开***.xsd文件. 2.数据源之间的空白处,右键->属性. 3.在VS右侧会跳出一个属性窗口. 4.有个名称为DataSet的下拉框,所有的数据源名称都在其中,单击即可定位到所选 ...
- js中Tabs插件打开的标签页过多自动关闭
js方法 function addTab(ResourceID, ResourceName, Url) { if (Url != "" && Url != null ...
- 通过PHP代码将大量数据插入到Sqlite3
PHP代码 读入txt文件,并写入到sqlite数据库里 <?php date_default_timezone_set('PRC'); $pdo = new PDO('sqlite:db/qq ...
- mysql 5.7 主从复制搭建及原理
1. 主从复制搭建 1.1 环境准备 OS: Ubuntu 18.04 master: 192.168.0.3 slave: 192.168.0.6 1.2 安装依赖包 # Ubuntu apt-ge ...
- rtmp向IR601移植过程(无功能步骤,只有移植步骤)
1.main.c中添加头文件: #include "rtmp_sys.h" #include "log.h" #include "rtmp.h&quo ...
- msf ms17-010利用笔记
nmap -sV -Pn xxxxx 扫描端口and系统信息 use auxiliary/scanner/smb/smb_ms17_010 扫描模块 set Rhosts 扫描目标 use ex ...
- JavaDailyReports10_06
今日收获: 一.所有引用类型变量的初始化一定要使用new 关键字定义声明,空指针异常的错误原因可能是变量没有初始化导致的. 每一个类体的数据成员一定要在实例化的同时赋值,用一个实例化的类实现问题中最小 ...
- Java学习日报10.2
1 package random; 2 import java.util.*; 3 import java.math.*; 4 public class Com { 5 6 public static ...
- MySQL性能分析show profiles详解
前言 前几篇文章我们讲了什么是 MySQL 索引,explain分析SQL语句是否用到索引,以及索引的优化等一系列的文章,今天我们来讲讲Show profiles,看看SQL耗时到底出现在哪个环节. ...