近日,2019携程技术峰会在上海举行,本届峰会主题为“技速前进,与智携行”,聚焦大数据与人工智能、无线大前端、架构演进、云原生四大热门技术领域,网易云首席架构师刘超受邀在云原生分会场发表演讲,为与会嘉宾分享了网易大规模容器化与Service Mesh的实践经验。
网易云首席架构师 刘超
随着云原生技术的发展,容器化和微服务也在企业数字化转型升级的过程中发挥着越来越重要的作用。网易作为业内云原生技术的先行者,在容器和微服务的实践上积累了丰富的经验。刘超将网易的容器和微服务化历程总结为四个阶段。
阶段1:应用层和基础设施各自为战
第一个阶段,应用层和基础设施层各自为战,表现在组织架构上就是开发只负责写代码,运维只负责管理资源和部署应用。随着应用的增多,应用层成为烟囱式的架构,运维也倍感压力,通过脚本化部署解放人力。这个阶段的主要问题是脚本不成体系,难以维护;虚拟机依赖人工调度;高可用依赖底层FT、HA、DR机制,无法区分业务优先级;网络、虚拟化、存储等基础设施无抽象化概念,复杂度高,全面依赖运维,大量审批。
阶段2:应用层服务化,进入“云原生怪圈”正循环
这些问题迫使应用层开始进行服务化拆分,进入第二阶段。但微服务的体系建立并非一蹴而就,服务化的拆分,服务的注册和发现只是基础。服务化架构给应用层带来的直接问题包括服务雪崩,大量请求堆积、故障恢复慢等问题,需要引入fail fast、熔断、软负载均衡等机制。另一方面,随着应用层服务数量的增多,也会对基础设施层产生压力,造成服务器资源的分配困难以及环境的管理和部署困难。
“云原生怪圈”驱动的应用层与资源层正循环
而当企业通过基础设施层云化,平台自助化实现资源层的灵活调度后,又会激发应用层数量的增长。刘超将这个过程形象地比喻为“云原生怪圈”,而这个圈中的正向循环是云原生概念的核心体现,也是驱动网易不断在容器和微服务领域探索和优化的动力。
阶段3:基础设施层提供统一应用层框架
这时微服务框架和服务治理还停留在应用层,业务方面临大量业务代码之外的开发工作,一方面需要基础设施层统一微服务框架与开源技术栈,来服务业务方;另一方面需要基于Jenkins打造CI/CD服务,并抽象出产品、环境等多级概念,匹配实际研发情境。据刘超介绍,在第三个阶段,网易一方面通过微服务治理逻辑抽离为微服务治理框架NSF,以无侵入的方式实现,并支持Spring Cloud、Dubbo等开源技术栈;另一方面通过引入APM,API网关,容器和分布式事务等,解决这个阶段遇到的最新问题。尤其是容器化的改造,要兼容虚拟机部署模式,逐渐迁移,并且要和IaaS做到深度的融合,从而实现最优的性能。
阶段4:基础设施层提供Service Mesh框架
现阶段,也就是第四个阶段,网易的部分业务已经在进行基础设施层提供Service Mesh框架的尝试。以网易严选为例,其向Service Mesh迁移的方案整体基于Envoy+Istio,从数据面来看,Outbound指向Sidecar,Inbound可配置流量拦截,控制面以Pilot为核心,注册中心通过Kubernetes原生方式实现。同时,迁移过程中由于要兼容旧的架构,可以通过灰度引流的方式实现逐步迁移。
此外,为了应对容器化后,测试环境需求指数增长的问题,轻舟微服务还提供了流量染色功能。比如基于流量染色的测试环境管理,整个测试环境共享一套基准环境,部署所有应用,分支环境仅部署增量服务;全栈多环境多机房流量染色方案,可以同机房部署多套Kubernetes实现A/B测试,也可应对Kubernetes的升级风险问题。
云原生架构的“一栈式”工具链
网易将在微服务领域的实践经验以轻舟微服务平台的方式赋能内外部用户,帮助其实现易接入、易运维的微服务解决方案。轻舟微服务平台包括七大产品线,可以覆盖云原生架构的“一栈式”工具链。例如,API网关、NSF微服务框架和分布式事务主要用于构建中台体系,加速业务创新;容器平台主要用于探索互联网模式,支撑高并发应用;CI/CD和GoAPI测试平台,主要实现持续集成和灰度发布,用于优化产品体验。