网易蜂巢尧飘海:工具链是新一代云计算平台的重心

时间: 2016-11-29 13:01:16 来源:   网友评论 0
  •   在11月25日的GITC全球互联网技术大会上,来自华为、网易、乐视、京东、腾讯、金山、小米、新浪、思科、联想等公司的技术专家们共聚一堂,就当下流行的互联网技术及行业趋势进行了积极探讨。

  在11月25日的GITC全球互联网技术大会上,来自华为、网易、乐视、京东、腾讯、金山、小米、新浪、思科、联想等公司的技术专家们共聚一堂,就当下流行的互联网技术及行业趋势进行了积极探讨。

  网易蜂巢首席架构师尧飘海受邀出席本次大会并发表演讲,分享了支撑现代化的互联网应用所需要的新一代云计算平台的特点,以及网易如何基于OpenStack、Kubernetes和Docker等开源技术构建网易新一代云计算平台网易蜂巢,并总结了整个架构过程优化的环节。

  尧飘海从基础服务、平台服务、DevOps和微服务等方面解析了在设计网易蜂巢的过程中所做的思考和选择。他表示,使用容器技术并不等于实现了DevOps和微服务,真正的DevOps和微服务的关键在于工具链和架构的支持,这正是网易蜂巢目前的重点工作。

  

1图片1.png


  容器不等于微服务

  抓住转瞬即逝的“风口”对于互联网业务的发展尤为重要,而开始“飞起来”之后的关键,则是产品能够跟上业务爆发的节奏,故而对于支持互联网业务的新一代云计算平台而言,保证产品快速迭代落地和永远在线是其基本特性之一。事实上,网易蜂巢实施云计算的初衷,就是以提升产品开发效率作为平台设计的导向,以改变互联网的软件生产方式为目的,从而满足支持网易互联网业务快速发展的需求。

  面对互联网业务的需求,开源技术Docker以容器、镜像的特点,能保证开发运行环境一致,支持轻便、快速地迭代和扩容,问世不久就成为云计算领域的宠儿。当前的技术圈,没有听说过Docker 以及基于Docker实现DevOps、微服务的人可能不是很多,不过,对于Docker的精髓是什么,如何使用Docker,如何把业务Docker化,以及Docker与DevOps、微服务的关系,能够真正理清头绪的企业并不是很多。

  尧飘海表示,认为微服务等于容器或者自助运维就是走入了误区,例如,只是借助模板实现一套自动化的流程,把源代码进行版本号的管理,并不能把环境和软件整体打包成服务提供给用户,所以还需要一整套的方法论和工具,才能解决微服务的交付问题。

  工具链是新一代云计算平台的重心

  借用工业4.0的理念框架,尧飘海从现在化软件生产的角度解析了新一代容器云的技术栈。工业4.0包括智能工厂、智能生产和智能物流,智能工厂的建设是一个从集中式到分布式转变的过程,这与Docker容器的build-ship-run的模式相吻合。支持微服务和DevOps这两个功能体系,云计算平台依赖的技术实现,包括容器的技术、容器编排管理技术以及能够支持容器和编排的基础服务。

  基于容器技术和编排服务是构建网易蜂巢容器云计算平台的方案之一。根据实践得到的经验,新一代云计算平台包括三个部分:提供稳定可靠的基础服务(包括计算、存储、网络);融合从IaaS层到PaaS层之间的切换,能够提供PaaS的服务(关系数据库、负载均衡、缓存、对象存储);DevOps的工具链和微服务架构支持。尧飘海表示,第三部分是网易蜂巢目前要重点解决的问题。

  

2图片1.png


  网易蜂巢的架构之路

  尧飘海详细介绍了网易蜂巢如何实现新一代云计算平台,重点解析了基础服务、编排调度相关的优化。因为网易云是网易内部成熟技术的商业化,作为网易云的基础服务,网易蜂巢也是在网易私有云的基础上封装成为公有云服务的,网易蜂巢的构建,也是给网易多年积累的私有云不断赋予公有云的特征的过程。

  资源隔离的优化。安全性、多租户的资源隔离是公有云必备的特征,而容器的安全性和隔离性是让人担忧的短板,但是把网易IaaS层非常成熟的方案(天然具有安全性、隔离性的特征)和容器技术结合起来,就可以把公有容器云的系统架构做好。

  异构解耦。IaaS和容器的结合并不容易,网易私有云底层用OpenStack - 代码实现用的是Python,而Docker、Kubernetes则依赖于Go语言,二者天然存在语言的异构性,并且OpenStack的代码量太大,重构是不现实的。在架构设计上,网易蜂巢应用了微服务架构的理念解决平台本身的异构语言通讯问题,通过引入消息中间件的模式解决来解决语言的依赖,因为OpenStack的RPC通讯模型依赖于MQ。

  异步化。引入MQ,整个操作的流程就是异步化的,整个RPC的流程,从一台云主机的生成到最后的服务,经过裸系统运行,再挂载网络、存储到服务落地,过程非常漫长。

  简化网络。私有云的内部网络,包括私有网络、外网、IDC间的机房网络、VPC的互通、VPN等七种网络模型,路由非常复杂,而大部分公有云用户不会用到这么复杂的网络,所以需要进行简化,做到对于普通用户而言只有一个外网和一个内网的两层网络模型,最多加上一个VPN,另外针对大公司提供VPC网络。

  性能优化。精简完网络上线之后,如果使用传统的API调用模型,并发在五个以上时,性能会受到影响,创建速度满足不了容器秒级启动的需求(传统VM的启动要求可能是分钟级的),所以需要进一步优化速度。这个环节有两个思路,其一是采用CoreOS这样理念前卫的操作系统来加速系统启动,但对于做了很多年云计算的公司来说,转型是很痛苦的、漫长的,也会遭到大部分人的抵制。蜂巢选择了另外一种思路,就是分析出运行过程中的耗时大户并将其优化。因为内核依赖的版本基本是固定的,抓取底层的数据,针对整个系统启动的过程把时间序列统计打印出来,发现整个云平台架构在大部分的时间都非常依赖于Networking Service,这是对DHCP的依赖带来的消耗,所以网易蜂巢把DHCP过程解决掉,一开始就把IP注入进去,同时注入的还有路由信息,因为做完网络的减法之后,注入路由、DNS服务器配置规则的方式非常轻量,通过网络API接口就可以一次拿出注入。最终优化的结果,是5s左右的时间就能够完成云主机的启动到服务的整个过程。

  按可用域多层调度。编排管理需要调度,网易蜂巢通过Kubernetes提供的框架做多层调度,实现高可用、持续集成以保证服务永远在线。最简单的调度资源是云主机,不仅要保证某一个服务不会调用同一台物理机,还要保证它们在不同的可用域,做到机房之间的调度。

  PaaS融合。PaaS服务,比如负载均衡,Kubernetes原生的负载均衡比较简单,是单台Nginx的模型运行服务,可能无法满足商用、大流量的场景,网易蜂巢通过LB Controller,以插件化的模式把它融合到整个服务平台上。

  多租户授权机制。Kubernetes提供给公有云用户使用,其实有一个授权的过程,比如Kubernetes根据Namespace最多只能做到逻辑上的隔离,如果两个租户使用同一个Kubernetes集群,针对多租户隔离需要额外做一个授权的机制,网易蜂巢把多租户的完全隔离也融入到服务平台上。

  基础工作做完之后,IaaS和PaaS层编排成服务调用,还需要很长的异步过程,需要按照指令的模式,让指令可以做到重放,至少是唯一的、可分解的。此外,为了满足公有云用户的需求,网易蜂巢还解决了一些非功能性挑战,例如可视化的运维能力,以及跨机房的容量规划、风控系统等。


[收藏] [打印] [关闭] [返回顶部]


分享到:
本文来源: 作者: (责任编辑:bianji)
  •  验证码:
热点文章
中国贸易金融网,最大最专业的中文贸易金融平台