新萄京娱乐场2959c 8

新萄京娱乐场2959c十年•杭研大咖说|尧飘海:构建容器云平台的关键技术

在互联网/互联网+的实践中,技术驱动业务的已经深入,但具体应当如何实施,很多的企业并不知晓。为了挖掘成功的秘密,网易云采访了十家优秀企业的高管,并将他们的分享公之于众,供更多的企业参考。  圣特尔CEO陈涛表示:网易蜂巢弹性扩容能力能够让其电商ERP(SaaS服务)轻松应对高并发处理,支持易店宝连续5年全网ERP服务商“双11”总处理单量第一。  宝宝树内容事业部&市场PR总监张逢表示:备受中国妈妈以及家庭喜爱的宝宝树孕育和小时光必须具备即时聊天和直播功能,网易云信为其日常孕育提供了有力的保障。  网易蜂巢是基于Docker构建的容器云平台,并采用Kubernetes作为容器管理和编排工具,底层则是全SSD、BGP多线数据中心和全万兆高速网络,上层提供资源调度、均衡容灾、动态扩缩容、节点切换等能力,支持大规模集群,能够客户业务在突发高并发的情况下也能稳如磐石。网易云信也为大并发、不丢消息做了很多优化。  挖财网基金&证券团队架构师杨琪科表示,网易云信在几分钟之内就可以快速方便地接入,并支持挖财务的海量并发业务。  金融科技公司牛经数据CTO郑沛峰表示,牛经数据致力于打造一个集一站式全球化交易平台、金融人才交易和国民资产管理为一体的金融生态体系,网易易测使得他们能够接入海量手机主流设备,快速完成兼容测试,更便捷地推出产品。  作为一家互联网公司,网易深谙产品易用的重要性,提供完善的开发文档、入门教学视频和常见问题的处理教程等,帮助开发人员快速上手。  商派(shopex)高级副总裁徐焕春表示:随着领域竞争的不断增强,商派的研发能力、架构能力也在不断升级,在接入网易蜂巢容器服务之后,商派的研发响应能力得到了显著的增强,由于兼具IaaS灵活性和PaaS便利性,网易蜂巢节省了商派研发人员的精力。  光年电商CEO张国平表示:网易蜂巢是“我们目前遇到的最好用的云计算平台”,更适合光年电商的业务架构,能够大幅提升开发效率。  亚信容器微服务业务总经理何鸿凌分享说:网易蜂巢帮助亚信大数据能力平台实现了快速的交付和部署,使得亚信可以集成网易的专业数据库和缓存服务,并通过自动化运维降低总体成本,亚信得以将快速让天下认人都能享受大数据的红利。  揭秘:网易蜂巢的研发初衷,所采用的Kubernetes+Docker的分布式技术体系,正是要解决传统IaaS无法加速业务研发的问题。  预约学车教练网站好教练CEO曹汉民表示:好教练每天需要挑战庞大的用户咨询量,客服需熟练应用各种工具,通过网易七鱼智能云客服,好教练网整合了网站、微信、微博多渠道沟通,大幅提升客服的服务质量和工作效率。  网贷之家运营中心总经理吴表示:作为中国首家权威的p2p门户网站,网贷之家每天有成千上万的用户在网站、新闻、论坛发表评论,面对这样级别的信息量,需要借助网易易盾智能反垃圾方案用户体验。  美食杰CTO刘乃瑞介绍:美食杰每天大量的活跃用户都会产生很多UGC内容,借助网易易盾过滤和屏蔽UGC内容,美食杰节约了大量的审核人员,同时也提升了反垃圾效果。  揭秘:节约成本和提升效率是互联网运营的成功,网易七鱼和网易易盾为了实现这个目标,采用了以深度学习为代表的人工智能前沿技术,利用机器来帮助人类提高生产力。  综上所述,依托千锤百炼的技术体系,网易云不a型血人的性格特点仅以较低的成本,为用户带来了一个稳定高效、运维便捷的基础服务,还能够通过各种场景化服务帮助他们加速业务研发和提高运营效率,实现与用户“共创云上精彩世界”的目标。  事实上,与网易云共创精彩的不仅仅是这十家企业。自2015年11月正式推出第一款IM产品网易云信以来,网易云到现在已经形成网易云信、网易七鱼、网易视频云、网易蜂巢、网易易盾、网易云捕、网易易测等一系列场景化云服务,这些服务在金融、电商、游戏、物流、教育等多个行业获得了大量外部用户的信赖,包括中信信托、中顺易、暴雪、顺丰、春雨医生、足记、博客园、浙大网新、一起秀等知名企业,都在借助网易云来加速他们的互联网业务拓展。  每日头条、业界资讯、热点资讯、爆料,全天微博播报。各种爆料、内幕、花边、资讯一网打尽。百万互联网粉丝互动参与,TechWeb微博期待您的关注。

2016年12月10日,由SegmentFault举办的SFDC大会在杭州举办,网易蜂巢解决方案首席架构师刘超在主会中发表了题为“网易蜂巢基于容器和微服务加快迭代速度实践”的演讲,
主要讲述了网易蜂巢根据具体的业务场景和架构,进行逐步微服务化,容器化的实践。

2016年,网易杭州研究院(以下简称“杭研”)成立十周年之际,我们推出“十年·杭研大咖说”系列访谈文章,针对亲历杭研核心技术体系变迁的数位技术大牛发问,揭秘网易云背后的技术脉络、研发思想和技术人成长的故事。本期的受访嘉宾,是杭研云计算平台产品部首席架构师尧飘海。

新萄京娱乐场2959c 1

尧飘海目前负责网易容器云平台–网易蜂巢的建设,致力于自动化平台的架构和实践,旨在提高产品开发效率。作为互联网产品开发和基础建设的老将,以及Pomelo项目(网易开源的基于Node.js的高性能、分布式游戏服务器框架)的主要开发者,尧飘海对分布式系统设计开发、性能调优,系统架构有独到的经验和理解。他认为,容器的编排服务才是真正考验和体现应用弹性、DevOps能力的关键所在。在本次采访中,他详解了网易蜂巢根据业务需求所做的关键优化工作,并对未来的技术架构做了分析。

刘超,网易蜂巢解决方案首席架构师。10 年云计算领域研发及架构经验,Open
DC/OS
贡献者。长期专注于kubernetes、OpenStack、Hadoop、Docker、Lucene、Mesos
等开源软件的企业级应用及产品化。曾出版《Lucene 应用开发揭秘》。

网易杭州研究院云计算平台产品部首席架构师尧飘海

坊间一直有“网易出品,必属精品”的言论流传,网易云音乐、考拉海购、有道云笔记、网易云课堂等都是深受大家喜爱的应用,而这些应用的背后,都少不了网易蜂巢的支撑。目前网易95%以上的应用都已经部署在了网易蜂巢上,基于蜂巢,考拉扛过了6•18、双11,每天更新达700余次,网易云音乐用户也已经达到2亿,成为最受欢迎的音乐播放器之一。

首席架构师的感悟

网易蜂巢是网易云推出的云计算基础服务,用丁爸爸的话就是为“解放全中国的程序员”而生的。网易蜂巢的发展也经历了从基于虚拟机的私有云平台,向基于容器的公有云平台的转变历程。平台层从虚拟机向容器的转变,另整个迭代过程和环境的管理带来了极大的便捷性,而容器的使用也让应用层不得不进行调整,架构上要向微服务迁移,流程上则要DevOps转变。

-从您毕业加入网易至今已有7年,您(参与)开发了哪些系统?为什么选择云计算架构师作为现在的职业?

新萄京娱乐场2959c 2

尧飘海:大家好,我从毕业时加入网易到现在参与过不同的业务平台的开发,包括互联网、游戏、IM等,再到云计算平台的设计与开发。通过多年来和不同的职责的同事和朋友交流沟通,我慢慢体会到不同职位的不同价值,特别是技术类的开发人员。可能大部分人会认为开发只是作为业务的执行者,但是其实每一个技术人都不同的技术情节,希望自己能写出来的代码能像爱艺术作品一样,有更长的生命力,有更好的价值,更多的服务于用户。当前,云计算行业的影响力已经是随处可见,每个用户或企业现在不再是讨论要不要上云,而是如何上云、上好云、上新一代云等。这也是云架构师本身的职责和价值所在。

