亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

本文主要是介绍亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2024年6月21日-22日,51CTO“WOT全球技术创新大会2024”在北京举办。火山引擎边缘计算架构师李志明受邀参与,以“边缘容器技术在泛CDN场景的应用和实践”为主题,与多位行业资深专家,共同探讨泛CDN行业技术架构以及云原生与边缘计算的发展和展望。

火山引擎边缘计算架构师李志明表示:为更好地解决传统泛CDN类业务运行中的问题,火山引擎边缘容器团队参考行业做法,结合实践经验,打造火山引擎边缘容器泛CDN场景技术解决方案,基于边缘容器实例产品,实现资源池统一、多业务混部,最终实现了系统稳定性增强、交付效率提升、方案标准化、多业务全隔离的效果,助力业务提升资源利用率,优化业务成本,实现高效、平稳运行。

泛CDN业务场景面临的挑战

随着互联网用户需求的演进、技术的快速发展以及环境的复杂变化,传统泛CDN类业务在实际运行过程中,面临着不同场景挑战:

  • 稳定性:传统CDN厂商往往采用一套CDN系统服务多种场景或业务的形态,一旦出现故障,会影响所有业务。

  • 交付效率:一套业务系统服务所有场景和客户类型,会导致产品功能交付周期长,现网稳定性问题修复周期长。

  • 异构部署:出于成本考虑,CDN厂商会部署非标准的、小型化设备,这会导致多种异构部署架构,维护成本变高。

  • 业务耦合:传统CDN厂商会将CDN、DCDN等泛CDN类业务混合部署在一台物理机上,会对业务稳定性带来影响。

图片

针对稳定性、交付效率的问题,行业内基本采用业务拆分隔离的解决方案,比如点播类、加速类、图片类搭建独立的物理集群,但这种解决方案成本高昂且无法复制使用。同时,面对异构部署和业务耦合问题,行业内采用容器化解决方案,通过容器打造标准化CDN部署环境和资源隔离,但普通的容器方案会导致内核争抢,影响业务。

火山引擎基于边缘容器实例场景化解决方案

为更好地解决上述问题,火山引擎边缘计算团队结合内部CDN、DCDN容器化实践,沉淀了面向泛CDN场景的创新容器技术解决方案,以下从运维、性能、资源管理、稳定性多个维度分享详细落地实践。

如何兼容物理机的运维方案?

传统CDN业务倾向于兼容物理机的运维模式,监控、故障恢复、发布等功能都基于物理机的模式进行建设,如果全部进行云原生化改造、系统改造,工作量非常大,也会带来稳定性问题。

在改造过程中,业务需要兼容以下能力,包括对ssh的远程登入、systemctl的组件部署、协议栈模块的部署方案和物理机内核,同时还需要对文件系统盘可配置、服务发现、K8s接口等能力的支持。

运维模式兼容之富容器方案

火山引擎边缘容器团队通过定制富容器镜像、定制专用虚拟化内核,提供服务发现能力、边缘托管K8s+边缘容器解决方案等方式解决传统泛CDN业务面临的一系列问题。

图片

一键化部署之网络编排能力

在面对业务提出减少网络运维复杂度需求时,火山引擎边缘容器团队通过提供网络编排产品化解决方案,来解决上云带来的运维复杂度增加问题:默认支持自定义VPC编排、Nat编排、提供具备按照集群灰度部署的LB4编排产品能力。

如何提供接近物理机转发性能?

泛CDN类业务对性能要求非常高,比如点播CDN业务,要求全虚拟化容器环境之后,vCPU性能能够达到接近物理机的CPU转发性能,同时支持大带宽的转发,在网卡带宽吞吐层面能够支持单实例跑满网卡能力。

在性能和吞吐层面,业务有明确需求:

  • 高性能:单核vCPU能力接近物理机(<5%)

  • 高吞吐:支持单实例打满网卡能力

高性能容器实例

