大繁至简,首度揭秘阿里云飞天洛神系统

“最好的网络就像神一样,无处不在,又感知不到她的存在 …… 大繁至简,这是我们努力的方向。”     – 阿里云网络高级技术专家 孙成浩

2018杭州·云栖大会的主会场上,阿里云产品总监何云飞介绍了阿里云自主研发的云操作系统飞天的全面升级版飞天2.0。作为飞天2.0核心组成部分之一,洛神首次向外界揭开了她神秘的面纱。在随后的未来网络技术专场上,阿里云网络高级技术专家孙成浩对飞天洛神进行了更为详细的阐述。本文是首次对飞天洛神的概念、演进、架构、特点等方面进行系统化的解读。

 

什么是飞天洛神

从物理网络到用户感知到的网络之间存在一个虚拟网络层。在阿里云,我们给这套虚拟网络系统起了个名字,叫做洛神。洛神是阿里云飞天中负责虚拟网络的系统,她为阿里云客户提供了丰富的网络产品,如VPC、SLB等。同时,她也是ECS,RDS,OSS,NAS等100多个云产品的网络基础设施。

她还支撑了阿里巴巴集团和蚂蚁金服集团众多业务,如电商、支付、物流等。在全球范围内,洛神服务着百行百业超过百万的用户。在双十一、世界杯、春运等互联网流量的尖峰时刻,为每一个消费者的流畅网络体验而默默保驾护航。

很多人都知道阿里云有一个飞天(Apsara)系统,系统中各组件是用各种神的名字命名的,包括盘古,伏羲,女娲,神农等,其中盘古是分布式文件系统,伏羲是分布式调度系统。为什么叫虚拟网络系统叫洛神呢?在古代,河运是非常重要的交通手段,就好比今天的网络一样。因此,在给虚拟网络系统起名的时候,我们就起了一个河神的名字,叫洛神。

 

飞天洛神的架构

洛神是阿里云的分布式操作系统飞天的一部分。在飞天的基础架构里面,最上层是各种云产品,包括大家熟悉的云产品RDS,ECS,VPC,SLB等等,支撑这些是飞天的3个基础组件,包括存储系统盘古,资源管理伏羲和网络管理洛神。也就是说,洛神除了支撑了阿里云的网络云产品之外,另外一个重要的角色就是支撑了其他云产品的网络基础设施。

 

讲到洛神的技术架构,洛神系统由3大模块组成 – 数据平面,控制平面和管理平面。

数据平面负责云网络中数据包的处理,它就如同物理世界中的网线和路由交换设备,把数据包高效率低延迟的从发送端送到目的地。类似的,洛神数据平面也包含各种不同角色的组件,包括支持各种不同类型计算形态的虚拟交换机,用于数据中心互连的DCN网关,用于云网络连接公网的internet网关,用于云上云下互连的混合云网关,提供负载均衡能力的负载均衡网关和提供端接入能力的智能接入网关。

为了提高这些组件的转发性能,洛神不仅使用了软转发的技术,而且也对软硬件结合甚至纯硬件的技术进行了广泛应用。

控制平面则控制如何处理数据包,他是洛神的业务大脑。从技术上看,洛神的控制平面是一个层次性的分布式控制系统,最底层的设备控制器主要负责控制和管理数据平面的各种组件,同时在每个区域存在一个虚拟网络控制器,在全局存在一个全球路由控制器。

区域的虚拟网络控制器则负责本区域的云网络的管理与调度, 全局路由控制器则负责协调调度各个区域的资源形成一张全球的云网络。基于虚拟网络控制器和全局路由控制器之上的则是NFV控制器,完成虚拟网络高级功能例如VPN等产品的编排和抽象。

洛神的管理平面是网络运维和运营的中枢,它管理着海量的网元以及用户,这里的海量指的是千万级虚拟机和百万级网元。为了能做到这一点,洛神的管理平台是基于大数据以及机器学习技术实现的,它对网络运行当中产生的海量数据进行实时/离线计算,数据建模,来驱动网络资源的提前规划,网络系统的日常维护以及网络产品的智能运营。

整个管理平面包括了一套高性能,分布式的数据分析系统,由它分析出来的数据提供给智能运维和智能运营系统,完成资源规划,网络建设,系统变更,实时监控,故障逃逸,产品运营等整个网络产品生命周期的工作。最终达到排无人值守的网络变更,先于用户的问题发现,高效简单的故障逃逸以及丰富全面的产品及用户运营的效果。

 

飞天洛神的技术演进之路

洛神能够成为飞天的四大支柱之一,不是一天炼成的。洛神的演进经历了四个阶段。

首先是经典网络阶段,在这个阶段,网络只有一个概念,就是公网带宽。经典网络阶段的问题是用户无法自定义网络拓扑,这样使得用户无法完成云上云下的混合云联通。为了解决这个问题,洛神进入了VPC阶段,VPC阶段里,洛神在每个地域虚拟了数百万张网络,并且用户可以完全自定义这张网络。

随着网络规模越来越大,洛神也从区域网络进入到全球网络的阶段,在这个阶段,洛神主要解决如何更好的管理超大规模网络的问题,云企业网和云连接网构成了第三代洛神的两个主要特性。

满足了主要的客户的需求之后,我们开始思考如何进一步提升用户体验。用户对网络的核心诉求是什么?其实,客户的最大诉求是网络足够强健可靠,不要发生问题。就像使用水和电一样,用户是不需要了解发电站和泵站在哪里的。因此,洛神希望网络对用户是无感知的,又是无处不在的。

洛神的发展,是一个从0到1,到100,再回到0的演进过程,大繁至简,这是我们在研发下一代洛神中努力的方向,这也是我们首先在业界提出Networkless理念背后的思考。

 

飞天洛神的特点

洛神的关键特点,包含安全,弹性和可靠,这3个特性也是洛神达到最终Networkless状态的关键特征。

安全是基本盘,因为overlay技术把网络逻辑的隔离掉,用户的网络之前完全不会互通。并且洛神中还包含了各种加密服务可以给到用户,打造更深层次的的安全。弹性有两个数字,一个是秒级的转发性能的弹性,洛神支持从1MB到1TB在一秒内完成弹性,另一个是规模的弹性,洛神的单网络支持10w台计算节点的规模。

这样,洛神既可以支持小到虚拟web主机这样的服务,也可以支持打到双11零点这样的海量峰值流量。谈到可靠性,我们参考年平均故障时间这个参数,洛神引发的单实例故障时间只有50ms,这个故障时间是极其短的。

 

关键设计

接下来我们详细分析下洛神弹性和可靠性的关键设计。洛神系统的数据面,本身就是一台巨大的交换机。大家都知道,交换机的转发芯片对数据包的处理,都是pipeline的,硬件处理永远不会停下来,那洛神的数据面也是如此。从一个数据包进入洛神系统开始,到出去洛神系统的整个过程,经历了洛神系统里面的各个组件,都是不会被打断的,这样只处理一件事情的数据面,一定是高效的。洛神的数据面包含了软硬件结合的转发技术和架构。

此外,洛神系统的网络永远不会因为维护而中断,这意味着,洛神里面的所有组件,都支持热升级。

在可靠性角度上看,多机房容灾是高可用的基础。当阿里云的某一个数据中心云机房开始部署的时候,洛神系统在物理设施部署完成之后会首先进行部署。这个时候,机房里面有计算集群,网关和控制平台。计算集群上面有我们的虚拟交换机组件。对于数据面和控制面的关键结点都是集群部署的,单台服务结点的问题不会对用户产生任何的影响。当vm的宿主机出现宕机等严重问题的时候,可以在机房范围内进行迁移,迁移本身也不会对vm的网络属性和连通性产生任何的影响。

每个云机房里面都会部署集群的网关和控制器结点,而且随着机房的增多,会自动在云机房里面形成环形的备份关系。当一个新的机房建设起来,洛神系统部署之后,会自动加入到这个备份链里面。这样,当某一个机房的关键结点由于异常出现问题的时候,都可以自动在秒级切换到备份机房,由备份机房的洛神系统来提供服务。这种多层次容灾机制,保证用户可以在很快的时间内恢复业务。

除了多机房容灾之外,如何快速发现bug和快速恢复,是可靠性的另一个关键点。为了解决这个问题,洛神首先设计了基于流的染色系统。如果把洛神系统看成一个整体的交换机,那么从特性上来看,洛神系统是一个支持流跟踪的交换机,具有各种丰富的策略。洛神系统的下面是物理网络的设备和交换机,通过洛神系统的流标记的能力和设定的策略,可以同时在物理网络和虚拟网络里面具备流的染色,特定报文的镜像,采样,跟踪等的能力。这些动作产生的日志,都会通过采集后做实时计算,如果流量有异常,会产生报警和日志给到管理员,部分报警可以触发故障的自动处理和恢复。还有一部分数据经过计算处理,会产生数据报表和用户画像,也可以给到用户一张炫酷的大屏。这个本质上就是数据化的能力。

 

结束语

飞天洛神的使命是让网络更简单。大家都知道AWS提出了Serverless的概念,和Serverless类似,洛神以Networkless的理念作为设计目标,我们希望用户不再去关心网络拓扑,网络带宽,网络地址这些专业技术,让用户感知不到网络的存在。Networkless首先是通过不断的提高弹性和网络的可靠性来达到的,除此之外的关键特性就是NAAS化,让用户只关心网络通,而不需要去关心网络各种组件。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

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

相关文章

(Docker实战) 第2篇:Centos7 拉取和部署Gitlab

文章目录搭建gitlab1. 拉取并运行gitlab所需要的redis镜像2. 拉取并运行gitlab所需要的postgresql镜像3. 下载并运行gitlab搭建gitlab 参考:https://github.com/sameersbn/docker-gitlab 1. 拉取并运行gitlab所需要的redis镜像 docker run --name gitlab-redis -d…

redis系列:通过队列案例学习list命令

前言 这一篇文章将讲述Redis中的list类型命令,同样也是通过demo来讲述,其他部分这里就不在赘述了。 项目Github地址:https://github.com/rainbowda/learnWay/tree/master/learnRedis/case-list 案例 demo功能是队列,整个demo的…

php生成图片文件流,php如何将base64数据流文件转换为图片文件?

2017-03-07在开发中,自己遇到一个前端在上传图片的时候,使用的base64数据流文件显示的图片。也就是说***image/后面的jpg是我们的图片文件格式,(base64,)后面的很大一长串就是具体的文件信息。data:image/jpg;base64则是指的文件头。我们可以…

python time sleep和wait_Python和硒:driver.implicitly_wait()和time.sleep()之间的区别...

Yes, I know both are used to wait for some specified time.Selenium:driver.implicitly_wait(10)Python:import timetime.sleep(10)Is there any difference between these two?解决方案time.sleep(secs)time.sleep(secs) suspends the execution of the current thread fo…

2019年程序员薪酬报告:平均年薪超70万!40岁后,这类人不“保值”了

Hired 近日发布了《2019 年度薪酬状况报告》,重点结论如下:仅有 23% 的硕士 / 博士表示,高学历带来了高薪,大部分人表示学历不是全部76% 的技术工作者认为,参加编程培训机构对求职有帮助在美国,技术工作者在…

业务代码解构利器--SWAK

简介 业务的不断发展、商品类型的不断增多、不断添加的业务需求使得闲鱼的代码出现“bad smell”——平台代码和业务代码耦合严重难以分离;业务和业务之间代码交织缺少拆解。这也是行业中的通病。为解决此类问题,闲鱼自研了一套技术框架——SWAK。本文带…

MySQL8.0 · 优化器新特性 · Cost Model, 直方图及优化器开销优化

MySQL当前已经发布到MySQL8.0版本,在新的版本中,可以看到MySQL之前被人诟病的优化器部分做了很多的改动,由于笔者之前的工作环境是5.6,最近切换到最新的8.0版本,本文涵盖了一些本人感兴趣的和优化器相关的部分&#xf…

(Docker实战) 第4篇:Centos7 拉取和部署Redis

文章目录搭建redis搭建redis docker run --name redis -di --publish 6379:6379 redis:4.0远程验证测试: 想学习更多微服务、分布式、中间件、数据库、项目快速构建等系列技术 请访问http://gblfy.com 让我们一起进步!!!

python autohotkey_PyAutoGUI-python版的autoit/AHK