上图是网易蜂巢整个平台的架构,从下向上依次是硬件层、IaaS层和PaaS层。硬件上,网易云全部都是五星级的机房,多线BGP网络接入,万兆网络互联,全SSD存储

-在杭研的开发工作中,有哪些让您印象深刻的难题?您是如何解决的?

其次是网易云是基于OpenStack的自研IaaS:

尧飘海:杭研的发展体系包括了技术和产品,技术开发在很多产品成长过程是非常重要的一环,也是必须的一环,和其他公司一样,我们也会遇到各种不同的问题。尽管每种问题表现出来的形式是不一样的,最后的结果是无非是成与不成二种,把这些难题分类出来,包括沟通、流程、技术、业务等风险。作为技术人员,我开始更多的是去思考如何通过不同的技术去解决不同的问题,在解决的过程中,有没有充分的沟通和信息透明,有没有更好的技术协作,解决后有没有及时的反馈和总结并在下次项目提前预防;后来,随着承担的职责不同,会越来越关注技术对用户的价值和影响,从上到下、从左到右地思考产品需求是否真的能够满足用户的发展。


计算:定制KVM系统镜像,实现云主机IP静态化,优化OpenStack创建云主机流程;

网易蜂巢是技术、知识、经验的整体输出

• 网络:二层至四层网络过滤防止MAC/IP欺骗,基于Linux
TC修改OVS实现网络QoS;

-网易蜂巢强调提高产品研发效率,分解出来也是当前的容器云都谈到的弹性扩展、DevOps能力,包括跨云部署,您如何理解网易蜂巢和其他容器云平台的主要区别?

• 存储:云硬盘架构基于iscsi和Ceph实现,优化Ceph核心模块OSD;

尧飘海:在容器云平台中,容器只能保证环境的一致性,跨云部署是其基本的能力,这是所有的容器云平台都支持的,但我们更多的工作是如何保证很好地协调这些容器来满足业务的架构需求,也就是容器的编排服务,这些才是真正考验和体现应用弹性、DevOps能力的关键所在。除此之外,企业级的容器云需要IaaS、PaaS能力的支撑,而提供稳定的自建基础服务需要一个很长的积累过程,包括丰富稳定可靠的PaaS服务也是如此,网易蜂巢依靠网易10多年的技术积累和大规模的线上产品验证,为只专注于业务的用户提供容器云服务,帮助他们提高产品开发效率,改变软件生产过程,是整体的技术、知识、经验的输出。

最上层是高可用,高性能的PaaS,蜂巢在这个方面的积累非常深厚:

-蜂巢选择基于Kubernetes提供编排服务,主要是看重它的哪些优势?Kubernetes的二次开发主要在哪些方面?


数据库:网易定制的MySQL内核分支,主从切换数据零丢失,提供健康检查和SQL优化工具;

新萄京娱乐场2959c,尧飘海:Kubernetes也是Google和社区的技术、知识、经验的输出。首先,Kubernetes是由Google的Borg团队的主力开发人员主导开发和维护的,Borg在Google内部经过了10年左右的验证,每周支持20十亿的容器生命周期管理。其次,Kubernetes的整体的设计理念和微服务架构的趋势非常吻合,对各种容器技术的细节支持也较完善。最后,我们是在2015年初做的选择,当时整个容器管理的生态和各大开源对Kubernetes的支持,及其他的容器集群管理工具的不成熟,也是我们在思考的问题。目前Docker、Mesos的发展越来越快,确实是在参考Kubernetes融入不同的新特性,这也佐证了我们的选择。

• 缓存服务:主从热备、跨可用域部署,自动容灾,高性能单笔延时毫秒级;

目前网易蜂巢对Kubernetes的二次开发,除了完成支持单集群多租户的模式(很大的工作量)之外,还包括如下几个方面:


对象存储:高可用性为99.99%,高可靠性三备份8个9,基于自研分布式非结构化存储系统。

1.容器网络互连、网络多租户,平坦化的网络结构轻松解决容器互联和可视化问题;

新萄京娱乐场2959c 3

2.有状态容器支持,包括故障恢复与迁移的能力,保证用户对有状态业务的数据持久化需求;