火山引擎边缘容器团队基于高性能虚机构建高性能容器实例、基于高性能弹性网卡实现高吞吐能力,并且专门定制高吞吐的实例规格,最终达到性能相对于物理机差2%~5%;单实例吞吐可以跑到22G/40G带宽能力的效果。

图片

高性能负载均衡

面对大带宽流量,业务希望支持容器算力类型的LB4转发、容器内部获取到用户访问EIP、大带宽转发能力等。火山引擎边缘容器团队通过提供IPTarget的负载均衡能力、EIP透传的转发模式、三角转发方案等方式帮助解决转发问题。

图片

如何管理广域覆盖的节点?

泛CDN业务的资源零碎、覆盖广,容器化过程中,管理CDN分布式资源面临着许多技术挑战。在资源层面,不仅类型复杂,包括物理机、VM、异构等多种类型;还拥有分散的地域分布,涵盖省、地级市、海外等。在网络环境层面,也面临着弱网、丢包等复杂环境。上述情况都会导致管理广域覆盖的节点难度增加。

边缘自治、异构纳管、分池规划,火山引擎边缘容器团队打造ECI分布式资源纳管底座,针对断网、异构机器、资源类型、区域、规模等不同场景,分别提供解决方案。这一方案包括:通过边缘托管K8s方案实现断网时的边缘自治;针对异构的机器复用边缘托管K8s产品能力;根据资源类型、区域、规模等进行分布式K8s纳管。

图片

如何确保迁移过程中的业务稳定性?

把传统泛CDN场景业务搬到边缘计算的容器实例底座上,会面临很多稳定性问题。如何保障传统CDN业务不出现规模性故障,出现故障之后怎么及时发现和解决,这也是一大挑战。

系统化的稳定性保障

火山引擎边缘容器团队将所有的用户监控数据、业务监控数据、事件数据统一上报到质检中心或监控中心,并采取以下保障性举措:

  1. 构建百分百覆盖现场业务的监控告警体系,包括构建了稳定性监控大盘、业务异常告警及根因分析,同时建设了7*24小时的值班体系,保障及时响应现网发现的问题。

  2. 构建风控系统和哨兵巡检系统,确保及时发现现网故障,并且具备主动熔断能力,避免规模故障。

  • 风控系统:解决规模性问题。风控系统支持人工策略和自动熔断策略,当CDN和DCDN超过两个以上的集群Pod被删除或更新的时候,系统会主动进行熔断。这时需要通过开放权限才能进行下一步操作,避免人工或系统问题带来的规模性删除、规模性更新。

  • 哨兵巡检系统:支持主动发现用户容器,比如文件系统、内核、网络是否存在问题,如果出现问题,会及时触发告警,做到分钟级发现问题的能力。

故障发生后,火山引擎边缘容器团队提供两种工具确保快速恢复。

  • 快照恢复流工具系统:定时快照用户在线信息,包括算力、LB、部署集群相关的信息备份。当现网大规模容器被销毁或LB被异常更新的时候,可以根据历史快照,快速恢复用户算力和LB。

  • 回收站:当用户算力被删除的时候,为了避免IP被其他业务占用,支持通过回收站对历史拿到的资源信息进行快速恢复,IP资源不会被其他业务占用。

图片

边缘容器技术解决方案实践效果

通过火山引擎边缘容器技术解决方案,最终实现了基于容器构建多套CDN/DCDN系统,故障爆炸面缩减到1/N,同时在交付上实现了,部分场景从月发布优化到周发布进度,摆脱客户业务封禁影响。另外也通过边缘容器应用实现了方案的标准化,并最终实现多业务之间资源、网络、内核全隔离。

未来展望

未来,火山引擎边缘容器团队将持续提高用户体验,围绕K8s生态做好内外部业务上容器实例的不同场景解决方案;同时还将不断探索新场景,围绕AI推理/云游戏场景构建一键化部署解决方案。

欢迎加入边缘云微信技术交流群

图片

这篇关于亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090268

相关文章

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke