2

网易轻舟如何基于 Istio 实现微服务架构演进

 3 years ago
source link: https://cloudnative.to/blog/netease-qingzhou-istio/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Problem

网易作为一家拥有众多互联网业务的公司,不同业务结合自身的业务特性、团队组成均有一些微服务技术栈选择、体系建设,这在业务发展初期并没有问题。当业务持续发展,不管业务规模、复杂度、团队的组成都发生了变化,这时候微服务架构就会遇到诸多问题:

  • 各业务分别投入研发,研发成本高
  • 网易集团技术资产无法沉淀
  • 微服务框架对业务侵入性大,需要业务人员明显感知、学习、掌控和维护
  • 升级周期长,即使是很小版本的框架升级,都需要动辄1个月以上的升级周期
  • 语言局限,绝大多数核心业务的微服务体系基于Java语言构建,对其他语言支持薄弱

Strategy

Service Mesh是云原生体系下重要的微服务技术,可以有效的解决网易诸多互联网业务在微服务架构下存在的问题。网易选择Istio这一有代表性的Service Mesh开源框架有着深刻的考虑:

  • 有深厚的云原生背景及大厂背书
  • Istio的核心数据面组件Envoy是云原生数据面的事实标准组件
  • 在Service Mesh领域,Istio是最为流行的框架选择,有着活跃的技术社区和优秀的技术架构
  • Istio在帮助企业落地、框架易用性方面持续优化,具备企业应用的亲和性

在确定Istio为Service Mesh框架选型后,网易数帆的轻舟团队构建了轻舟Service Mesh平台,以解决网易集团诸多互联网业务面临的微服务架构问题,并整合已有的微服务治理框架,形成支撑通用分布式、微服务架构演进的微服务平台,赋能更多企业的微服务架构演进与升级。此外,网易轻舟还基于Istio技术栈实现了API网关体系升级,基于Envoy与Isito的轻舟API网关能力更丰富,性能更好,已成为网易API网关的标准组件。

尽管Istio提供了非常完整的Service Mesh解决方案,企业在构建Service Mesh体系时仍需要明晰的建设路线。 008eGmZEly1gn9clbh23vj30ye0ow4b3.jpg

架构设计

网易轻舟Service Mesh整体架构如下。

008eGmZEly1gn9gb5r80fj311s0u0adk.jpg

架构设计要点:

  • 通过 扩展Envoy+定制Istio 进行了整体的架构设计,并进行相应的可行性验证。
  • 以Envoy为核心的数据面,支持多种拦截方式 。除原生Istio支持的全量拦截TCP流量外,加入了IP指向、动态控制拦截等易于业务接入的流量拦截方式。
  • 以Istio Pilot为核心的控制面,其他组件可插拔 。Istio 1.5之前版本控制面组件较多,维护成本较高。选定控制面核心组件Pilot为必要组件,其他组件可插拔,不仅降低了Istio生产落地的风险和运维成本,也让研发、维护者在体系构建上更加聚焦。
  • 多种扩展方式,供业务已有平台快速接入 。提供了原生Istio CRD、MCP、API平面等多种平台开放方式,一方面将原生能力完整保留,另一方面通过简单Restful API方式,降低企业平台构建或已有平台接入成本。
  • 性能优化 :组件、网络多管齐下。一方面在组件层进行优化,如将Istio早期版本集中式Mixer后端能力下沉到Envoy filter,提供基于调用链路审计的配置瘦身等。另一方面配合容器网络进行网络加速,降低延时。

演进方案

基于整体架构设计,结合业务实际的架构、技术栈,形成微服务架构演进方案。以网易电商业务演进方案为例,演进架构图如下: 008eGmZEly1gn9gb6swd4j30y70u00vq.jpg

演进要点:

  • 基于 业务现有技术、架构分析 ,形成迁移的整体架构
  • 业务接入 :在基础设施层进行适配,保障业务无感知迁移
  • 跨云互访 :基于边缘网关的混合云方案,保障迁移前后环境无缝互访
  • 高可用保障 :兜底路由、灰度引流等能力建设,保障迁移过程的SLA

平台建设

Istio落地过程中,业务需要网格整体视图及快速治理能力,为此我们增强了网易轻舟微服务平台,加入Service Mesh管控能力,支持Service Mesh与微服务框架(Spring Cloud、Dubbo、gRPC、Thrift)跨集群统一管控,帮助用户现有微服务架构平滑迁移。

008eGmZEly1gn9gb550amj31o20u0jvv.jpg008eGmZEly1gn9gb7jd9oj31o20u0gr3.jpg

建设要点:结合业务痛点,完善产品能力

  • 可观测性 :提供整体视图及快速治理功能
  • 易用性 :云原生概念产品级封装
  • 扩展性 :Open API 体系建设,业务平台快速接入

体系建设

基于Istio的Service Mesh技术架构需要完整的体系保障。

体系建设要点: 构建、部署体系 :Service Mesh组件CICD、自动部署 质量体系 :自动化功能、性能、稳定性测试;整体故障测试;混沌测试 排障体系 :业务、组件排障,快速对Service Mesh体系的故障定位与恢复 运维保障体系 :立体化监控、报警 热升级体系 :支持Sidecar热升 开源技术体系 :轻舟团队对Service Mesh社区持续贡献

场景扩展:支撑API网关

008eGmZEly1gn9gb4oef0j30d40bj0tj.jpg

设计要点:

  • 扩展Service Mesh技术栈,复用云原生技术成果
  • 整体设计与可行性验证
  • Envoy作为高性能数据面,增强插件扩展能力
  • Istio Pilot作为基础控制面,多种扩展接入方式
  • API平面设计,屏蔽平台差异,方便平台快捷接入

Results

  • 网易严选、传媒、有道、行业平台等业务实现业务落地, 千级服务、万级实例接入
  • 实现网易微服务基础设施下沉。各业务线研发不再需要过多关注微服务治理,降低业务微服务整体研发与维护成本
  • 快速引入多语言治理、热升级、故障注入、路由、熔断降级等服务治理能力
  • 赋能网易集团业务,实现微服务技术栈的统一,向云原生技术方向演进
  • 作为云原生基础设施长期规划,支撑更多应用场景:API网关、DB&中间件 Mesh、故障演练等。API网关已成为网易API网关标准组件, 支撑网易传媒、严选、Lofter等多个业务核心服务全站流量接入
  • 网易微服务架构与技术在业界处于领先梯队水平

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK