小鹅通基于 TSE 云原生 API 网关的落地实践

导语

2023腾讯全球数字生态大会已于9月7-8日完美落幕,40+专场活动展示了腾讯最新的前沿技术、核心产品、解决方案。

微服务与消息队列专场,我们邀请到了小鹅通的基础架构组负责人黄徐震为我们带来了《小鹅通基于 TSE 云原生网关的落地实践》的精彩演讲。

本篇文章针对这场演讲做了详细的解读。主要介绍小鹅通在 TSE 云原生 API 网关上的一些建设和经验,以及在这个过程中遇到了哪些问题和挑战,基于 TSE 的解决方案又是如何在小鹅通进行落地的,以及如何利用云原生网关实现降本增效的经验分享。

关于小鹅通

小鹅通是一家以知识产品与用户为核心的技术服务商。提供知识产品与用户服务的私域运营工具,小鹅通创始至今已经服务百万家客户,最高同时在线人数达一千万,面向7.8亿终端用户提供2000万知识产品。

小鹅通现状分析

CVM 时代入口网关架构

在 CVM 时代,小鹅通的入口网关是比较典型的一个架构,由大量的公网负载 CLB 组成,由于不同的场景和策略,导致小鹅通的安全防护覆盖程度不完全并且也难以梳理;小鹅通的业务场景属于流量变化比较明显的,在 CLB/CVM 的架构下,难以及时进行扩缩容,有些业务需要进行2到3倍的资源冗余,以保证流量上涨的稳定性,就会造成小鹅通的资源利用率低和成本的增加;伴随着这个问题,小鹅通有上百个公网 CLB,CLB 背后有上千条的路由规则,和后端的业务服务形成多对多的非常复杂的矩阵,造成运维成本非常高。

容器时代入口网关架构

随着采用容器化部署,小鹅通目前大部分的流量在容器集群上,在过渡阶段以及部分业务情况仍然需要考虑 CVM 场景,在一开始的技术选型上采用的是公司内部技术栈比较熟悉的也具备高性能的 Openresty 来实现的 Ingress API 网关,但引入了新架构的同时也加剧了原先存在的问题;因为小鹅通的业务和基础设施都是在云上,这部分和云产品的集成度一般,在保障稳定性建设的同时,还需要投入比较多的精力开发集成各块云原生产品。

因此,需要设计更好的架构以满足小鹅通的业务需求,解决痛点问题。

解决方案

在前期的自研过程,小鹅通也参考和调研了许多优秀 API 网关的架构与设计,像 Kong、ApiSix、TSE、Higress 等等,结合本公司的实际业务场景,从稳定性与高可用、流量治理、自动化能力、资源利用率出发,认为以上几个点需要优先保障或解决。

小鹅通列出每个维度需要考虑的要素,进行综合性对比分析。

云原生时代入口网关架构

相比其他解决方案,TSE 云原生 API 网关满足多可用区容灾部署、多种接入方式统一管理能力、开箱即用的限流熔断、流量灰度流量镜像、安全防护能力。由于小鹅通业务服务流量波峰波谷的性质,TSE 云原生 API 网关同样集成支持按照弹性伸缩和定时伸缩,最终小鹅通在这些方案中选择了 TSE 作为小鹅通的统一 API 网关方案。

经过变化调整,小鹅通得到一个如下图所示的云原生入口网关架构,通过从网关到小鹅通的服务再到数据库中间件的多可用区部署,来保障稳定性与高可用能力;统一流量入口、集中访问控制和提高安全性;提升自动化能力以提高我们的运维效率;根据自动弹性扩缩容、按需按量的付费策略,资源复用,提高小鹅通的资源利用率以降低成本。

接下来看一下小鹅通使用 TSE 云原生 API 网关后的两个具体场景。

稳定性与高可用

采用 TSE 云原生 API 网关节点的多可用区部署,配合小鹅通后端业务集群和底层的基础设施、数据库中间件的多可用区部署,在极端场景下的节点机器、磁盘、网络故障发生时,能够做到自愈和快速恢复,借助多可用区容灾能力提高小鹅通整体的稳定性和高可用能力。

流量治理

流量治理是前面提到的比较头疼的部分。面向客户端,小鹅通有非常多的入口,有100多个公网负载、上千条的路由规则,需要对这些进行拆分和复用;面向后端,小鹅通有 K8s 集群、CVM、Serverless 多种运行环境,同时也有多套 K8s 集群,也需要降低这里的运维成本。

因此这里分为两个部分来说明,面向客户端,通过 TSE 云原生 API 网关来统一管控,按照业务场景和需求进行集群、分组拆分,例如集群级别的物理隔离、不同网络安全策略,进行多集群的横向拆分,在单个集群内,还可以进行分组,达到物理隔离和配置路由复用的目的,从而完成南北流量和东西流量的统一治理;面向后端,多个业务集群统一管控,支持K8s、CVM 等多种运行环境的接入,TSE 本身和TKE 集群的集成度比较高,所以管理多个 K8s 集群是一个比较轻松的事情。

方案迁移落地

在上一个部分,提到了 TSE 云原生 API 网关的架构和设计,能够解决小鹅通不少的问题和要求,但是实际如何迁移落地是一件至关重要的事情,小鹅通对整个迁移方案进行了几个阶段的任务拆解;

第一阶段:针对小鹅通自研的网关、开源网关以及云原生网关进行性能压测对比,从 CPU、内存、带宽、新建连接数、并发连接数等等这些基础关键性的指标进行详细对比,确保验证通过并且符合小鹅通的预期。

第二阶段:根据这些多维度的指标,评估契合小鹅通业务的容量方案,包括规格、节点数等。

第三阶段:结合小鹅通实际的业务场景和业务开发测试一起进行多个业务线、多次的服务压测、全链路压测,以保障服务质量,为小鹅通的客户使用体验负责。

第四阶段:通过 OpenAPI 全量同步100多个公网负载、上千条的路由规则,在这个过程中,梳理了大量的路由规则,确认涉及的功能以及影响范围,将不确定性的部分变为确定性。

最后一步:根据前面梳理的规则,按照域名、用途进行分阶段分批次的渐进式迁移,逐步将流量切割到 TSE 云原生 API 网关上,完成最终落地。

如何完成平稳流量切割

关于如何完成域名平稳流量切割到 TSE 云原生 API 网关,这里列举了两个简化的场景。

第一种场景,设置域名解析权重,请求解析到不同的后端实例完成分流,从1%逐步增加流量直到全量请求到 TSE 云原生 API 网关,再将域名解析切换到 TSE 云原生 API 网关。

第二种场景,域名直接解析到 TSE 云原生 API 网关,在网关的服务或者接口路由上配置灰度策略,将流量转发到后端对应的业务服务,逐步增加流量到100%,最后清除灰度策略;实际情况下会比上面提到的两种稍微复杂一些,小鹅通在域名解析和灰度策略上做了不少工作,来实现秒级流量切换和回退。

统一网关带来的收益

除了解决前面提到的核心问题,统一网关也带来了以下收益:

1、减少了90%以上的 CLB 实例数量,通过网关自身的弹性扩缩容配合我们业务的弹性伸缩,极大的降低了我们的资源成本和维护成本;在整个迁移的过程中,同时也梳理了大量的公网域名、路由、负载,进行了相应的合并删减。

2、充分利用 OpenAPI、CRD、插件的方式提高小鹅通的自动化能力,将一些动作和小鹅通的服务初始化的流程和其他环节打通,提高效率的同时也降低了出错的可能性。

3、借助 TSE 云原生 API 网关来统一治理小鹅通业务服务的入口流量,和 WAF、VPN、流量镜像、接口请求响应的审计分析,和小鹅通的安全团队运维团队一起提高访问控制与安全性。

总结

感谢 TSE 云原生 API 网关团队,在性能压测和容量评估阶段,提供了很多的数据参考和成本方案建议,同时在整个迁移过程也提供了非常多的技术支持和保障护航。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/259869.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TCP 核心工作机制

TCP 的核心知识:如何保证传输可靠 如何提高传输效率 如何保证传输可靠:确认应答机制 超时重传机制 如何提高传输效率:滑动窗口机制、流量控制机制、延时应答机制、捎带确认机制、拥塞控制机制 可靠机制 TCP的可靠性主要是通过 确认应答 …

多门店自助点餐+外卖二合一小程序系统源码:自助点餐+外卖配送 带完整搭建教程

互联网的普及和移动支付的便捷,餐饮行业也在经历着数字化转型。小编来给大家介绍一款多门店自助点餐外卖二合一小程序,带完整的搭建教程。 以下是部分代码示例: 系统特色功能一览: 1.多门店管理:支持一个平台管理多个…

华为OS与麒麟OS:华为自研操作系统的对决

导言 在移动操作系统领域,华为OS和麒麟OS代表了华为在自主研发方面的努力。本文将深入探讨这两个操作系统的特点、竞争关系以及它们在用户体验、生态系统建设等方面的差异。 1. 背景与起源 华为OS的诞生: 华为OS是华为公司为应对外部环境而自主…

【音视频 | AAC】AAC音频编码详解

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

网络基础【网线的制作、OSI七层模型、集线器、交换机介绍、路由器的配置】

目录 一.网线的制作 1.1.网线的标准 1.2.水晶头的做法 二.OSI七层模型、集线器、交换机介绍 集线器(Hub): 交换机(Switch): 三.路由器的配置 3.1.使用 3.2.常用的功能介绍 1、如何管理路由器 2、家…

SVN搭建指导

环境 centos 7.9 SVN安装方式一:yum 1.1 http服务 至今还没有搞定网页版,网页版需要搭建apache http服务。遇到如下问题: centos - svn: Could not open the requested SVN filesystem - Stack Overflow 在试了加777权限,加a…

Hal深入实战/perfetto-systrace实战/SurfaceFlinger合集-安卓framework开发实战开发

背景 hi,粉丝朋友们: 大家好! 下面来介绍一下新的framework专题halperfettosurafceflinger,这个专题主要就是分为3大块,但是彼此直接又是相互关联的。 比如surfaceflingre模块深入分析需要用到hal相关的模块&#xff…

Git报错x509: certificate signed by unknown authority

下载报错: Error downloading object: model-00001-of-00008.safetensors (ed3ac49): Smudge error: Error downloading model-00001-of-00008.safetensors (ed3ac4983f682a999b0e4b6f072aad294c4fd9a7e968e90835ba5c4b466d3c7c): LFS: Get https://cdn-lfs.huggin…

百度侯震宇:AI原生与大模型将从三个层面重构云计算

12月20日,2023百度云智大会智算大会在北京举办,大会以「大模型重构云计算,Cloud for AI」为主题,深度聚焦大模型引发的云计算变革。 百度智能云表示,为满足大模型落地需求,正在基于「云智一体」战略重构…

〖大前端 - 基础入门三大核心之JS篇(58)〗- 面向对象案例

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:哈哥撩编程,十余年工作经验, 从事过全栈研发、产品经理等工作,目前在公司…

饥荒Mod 开发(十七):手动保存和加载,无限重生

饥荒Mod 开发(十六):五格装备栏 饥荒Mod 开发(十八):Mod 添加配置选项 饥荒游戏会自动保存,本来是一个好的机制,但是当角色死亡的时候存档会被删除,又要从头开始,有可能一不小心玩了很久的档就直接给整没了…

C# NPOI导出dataset----Excel绘制Chart图表

仅限XLSX 2007以后版本(2007之前版本不支持) 1、判断文件夹是否存在,不存在则创建 //Application.StartupPath当前项目根目录 if (!Directory.Exists(Application.StartupPath "\Excel")) { …

用全志R128复刻自平衡赛车机器人,还实现了三种不同的操控方式

经常翻车的朋友们都知道,能在翻车后快速摆正车身的车才是好车。 就像动画《四驱兄弟》中展现的那样,在比赛中需要跟着赛车一起跑圈,而且赛车如果被撞翻还需要重新用手扶正,所浪费的时间非常影响比赛结果。 如果小豪和小烈可以拥有…

云原生扫盲篇

What 云原生加速了应用系统与基础设施资源之间的解耦,向下封装资源以便将复杂性下沉到基础设施层;向上支撑应用,让开发者更关注业务价值 云原生是一种构建和运行应用程序的方法,也是一套技术体系和方法论. Cloud 表示应用程序位于云中而不是传统的数据中心Native表示应用程序从…

基于STM32的DHT11温湿度传感器与LCD显示器的集成设计

在本文中,我们将详细介绍如何基于STM32微控制器实现DHT11温湿度传感器与LCD显示器的集成设计。我们将包括硬件连接、软件编程以及涉及的STM32库函数和相关知识。这个项目旨在帮助您理解如何使用STM32来读取DHT11温湿度传感器的数据,并将数据显示在LCD显示…

qt-C++笔记之使用QLabel和QPushButton实现一个bool状态的指示灯

qt-C笔记之使用QLabel和QPushButton实现一个bool状态的指示灯 code review! 文章目录 qt-C笔记之使用QLabel和QPushButton实现一个bool状态的指示灯1.QPushButton实现2.QLabel实现2.QLabel实现-对错符号 1.QPushButton实现 运行 代码 #include <QtWidgets>class Ind…

msvcp120.dll丢失的多种详细有效解决方法

在计算机使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“msvcp120.dll丢失”。那么&#xff0c;msvcp120.dll到底是什么&#xff1f;为什么会出现丢失的情况&#xff1f;丢失后会对电脑产生什么影响&#xff1f;本文将为您详细解答这些问题&#…

计算机网络 运输层下 | TCP概述 可靠传输 流量控制 拥塞控制 连接管理

文章目录 3 运输层主要协议 TCP 概述3.1 TCP概述 特点3.2 TCP连接RSVP资源预留协议 4 TCP可靠传输4.1 可靠传输工作原理4.1.1 停止等待协议4.1.2 连续ARQ协议 4.2 TCP可靠通信的具体实现4.2.1 以字节为单位的滑动窗口4.2.2 超时重传时间的选择4.2.3 选择确认SACK 5 TCP的流量控…

MAC苹果笔记本电脑如何彻底清理垃圾文件软件?

苹果电脑以其流畅的操作系统和卓越的性能而备受用户喜爱。然而&#xff0c;随着时间的推移&#xff0c;系统可能会积累大量垃圾文件&#xff0c;影响性能。本文将介绍苹果电脑怎么清理垃圾文件的各种方法&#xff0c;以提升系统运行效率。 CleanMyMac X是一款专业的Mac清理软件…

C#中HttpWebRequest的用法

前言 HttpWebRequest是一个常用的类&#xff0c;用于发送和接收HTTP请求。在C#中使用HttpWebRequest可以实现各种功能&#xff0c;包括发送GET和POST请求、处理Cookie、设置请求头、添加参数等。本文将深入介绍HttpWebRequest的用法&#xff0c;并给出一些常见的示例。 目录 前…