全面揭秘!火山引擎边缘 IaaS 混合部署架构实践

news2024/11/14 13:57:54

2023年6月16日-17日 51CTO WOT全球技术创新大会在北京成功举办。在快速发展的数字化时代,云计算和边缘计算作为科技领域的两大核心驱动力,正引领着全球技术变革的潮流。为了探讨云时代基础设施在科技发展中的关键作用,推动边缘云行业的进一步创新与发展,会上,火山引擎边缘计算架构师郭少巍与多位行业资深专家,共同探讨边缘云行业技术架构以及云原生与边缘计算的发展和展望。

过去边缘计算主要关注基础设施的建设和优化,企业通过在各个地理位置部署边缘计算节点,实现数据的近场处理和响应速度的提升。这种边缘计算模式极大地加快了数据传输和处理的效率。然而,随着边缘云行业的不断发展,业务架构也在不断演进,如何在边缘场景下构建高效的基础设施服务成为了行业发展新课题。

火山引擎边缘计算架构师郭少巍认为:云原生技术提供了一种全新的方式,使得边缘计算IaaS服务具备了混合部署、弹性扩缩容、简单运维等能力。

在云时代基础设施的探索中,边缘IaaS混合部署架构和云原生边缘计算展现出了巨大的潜力和前景,云原生具有弹性伸缩,标准化部署和自动化运维等诸多优势。火山引擎边缘云团队选择拥抱云原生,并且在云原生架构下更加容易做到混合部署和统一编排的能力,使得边缘计算在小规模场景下落地云计算基础设施成为了可能。

火山引擎边缘云原生 IaaS 架构整体方案

火山引擎边缘 IaaS 云原生架构分为两部分:中心控制域和边缘计算资源域。

  • 中心控制域主要负责平台和网关接入,各个服务资源的下发和管理;

  • 边缘计算资源域承载真正的 Workload,并且在边缘弱网环境下可以完全实现边缘自治。

中心控制域拥有两个客户使用入口:分别是控制台和 OpenAPI,控制台和 OpenAPI 拥有相同的管控能力,客户可以根据需求来选择。另外火山引擎边缘 IaaS 云原生架构还具备中心资源编排和调度能力,其中编排服务包含计算、镜像、网络等诸多模块,调度服务负责全局调度能力和库存管理等能力。

边缘计算资源域主要分为两种角色:Master 节点和 Node 节点。Master 节点的数量为 1-N;Node 节点按需添加。边缘计算的底座是基于 Kubernetes 来构建的,Kubernetes 主要承担运维能力和资源的编排和扩展能力。

服务分层

通过分层的视角来剖析火山引擎边缘 IaaS 的架构:

  • 物理层:最底层是物理层,通过物理硬件提供硬件的接口和抽象,并且提供硬件辅助虚拟化等相关的能力

  • 操作系统:操作系统是对硬件的封装,为上层提供了各种系统调用能力,保障应用安全操作硬件

  • 容器运行时:通过将组件进行容器化,实现了组件的标准部署和资源隔离的能力

  • 资源调度:复用Kubernetes 的调度机制,实现了对不同资源的统一调度

  • 服务编排:通过对 Kubernetes 进行扩展,实现了不同资源的统一编排

  • veEN 服务:基于云原生底座,将计算、存储、网络等能力通过标准化的形式开放给客户使用

混合部署

如何在同一台物理机上同时运行云主机和容器?

以云主机为例,中心通过云边通道将资源下发到边缘集群,APIServer 接收到请求后,会调用 veEN API 做资源的校验,校验通过后会将资源存储到 DB 里。同时,veEN Controller 监听到资源的创建,会根据具体资源的定义生成对应的 Pod 对象,当 Pod 对象经过边缘调度调度到具体的 Node 上,会首先启动 veEN Monitor 服务,接下来会与 veEN Agent 服务建立连接,veEN 根据云主机具体的资源定义,调用 veEN Monitor 来启动具体的实例。当云主机实例启动后,veEN Agent 还会服务云主机状态的探活和上报,确保实例的正常运行。

此外,容器实例也是以Kubernetes Pod的维度进行调度和运行,容器实例采用我们精简过的 Hypervisor,不仅减少了 Overhead,还加快了启动速度,Hypervisor 启动后会启动一个 Agent,Agent 服务在 Guest OS 内部管理用户的容器服务。火山引擎边缘计算架构通过将运行实例统一以 Pod 形式进行封装,达成了云主机和容器的混合部署。

性能保障

最底层是火山引擎边缘云硬件资源层,提供CPU、内存、网卡、磁盘等硬件资源,在 Linux 内核态通过/dev/kvm 将云主机相关的交互暴露出来,Hypervisor 通过系统调用与 kvm 进行交互,负责具体的云主机的管理。由于云主机的硬件是软件模拟的,性能必然会有一些损耗,为了降低虚拟化带来的损耗,火山引擎边缘云团队做了多方面的努力:

  • Hugepage:将宿主机的内存分为两部分,一部分是4K页内存,一部分是大页内存,通过减少虚拟地址,加快了虚拟地址到物理地址的映射,提升了云主机内存的整体速度;

  • 设备直通:在一些 vCDN 场景下,由于客户对于带宽或者存储的性能要求比较极致,希望做到接近物理机的性能。因此,火山引擎边缘云采用了设备直通的机制,将硬件直接映射到云主机中,减少了整体 IO 路径,提升了整体 IO 性能;

  • Polled I/O:在使用云网络或者云存储的场景下,由于云主机是运行在用户态的,如果每次 IO 都陷入到内核态会增加额外的交互,带来较多的性能损耗。火山引擎边缘云团队将 IO 的后端处理放在了用户态实现,并且通过 Polled I/O 的模型可以实时感知到云主机内的数据变化,做到更快的磁盘和网络 IO。

资源池隔离

为了保障客户实例的性能,在资源层面火山引擎边缘云团队将资源分为三个区,通过资源分池的机制保障了云基础资源和售卖资源的独立性,最大限度保障客户资源的稳定性和性能。

  • 数据面:数据面独占资源,保障数据面数据传输的稳定,主要承载网络和磁盘 IO;

  • 控制面:控制面为动态资源,集群部署时会预留一定的控制面资源,随着集群规模的增加,控制面资源可以动态扩容,保障集群的稳定性;

  • 售卖资源:售卖资源都是独立绑核,避免 CPU 频繁切换带来的性能损耗,并且保障客户 CPU 资源独占。

统一资源编排

传统的云计算架构下,例如 Openstack,想要将容器、云主机和裸金属等资源进行统一的编排是极其困难的,但是基于云原生的架构火山引擎边缘云团队通过 CRD 的扩展机型,可以非常方便的将这些资源做统一的编排,通过定义不同的 CRD 对象,VM,CI,BH,实现相应资源的控制逻辑。通过 Kubernetes 的 plugin 机制,可以直接复用在 Kubernetes 之上现有的网络、存储、GPU 等资源类型,从而可以快速的构建出统一的资源编排系统,将云主机、容器实例和裸金属统一编排,极大提升资源的使用率,提升整理售卖率。

此外,火山引擎边缘云团队采用了声明式的方式来做资源的统一编排,声明式 API 使系统更加健壮,在分布式系统中,任何组件都可能随时出现故障。当组件恢复时,需要弄清楚要做什么,使用命令式 API 时,处理起来就很棘手。但是使用声明式 API ,组件只需查看 API 服务器的当前状态,即可确定它需要执行的操作。声明式设计的好处是:

  • 简单:使用者不需要关心任何过程细节,过程是由工具自己内部figure out的、内部执行的。

  • self-documentation,关注结果,而不是“发育”过程。

声明式的方式能够大量地减少使用者的工作量,极大地增加开发的效率,如果我们使用命令式的方式进行开发,虽然在配置上比较灵活,但是带来了更多的工作。

基于云原生的架构,不仅实现了资源的统一编排,还实现了服务的统一编排。火山引擎边缘云团队将所有的服务进行容器化,通过容器化形式来管理和部署服务。通过 CRD 的形式来声明资源,通过 Operator 的机制来实现控制逻辑,从而实现了所有服务的统一编排能力,为使用者提供更加简单和高效的运维模式。

火山引擎边缘 IaaS 的技术优势

火山引擎边缘 IaaS 的技术优势主要可以归纳为四点:

  • 云原生化

    • 敏捷发布:云原生应用的架构和设计使得它们能够更快地适应变化和需求。云原生应用可以更轻松地进行部署、扩展和升级,从而提高了开发和部署的速度和效率

    • 统一编排:通过云原生化我们不仅做到了云主机、容器和裸金属资源层面的统一编排,还可以做到基础服务的统一编排,云服务的所有资源可以运行在任何一台宿主机上,并且具有天然的资源隔离能力,避免了管控资源和客户资源的相互影响

    • 高效运维:使用容器化技术和自动化工具可以更轻松地管理应用程序,从而减少了人工管理的成本。

  • 混合部署

    • 传统的云计算需要管控面,存储,网络等多种独立部署的资源,因此要想实现一个完整的 IaaS 系统需要至少 N 台机器,并且这些机器的资源很难做到复用。通过云原生的技术架构,实现了资源和服务的混合部署,可以做到 1 台起建,并且支持 1-N 的灵活扩展,当任意角色的资源不够时,可以通过增加 Node 节点的形式快速扩容,管控组件会自动部署。

  • 弹性扩展

    • 快速扩容:当计算、存储和网络任意角色的资源不足时,可以实现资源的快速扩容,只需要将物理机部署相应的管控面组件即可实现边缘计算节点的快速扩容,通过自动部署管控服务,实现节点规模的快速扩展。

    • 多样算力:可以实现云主机、容器实例和裸金属的混合部署,当云主机或者裸金属等售卖资源不足时,可以实现任意售卖资源的动态扩容。

    • 按需扩展:组件可以做到完全模块化,就像积木一样,当我们需要什么能力时部署相关的组件即可,可以做到组件灵活部署

  • 安全保障

    • 公网传输:我们采用是客户端和服务端双向认证的机制,预配置签名证书,在服务端和客户端分别进行校验,客户端和服务端完全校验通过后再进行加密通信。不仅保障了建立连接时的安全,同时还保障了数据传输的安全。

    • 组件接入:服务组件的接入必须遵循 RBAC 的准入机制,声明组件所需操作的资源和响应的 Action,可以精准管控到资源的具体操作,如 Get/Put 等操作。

边缘计算典型应用实践

目前火山引擎边缘计算当前已经实践的场景有视频直播、影视特效、游戏娱乐等各行各业。

以视频直播场景为例,直播的场景不仅给边缘带来了较大的算力需求,同时对于视频流的转发也有较强的带宽吞吐能力诉求,为了提供更强的网络能力,火山引擎边缘云团队开发了高性能网络组件,通过网卡直通、vhost-user 等手段优化了单台云主机可以承接的推流或拉流能力。

另外,边缘计算提供的通用算力,能支持在用户本地即可对视频直播的用户媒体数据进行处理,比如将视频直播媒体服务中转码、切片、合流等服务直接在边缘本地部署。本地媒体数据处理可以提升用户交互相关业务的响应效率,另一方面在数据源头对数据进行压缩、优化处理可以提升边缘-中心的数据传输效率优化成本

值得一提的是,在直播场景中涌现出越来越多有趣的玩法和特效,比如抖音中比较火的“蚂蚁呀嘿”、“漫画风”等视频特效,可以极大丰富用户趣味性提升用户粘性,但这些炫酷特效的背后离不开强大的算力支持,火山引擎边缘云团队通过优化虚拟化损耗、GPU 设备直通等手段,增强了单实例的算力,保证用户获得预期的直播体验。

在云时代基础设施的探索中,边缘IaaS混合部署架构和云原生边缘计算展现出了巨大的潜力和前景。通过将云原生的灵活性和边缘计算的低延迟相结合,火山引擎边缘云能够为用户提供更强大的计算能力和更好的用户体验。

未来,火山引擎边缘IaaS混合部署架构将继续发展壮大。随着5G技术的普及和边缘设备的智能化,边缘计算将成为各行各业的关键驱动力。火山引擎边缘云愿携手社会各界伙伴,共同探索时代下的技术前沿,共享行业最新成果,助力产业蓬勃发展。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【夏虫语冰】Office操作技巧汇总

文章目录 1、Word技巧1.1 添加题注 2、Visio技巧2.1 快捷键2.2 格式刷 结语 1、Word技巧 1.1 添加题注 在 Word 中添加、删除标题或设置其格式: 可以为图表、公式或其他对象添加题注。 题注是带编号的标签,可将其添加到图表、表格、公式或其他对象。 …

springboot+echarts +mysql制作数据可视化大屏(四图)

作者水平低,如有错误,恳请指正!谢谢!!!!! 项目简单,适合大学生参考 分类专栏还有其它的可视化博客哦! 专栏地址:https://blog.csdn.net/qq_559…

C++类和对象——(对象的赋值拷贝构造函数)

目录 对象的赋值 目录 对象的赋值 1、提出问题: 2、解决办法: 拷贝构造函数 1、拷贝构造函数的原型: 2、调用机制: 3、使用例程代码 总代码工程: 对象的赋值 1、提出问题: 能否使用一个已经构造…

Java——《面试题——网络篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ Java——《面试题——SpringCloud》 Java…

Java——《面试题——设计模式篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ Java——《面试题——SpringCloud》 Java…

QThread

QThread的执行从run()函数的执行开始; 在Qt中建立线程的主要目的就是为了用线程来处理那些耗时的后台操作,从而让主界面能及时响应用户的请求操作。 QThread的使用 链接 work对象 1,继承Qobject; 2,dowork(); 使…