对于开发者来说,之前基于虚拟机的部署,操作上是比较简单的。只要调用IaaS层的API,把虚拟机创建出来;数据库、对象存储等中间件放到PaaS平台就可以了。如果应用比较少,直接手工部署就可以了,但是如果应用量比较大,或者分的服务比较多,就需要用到一些自动化部署的工具,比如Puppet、Chef和Ansible。之所以要用到这些工具是因为,仅仅资源层面的弹性,并不能满足互联网快速迭代的需求。比如电商大促期间,原来10台机器,要扩展到20台,另外的10靠虚拟机还是要手工一台台去部署,整个扩展的速度还是达不到要求,就要靠脚本做一些事情。

3.编排服务多租户支持,根据可用域调整调度算法,优化编排服务性能,满足大规模容器集群隔离调度;

新萄京娱乐场2959c 4

4.应用不停服发布,支持原子更新及不可变服务交付,实现对业务平滑过度,不损失一丝用户体验。

上图就是一个电商系统的雏形,对于一个互联网+的应用,为了系统快速上线,进行观念的验证,多数都会采取集约化的单体架构,主要包括用户管理、商户管理、订单管理、商品管理、支付管理这么几块。这样做的好处是易开发、易测试、易部署、易运维。

-谈到多租户,容器隔离、安全的解决与性能损耗是否存在矛盾?

新萄京娱乐场2959c 5

尧飘海:根据业务场景模式的目标作为主要解决的问题的依据,其实就不再是矛盾了,只是从不同的特性里面排序选择,比如是公有云还是私有云,是互联网应用还是游戏或者大数据场景。根据给定的条件去选择,就相对容易多了,如果没有限定条件去思考问题,只会把问题对立起来。

但是随着业务的飞速发展,整个应用的架构会变得很复杂,网络流量、用户请求、日活都会大幅度增长,功能也会越来越完善,比如用户的个性化推荐、积分系统,商户的供应商管理、物流管理,这时单体架构的好处几乎都会消失,服务器的重复部署和数据库的查询都会成为瓶颈,整个系统的迭代速度也会慢下来,一个功能的修改可能要牵扯到很多模块。

安全是相对的,可能没有任何系统能保证绝对100%的安全,用户会接受相对安全的等级,如果能做到一定的安全等级的划分,就比较好处理了。网易蜂巢的目标用户是公有云的企业,所以我们目前租户之间天然隔离,同时租户内采用了虚机+容器组合的方式,可以比较好的解决这些矛盾;如果有企业用户更关注对性能的极致追求,网易蜂巢也提供了不同的解决方案。

为了解决这个问题,就要进行应用架构的改造,比如加上负载均衡器和缓存服务器,数据库进行读写分离,使用中间件把大服务拆成小服务,服务之间通过消息组件进行交互,这样应用首先可以水平扩容了,比如下订单特别的忙,3个节点不够就可以扩成9个节点,结合脚本还能实现弹性的伸缩。

冰山之下的IaaS经验

这样的改造后也会出现新的隐忧,比如随着系统模块的增多,每个模块又有自己的开发环境、测试环境和生产环境,应用的管理成本会变得很高;另外,虚拟机的部署效率是很差的,因为每创建一个虚机都是有内核的;产品发布慢,业务上线慢;依赖组件搭建麻烦(服务发现、分流);监控,日志管理复杂。

-能否介绍SDN方面对Neutron的深度二次开发?采用Neutron是因为OpenStack的历史原因,还是说Kuryr、Flannel、Calico这样的技术在隔离、性能等方面确实都不如Neutron更符合网易的需求?

容器的诞生恰好弥补了虚拟机的这些不足:

尧飘海:网易蜂巢根据云计算的业务需求去做不同方面的优化,主要包括易用、安全、性能等方面。易用方面,包括租户容器网络内网扁平化和外网的直接挂载等;安全方面,包括网络带宽QoS设计原则、L2/L3/L4分层次的网络过滤等;性能方面,包括基于VxLAN的网络小包过载优化、Intel
DPDK的性能加速等。


首先,容器非常轻量级,如果你要跑一个2G的程序,创建一个2G内存就够了,因为内核是共享的;

由于网易私有云2012年就可以线上业务的使用,底层的网络架构非常的复杂,使用范围很广,无论在性能还是稳定性都方面都经过大规模的业务考验并在不断的优化,本身也有专业的网络开发团队在开发和维护,具有完全的技术把控和机房网络控制的能力,所以这个架构使用在容器云平台上是水到渠成的事情。当然,我们也同时对和Flannel、Calico等网络技术方案进行过相关的调研和验证,发现在一定的使用场景里面需要新的投入,同时要在短时间满足业务的需求,还是比较困难,特别是后续存在大量企业客户对网络的不同接入,需求会更复杂。


另外的好处是易迁移和环境的一致性,容器的镜像将所有的应用、环境、配置、依赖都打包在内了,镜像无论在哪里启动都能保持一致,而且整个镜像非常小。

-网易蜂巢采用了高规格的硬件设备,包括全SSD,但是为什么会选择则Ceph存储?对SSD的支持、I/O等方面的一些槽点,我们如何解决?


最后,镜像是有版本的,这个版本和环境的一致性结合起来,就可以保证我们能很放心地进行版本的回滚,进行版本控制。

尧飘海:蜂巢后端本身是支持二种存储类型的,包括基于iSCSI协议的NBS和基于Ceph存储,分别满足企业用户在不同的场景的使用。用户默认是使用Ceph的存储,Ceph是采用分布式架构设计的存储系统,具有高扩展、高可靠和高性能特性,并且经过了大量的用户线上的验证。在一些特殊的场景下面,比如系统重启或者对快照深度的支持等方面,确实需要对Ceph进行优化改造才能很好地使用,我们减少重启过程对集群正常I/O性能影响,降低的程度到达10%~20%,同时有效地缩短了重启恢复所需时间,重启单个OSD从10分钟减少到40秒左右。

当然容器在追求这些优势的同时,也牺牲了一些特性,比如内核共享使得容器间的隔离不足,在公有云中会存在安全隐患;应用的迁移也是应用逻辑的迁移,数据是迁移不了的,这就要求应用是无状态的;此外,容器的网络、存储、日志和配置功能都不够完善,需要做很多优化。

除此之外,网易蜂巢容器还提供支持本地盘和远程盘的特性,满足不同的企业用户在性能和可用性的选择需求,而不需要考虑额外的成本的追求。随着规模的不断发展,也将遇到更多的发挥性能极致的机会,用户对性能的追求也是蜂巢对外技术能力的输出的一部分。

网易蜂巢在采用容器作为部署单元的同时,进行了很多优化工作,去解决这些问题:

容器架构前瞻

蜂巢在编排方面的优化:

Docker似乎已经认为Serverless是微服务的方向,AWS、Bluemix也都已经在探索Serverless

• 支持多租户: 默认kubernates的namespace只隔离replication controller,pod
等资源,网易实现节点,存储、网络的租户隔离;

Computing,作为架构师,您如何看待这项技术对未来云计算的意义?

• 调度性能优化:kubernetes调度优化,任务串行队列改为多个优先级队列;

尧飘海:Serverless是当今软件架构领域最热的话题之一,用于描述依赖云端服务实现对逻辑和状态进行管理的应用。这个概念直到2016年上半年才由Martin
Fowler老爷子比较系统化地阐述出来,之前可能存在各种不同的技术实践,AWS从2014年就开始在践行相关的理念和技术推广(Lambda)。Serverless代表一种技术架构的创新,也可能成为未来的技术趋势,然而目前在国外也鲜有大型成功案例,在中国的落地发展可能需要更长的时间。微信最新推出的应用程序是相关领域的部分应用和实现,同时阿里、网易也在对Serverless架构进行探索。从我们和相关专业人士以及用户的交流来看,这种架构对云生态的系统建设的依赖较高,从跨云能力输入到输出,还是需要统一的标准和接口,才能比较好地流行起来。从技术的创新角度来说,引导大家更好地思考,对未来云计算具有非常重要的意义。

• 集群扩展性:根据Pod/Node/Replication
Controller等资源到拆分不同的etcd集群

-在容器之外,Unikernel也是当前的一个热门技术,Docker公司也收购了Unikernel

蜂巢在容器方面的优化:

Systems,您如何看待Unikernel的应用潜力?


虚拟化扁平二层网络,基于VXLAN实现租户隔离,外网网卡直接挂载到容器内部;

