2018中国云原生用户大会:网易云爆料完整微服务的研发过程
近日,由才云科技、K8sMeetup 中国社区、Kubeflow 中国社区联合主办的 2018 中国云原生用户大会在杭州白马湖建国饭店举办,来自各个行业领域的云原生技术专家、云原生技术落地企业代表、以及云原生技术爱好者们齐聚一堂,为国内市场带来了全球最新技术动态与趋势分析,推进企业搭建云原生框架构造云原生应用,推进云原生与企业 IT 的融合。
网易云副总经理陈谔在主论坛分享了网易对于“完整微服务技术栈的定义和实践探索”,网易作为一家打造多款互联网爆款的公司,用户暴涨的阶段,技术架构也面临着严峻的挑战。网易从2010年开始对微服务的探索,目前已广泛采用了微服务技术栈,并在这个过程中形成了一整套微服务架构的解决方案,陈谔在本次大会中独家揭秘了网易在这个过程中历经多个阶段的探索与实践。
(网易云副总经理 陈谔)
从2006年建站至今,即将退休的网易博客是可以说是网易服务化的先行者。2010年网易博客已经不再是一个简单的博客,还涵盖了社交、相册、音乐等多个方面的功能,随着业务的日渐复杂,版本更新迭代遭遇很大瓶颈。陈谔回忆道:“那个时候我们很自然地想到了引入服务化的架构,首先做工程的拆分,再进一步围绕代码和运行环境拆分成独立地进程。后来随着服务的增多,我们也做了服务的统一注册、发现等功能,那时候我们称之为服务的集成。”
但服务化架构并不完全算是一剂良药,也带来了很多问题。比如,服务独立部署容易造成雪崩效应,传统的异常处理和错误处理模型会造成大量请求堆积、故障恢复慢等。据陈谔介绍,针对这些问题,网易做了一系列的应对策略,比如引入Bulkheading做隔离,引入线程池来避免服务雪崩,这也是目前很多开源框架的做法;引入熔断机制让不能被服务的老请求快速失败,快速恢复故障等。
到这个阶段还是没有解决所有的问题,2010年云计算还未普及,由于公司内部的服务器机型很难统一,资源的分配非常困难;另外,同时随着服务的拆分,测试、开发环境的数量大增,环境的管理、部署更新都变得非常困难。据陈谔介绍:“当时的博客被拆到七八个服务之后就没办法再拆下去了,但我们知道随着互联网业务变得越来越复杂,这是必须要面对的问题,所以我们就开始回炉做基础设施的建设,首先就是基础设施的云化。”基础设施的回炉重造,最终将整个网易使用的服务器机型统一到了只有5款,由于QoS和隔离机制的引入,资源利用率提升了300%,也使得运维效率大幅度提升。
一直以来,网易都是一家注重使用开源、开放标准的公司,陈谔说:“所以我们发现SpringCloud、Dubbo这些开源框架后,果断进行了采纳,将服务治理逻辑抽离,以无侵入方式实现,支持Spring Cloud、Dubbo等开源技术栈。”针对前面提到的开发测试环境众多难以管理的问题,陈谔介绍说,网易云基于Jenkins衔接云计算环境,支持通过Agent部署软件包,做了整套的CI/CD服务,同时还抽象出了产品、环境等多级概念,匹配实际的研发情境。
这个阶段依然还有新的问题出现,陈谔一一分享了网易的应对策略:比如传统的监控只能告诉你哪个地方负载高,哪个地方有线程堆积,排障复杂度高,网易引入了全链路跟踪服务,结合日志服务能快速发现故障点上下文,近期还加入了对OpenTracing标准的支持;比如CD服务模版管理混乱,出现上千个无法重用的模版,容器技术的出现能够很好地解决这个问题,所以网易在2015年就开始全面推进和拥抱容器的标准;此外,还会遇到服务器生命周期管理复杂的问题,比如电商业务在大促之后,服务器下线或转移流程冗长,初期网易零散实现了Auto Scaling的功能,后续Kubernetes出现之后,全面拥抱了Kubernetes的集群编排和管理标准。
陈谔总结说:“至此,我们就形成了一个比较完整的微服务技术栈,由于这个技术栈的无侵入性,对集团外部的客户也有很大的价值,网易云将其进行了包装和产品化,并取名为轻舟。取自李白的‘两岸猿声啼不住,轻舟已过万重山’,也希望轻舟微服务能够帮助更多的企业解决IT长期演进过程中遇到的问题。”