(stm32)Unix时间戳

时间戳计时系统和常用的年月日时分秒计时系统有很大差别 时间戳:只计算从1970年1月1日0点整为0秒,只用最基本的秒来计时,用不进位。 常用计时系统:60秒进位1分钟,60分钟进位1小时,24小时进位1天&#xff…

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库

介绍 Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式&a…

电子器件系列44:IGBT的内部电容

对两款igbt进行比较,确定两者是否可以互换 A: B: 一、 从电路图上分析,在启动的时候,电路会提供一个15v的电压,两者都能顺利导通,可以替换 二、 开关时间 从实际使用电路上分析,这些参数对于本电路的功能…

随机数检测(二)

随机数检测(二)- 扑克检测、重叠子序列、游程总数、游程分布 3.4 扑克检测方法3.5 重叠子序列检测方法3.6 游程总数检测3.7 游程分布检测 3.4 扑克检测方法 扑克检测方法如下图。 以下实现代码供参考。 def alterOffsetBit(m, offset, listSub:list)…

HoloLens2与Unity的Socket通信踩坑日记

最近想让Hololens中获取电脑中更新的数据,打算使用套接字的方式进行通信,明明在unity中模拟测试可以进行正常通信,但是将软件部署到HoloLens上通信总是失败,找了很久的原因,找了很久的原因,终于能够正常通信…

国产自研开源大数据管理平台DataSophon

【背景】 几天在朋友圈看到开源社区Datavane发布了一个新开源项目DataSophon;一个致力于快速实现部署、管理、监控以及自动化运维大数据云原生平台,帮助快速构建起稳定、高效、可弹性伸缩的大数据云原生平台;从介绍内容来看非常优秀&#xff…

事务管理-@TransActional

事务 概念:一组操作集合,是一个不可分割的单位,这些操作要么同时成功,要么同时失败 事务操作 开启事务(一组操作开始前,开启事务):start transaction / begin;提交事务(操作全部成…

AutoSAR系列讲解(入门篇)4.8-BSW的OS功能

一、OS架构和术语解释 OS: 操作系统。就仅仅位于系统服务层,由于OS是需要直接操作硬件的一些功能的,所以系统服务层才会贯穿三层结构至达硬件。AutoSAR OS是基于OSEK OS开发出来的,OSEK也是早期ECU上的OS标准了,现在也…

matplotlib 区域填充

import matplotlib.pyplot as plt import numpy as npx np.linspace(0, 8 * np.pi, 1000) siny np.sin(x) cosy np.cos(x / 2) / 2 plt.plot(x, siny, cskyblue, labelsin-X) plt.plot(x, cosy, corangered, label1/2 cos 1/2x )# 填充颜色 plt.fill_between(x, cosy, siny,…

TiDB 多租户方案和原理

作者: li_zhenhuan 原文来源: https://tidb.net/blog/a55c1d14 使用多租户 有很多文章介绍技术上如何使用多租户,在这里简单说明: CREATE RESOURCE GROUP rg_oltp RU_PER_SEC4000; ALTER USER app1 RESOURCE GROUP "r…

java——Collection、Map 深度理解

Collection <类型>&#x1f349; List(Conllection的实现类) 可以重复&#xff0c;有顺序 可存放多个null值&#x1f95d; ArrayList 主选 &#x1f353; 结构&#xff1a;数组 特点&#xff1a;查找快&#xff0c;增删慢 线程不安全&#xff0c;效率高 Vector&#…

第十三章 原理篇:SWIN-transformer

累了&#xff0c;没写完 面试完了再来写 参考教程&#xff1a; swin-transformer/model.py 文章目录 概述transformer blockswindow_partionW-MSAwindow-reversePatch Merging 概述 在前面介绍了vision transformer的原理&#xff0c;加入transformer的结构后&#xff0c;这种…

HCIP(HCIA回顾)

OSI/RM 七层 应用层 表示层 会话层 传输层 区分不同的流量&#xff0c;定义传输方式。 端口号由16位二进制构成&#xff0c;范围为0~65535(其中0不作为传输层的端口使用)&#xff0c;所以真实取值范围为1~65535&#xff1b;其中&#xff0c;1~1023称为知名端口号。 1、可靠…

React Native 集成到iOS原有的项目上

1.官方说明地址&#xff1a; 集成到现有原生应用 2. 主要步骤说明 把 React Native 组件集成到 iOS 应用中有如下几个主要步骤&#xff1a; 配置好 React Native 依赖和项目结构。了解你要集成的 React Native 组件。使用 CocoaPods&#xff0c;把这些组件以依赖的形式加入到项…