简单介绍各个图形界面自动操作的python库,类似按键精灵\autoit\ahk(autohotkey)等等这些自动化工具。这类python库不是只是用来实现自动游戏之类的程序,业界也用这些库来做GUI 自动化测试。第一推荐的库: PyAutoGUI 跨平台PyAutoGUI 在windows下无依赖&a…

阿里巴巴上线静态开源站点搭建工具 Docsite

近日,阿里巴巴在Github上线了静态开源站点搭建工具Docsite,这是一款集官网、文档、博客和社区为一体的静态开源站点的解决方案,具有简单易上手、上手不撒手的特质,同时支持react和静态渲染、PC端和移动端、支持中英文国际化、SEO、…

重磅 | 边缘计算核心技术辨析

戳蓝字“CSDN云计算”关注我们哦!作者 | 中国电信广研院责编 | 阿秃边缘计算(Edge Computing)是云计算向边缘的延伸,本文对边缘计算、雾计算、MEC、Cloudlet、分布式云等边缘计算领域相关概念和技术的定义、架构、场景等进行了比…

php请求接口两次,php curl post请求执行一次curl_exce 请求的接口确执行两次

1、php curl post请求接口,打印日志执行了一次curl_exce,但是请求的接口却重复执行两次.2、代码:$ch curl_init();if(false $ch){writeRedisLog(create_curl, $activity_id, $mobile, $user_id, , 0, curl failed to initialize);}curl_set…

(Docker实战) 第5篇:Centos7 拉取和部署搭建 NEXUS私服

文章目录搭建nexus私服1. 安装nexus3(admin/admin123)2 .配置nexus32.1 新建一个maven2(proxy)仓库2.2. 新建一个maven2(hosted)仓库2.3. 配置public仓库搭建nexus私服 1. 安装nexus3(admin/admin123) #创建文件夹,安装过程如果…

Nacos发布 v0.2 版本,无缝支持 Spring Cloud 微服务生态及高可用集群模式

近日,阿里巴巴新开源项目Nacos 发布了 v0.2 版本,该版本开始支持完整的Spring生态技术栈,这包括 Spring Framework、Spring Boot和Spring Cloud。 为了让更多的Spring用户可以在生产上基于 Nacos 做微服务平台的服务发现、配置管理、服务管控…

python中的def语句输出1000以内的回文_各种方法测试回文的性能[Python]

使用timeit模块进行速度测试,使用profile模块进行性能统计,使用dis模块进行字节码反汇编.下面的脚本演示了如何使用模块.从输出中注意到的一件事是函数调用的数量会影响整体性能(当然,字节码指令的数量也是如此).希望,(以及更多实验)应该为您提供有关如何提高功能效率的足够线索…

是时候展现真正的技术了!4道程序员智力题你能对几道| IT巨能唠

程序员对很多人来说那就是个神秘组织,高薪、加班多都是他们的代名词。但是,大家好像还忘了一点,那就是他们也绝对聪明!黑客、代码天才、编程老手……层出不穷,晦涩的计算机难题也是分分钟搞定,想想就令人神…

阿里关涛谈大规模计算—从数字化阿里到数字化城市的进化

在刚刚结束的2018杭州云栖大会上,阿里巴巴通用计算平台负责人,阿里巴巴计算平台资深技术专家关涛从计算力,联合计算,智能化,企业级服务能力四个方面详细介绍阿里巴巴统一的超大规模数据计算平台MaxCompute的探索与实践…

java double add,Java中的DoubleStream.Builder add()方法

add()Java中DoubleStream.Builder类的方法将元素添加到正在构建的流中。该方法返回此构建器。语法如下default DoubleStream.Builder add(double ele)此处,ele是要添加到此流中的元素。要在Java中使用DoubleStream.Builder类,请导入以下包import java.ut…

解决Linux操作系统下AES解密失败的问题

现象描述: windows上加解密正常,linux上加密正常,解密时发生如下异常: javax.crypto.BadPaddingException: Given final block not properly padded at com.sun.crypto.provider.SunJCE_f.b(DashoA13*…) at com.sun.crypto.prov…

深入Spring Boot:利用Arthas排查NoSuchMethodError

前言 有时spring boot应用会遇到java.lang.NoSuchMethodError的问题,下面以具体的demo来说明怎样利用arthas来排查。 Demo: https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-NoSuchMethodError 在应用的main函数里catch住异常,保…