尧飘海:Unikernel在2016年初被收购,以其不同与传统虚拟技术为出发点,通过使用libOS构建的具有专门用途的单地址空间机器镜像,整体技术堆栈的路径更短,因此尽管存在各方面的争议,Unikernel在对大小、速度、安全、兼容性等特定的需求有很好的使用场景,可以让容器运行在物联网设备或者一定的数据中心服务器的硬件之上,甚至未来也不排除移动端APP采用容器来运行的可能。不过从总体来说,由于Unikernel在调试和诊断等技术还有很长的一段路要走,比如怎样满足永远在线、有状态等业务,发展多年的操作系统的技术,以及传统使用技术债等,要改变还是需要努力的。杭研目前主要还是专注软件生产过程的DevOps,同时保持对这些新技术的关注。

• 有状态容器挂载云盘,可实现跨主机迁移;

• 提供统一的日志收集,分析,搜索服务,利于分布式架构问题定位;

• 引入服务端 APM 解决细粒度性能分析,迅速发掘性能瓶颈

总之,蜂巢就是用IaaS层和容器层紧密结合的方式来解决了以上提到的各种问题,比如:

• 使用虚拟机解决内核隔离问题

• 使用IaaS层能力解决网络和存储问题

• 使用Kubernetes解决编排和配置问题

• 使用统一日志和监控解决容器日志监控问题

• 有状态容器暂时解决状态保持问题

新萄京娱乐场2959c 6

其中有状态的容器只是暂时的方案,还是建议进行应用的无状态化改造,主要就是把内存中的数据保存到缓存中,把用户数据保存到数据库中,把文件保存到分布式存储中,这样应用中只包含商务逻辑,无论怎么扩展都只是商务逻辑的扩展,下面的存储也都有自己的集群,不需要应用层做过多的考虑。

Kubernetes的编排方式,会让应用拆成微服务后,能以一种非常优雅的方式进行部署、编排、自发现、自修复和实现CI/CD,比如一个应用拆成了A、B、C、D四个服务,如果中间那台机器挂了,Kubernetes会把B服务和C服务移到另外2台没有挂的机器上。

容器还有一个特性就是启动后IP地址会变,而Kubernetes的服务间引用是通过服务名实现的,这就让容器的自修复成为了可能。另外Kubernetes的机制还让容器的动态扩展变得非常容易。

另外,Kubernetes还能让整个开发的流程变得很优雅,一方面容器的镜像可以使业务的代码、系统库、权限完全一致,所有的配置通过容器的编排也会保持一致,这样从Dev到Ops的各种环境维护的都是一套东西,开发人员一旦提交了代码,代码可以通过hook的方式触发到容器平台,容器平台会自动把当前的代码打包成镜像,一分钟之内测试环境就会更新,就可以进行自动化测试,测试完成后Ops就可以一键部署到生产环境,形成一套非常顺畅的DevOps流程。

新萄京娱乐场2959c 7

上面就是经过蜂巢微服务化后的一个比较理想的电商系统的简版架构。

新萄京娱乐场2959c 8

整个网易蜂巢的特色在于聚焦应用,解放开发者。对于互联网+公司和创业公司来说,无论是IaaS平台还是PaaS平台,无论是数据库、分布式存储还是缓存,想要做好调优还是非常花时间和精力的,就算是用Kubernetes,想要用好,做好二层网络的打通,和统一的存储,也是很有难度的。我们希望蜂巢的用户都能聚焦于自己的业务和产品,把基础设施的部分交给云平台来做。

另外,蜂巢是一个全开源的平台,包括MySQL、Redis、Kubernetes和OpenStack都是当下最流行的开源技术,以便让平台的应用接口和行为习惯符合大多数开发者的习惯。蜂巢会作为一个知识输出的平台,服务于企业的微服务化改造。

提问环节

提问:您刚才提到容器的隔离度不够,所以蜂巢是在IaaS层的虚拟机上再做容器的,请问是如何对性能、开销和启动时间进行调优的呢?

刘超:这个调优首先要找到慢的原因,比如容器启动比较慢,我们发现IaaS层OpenStack的很多操作对于容器平台并不是必要的,我们就把KVM弄得很简单,把IP做成静态化的配置,使得整个启动过程从分钟级降到了秒级,在启动第一个容器的时候会多几秒的时间,后续的容器如果虚拟机的资源足够完全没有损耗了。