2016年,网易杭州研究院(如下简称“杭研”)成立十周年之际,咱们推出“十年•杭研大咖说”系列访谈文章,针对亲历杭研核心技术体系变迁的数位技术大牛发问,揭秘网易云背后的技术脉络、研发思想和技术人成长的故事。本期的受访嘉宾,是杭研云计算平台产品部首席架构师尧飘海。算法
尧飘海目前负责网易容器云平台 – 网易蜂巢的建设,致力于自动化平台的架构和实践,旨在提升产品开发效率。做为互联网产品开发和基础建设的老将,以及Pomelo项目(网易开源的基于Node.js的高性能、分布式游戏服务器框架)的主要开发者,尧飘海对分布式系统设计开发、性能调优,系统架构有独到的经验和理解。他认为,容器的编排服务才是真正考验和体现应用弹性、DevOps能力的关键所在。在本次采访中,他详解了网易蜂巢根据业务需求所作的关键优化工做,并对将来的技术架构作了分析。后端
网易杭州研究院云计算平台产品部首席架构师尧飘海安全
首席架构师的感悟服务器
从您毕业加入网易至今已有7年,您(参与)开发了哪些系统?为何选择云计算架构师做为如今的职业?微信
尧飘海:你们好,我从毕业时加入网易到如今参与过不一样的业务平台的开发,包括互联网、游戏、IM等,再到云计算平台的设计与开发。经过多年来和不一样的职责的同事和朋友交流沟通,我慢慢体会到不一样职位的不一样价值,特别是技术类的开发人员。可能大部分人会认为开发只是做为业务的执行者,可是其实每个技术人都不一样的技术情节,但愿本身能写出来的代码能像爱艺术做品同样,有更长的生命力,有更好的价值,更多的服务于用户。当前,云计算行业的影响力已是随处可见,每一个用户或企业如今再也不是讨论要不要上云,而是如何上云、上好云、上新一代云等。这也是云架构师自己的职责和价值所在。网络
在杭研的开发工做中,有哪些让您印象深入的难题?您是如何解决的?架构
尧飘海:杭研的发展体系包括了技术和产品,技术开发在不少产品成长过程是很是重要的一环,也是必须的一环,和其余公司同样,咱们也会遇到各类不一样的问题。尽管每种问题表现出来的形式是不同的,最后的结果是无非是成与不成二种,把这些难题分类出来,包括沟通、流程、技术、业务等风险。做为技术人员,我开始更多的是去思考如何经过不一样的技术去解决不一样的问题,在解决的过程当中,有没有充分的沟通和信息透明,有没有更好的技术协做,解决后有没有及时的反馈和总结并在下次项目提早预防;后来,随着承担的职责不一样,会愈来愈关注技术对用户的价值和影响,从上到下、从左到右地思考产品需求是否真的可以知足用户的发展。框架
网易蜂巢是技术、知识、经验的总体输出less
网易蜂巢强调提升产品研发效率,分解出来也是当前的容器云都谈到的弹性扩展、DevOps能力,包括跨云部署,您如何理解网易蜂巢和其余容器云平台的主要区别?分布式
尧飘海:在容器云平台中,容器只能保证环境的一致性,跨云部署是其基本的能力,这是全部的容器云平台都支持的,但咱们更多的工做是如何保证很好地协调这些容器来知足业务的架构需求,也就是容器的编排服务,这些才是真正考验和体现应用弹性、DevOps能力的关键所在。除此以外,企业级的容器云须要IaaS、PaaS能力的支撑,而提供稳定的自建基础服务须要一个很长的积累过程,包括丰富稳定可靠的PaaS服务也是如此,网易蜂巢依靠网易10多年的技术积累和大规模的线上产品验证,为只专一于业务的用户提供容器云服务,帮助他们提升产品开发效率,改变软件生产过程,是总体的技术、知识、经验的输出。
网易蜂巢选择基于Kubernetes提供编排服务,主要是看重它的哪些优点?Kubernetes的二次开发主要在哪些方面?
尧飘海:Kubernetes也是Google和社区的技术、知识、经验的输出。首先,Kubernetes是由Google的Borg团队的主力开发人员主导开发和维护的,Borg在Google内部通过了10年左右的验证,每周支持20十亿的容器生命周期管理。其次,Kubernetes的总体的设计理念和微服务架构的趋势很是吻合,对各类容器技术的细节支持也较完善。最后,咱们是在2015年初作的选择,当时整个容器管理的生态和各大开源对Kubernetes的支持,及其余的容器集群管理工具的不成熟,也是咱们在思考的问题。目前Docker、Mesos的发展愈来愈快,确实是在参考Kubernetes融入不一样的新特性,这也佐证了咱们的选择。
目前网易蜂巢对Kubernetes的二次开发,除了完成支持单集群多租户的模式(很大的工做量)以外,还包括以下几个方面:
谈到多租户,容器隔离、安全的解决与性能损耗是否存在矛盾?
尧飘海:根据业务场景模式的目标做为主要解决的问题的依据,其实就再也不是矛盾了,只是从不一样的特性里面排序选择,好比是公有云仍是私有云,是互联网应用仍是游戏或者大数据场景。根据给定的条件去选择,就相对容易多了,若是没有限定条件去思考问题,只会把问题对立起来。
安全是相对的,可能没有任何系统能保证绝对100%的安全,用户会接受相对安全的等级,若是能作到必定的安全等级的划分,就比较好处理了。网易蜂巢的目标用户是公有云的企业,因此咱们目前租户之间自然隔离,同时租户内采用了虚机+容器组合的方式,能够比较好的解决这些矛盾;若是有企业用户更关注对性能的极致追求,网易蜂巢也提供了不一样的解决方案。
冰山之下的IaaS经验
可否介绍SDN方面对Neutron的深度二次开发?采用Neutron是由于OpenStack的历史缘由,仍是说Kuryr、Flannel、Calico这样的技术在隔离、性能等方面确实都不如Neutron更符合网易的需求?
尧飘海:网易蜂巢根据云计算的业务需求去作不一样方面的优化,主要包括易用、安全、性能等方面。易用方面,包括租户容器网络内网扁平化和外网的直接挂载等;安全方面,包括网络带宽QoS设计原则、L2/L3/L4分层次的网络过滤等;性能方面,包括基于VxLAN的网络小包过载优化、Intel DPDK的性能加速等。
因为网易私有云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 Computing,做为架构师,您如何看待这项技术对将来云计算的意义?
尧飘海:Serverless是当今软件架构领域最热的话题之一,用于描述依赖云端服务实现对逻辑和状态进行管理的应用。这个概念直到2016年上半年才由Martin Fowler老爷子比较系统化地阐述出来,以前可能存在各类不一样的技术实践,AWS从2014年就开始在践行相关的理念和技术推广(Lambda)。Serverless表明一种技术架构的创新,也可能成为将来的技术趋势,然而目前在国外也鲜有大型成功案例,在中国的落地发展可能须要更长的时间。微信最新推出的应用程序是相关领域的部分应用和实现,同时阿里、网易也在对Serverless 架构进行探索。从咱们和相关专业人士以及用户的交流来看,这种架构对云生态的系统建设的依赖较高,从跨云能力输入到输出,仍是须要统一的标准和接口,才能比较好地流行起来。从技术的创新角度来讲,引导你们更好地思考,对将来云计算具备很是重要的意义。
在容器以外,Unikernel也是当前的一个热门技术,Docker公司也收购了Unikernel Systems,您如何看待Unikernel的应用潜力?
尧飘海:Unikernel在2016年初被收购,以其不一样与传统虚拟技术为出发点,经过使用libOS构建的具备专门用途的单地址空间机器镜像,总体技术堆栈的路径更短,所以尽管存在各方面的争议,Unikernel在对大小、速度、安全、兼容性等特定的需求有很好的使用场景,可让容器运行在物联网设备或者必定的数据中心服务器的硬件之上,甚至将来也不排除移动端APP采用容器来运行的可能。不过从整体来讲,因为Unikernel在调试和诊断等技术还有很长的一段路要走,好比怎样知足永远在线、有状态等业务,发展多年的操做系统的技术,以及传统使用技术债等,要改变仍是须要努力的。杭研目前主要仍是专一软件生产过程的DevOps,同时保持对这些新技术的关注。