服务网格(Service Mesh)在中国工商银行的探索与实践

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: ServiceMesh是下一代的微服务架构基础。蚂蚁集团从 2018 年初开始技术探索并进行了落地试点。目前, Service Mesh 覆盖了蚂蚁集团数千个应用,实现了核心链路全覆盖。蚂蚁集团通过 Service Mesh 的大规模落地向云原生走出了坚实的一步,真切看到了基础设施下沉后为业务快速增长提供了支撑,以及对基础设施团队在研发和运维效率的提升、成本的降低上带来极大收益。现在,Service Mesh技术解决方案也正在开放给社会。下文为工商银行在应用蚂蚁Service Mesh方面的实践案例。

导读

ServiceMesh是下一代的微服务架构基础。蚂蚁集团从 2018 年初开始技术探索并进行了落地试点。目前, Service Mesh 覆盖了蚂蚁集团数千个应用,实现了核心链路全覆盖。蚂蚁集团通过 Service Mesh 的大规模落地向云原生走出了坚实的一步,真切看到了基础设施下沉后为业务快速增长提供了支撑,以及对基础设施团队在研发和运维效率的提升、成本的降低上带来极大收益。现在,Service Mesh技术解决方案也正在开放给社会。

下文为工商银行在应用蚂蚁Service Mesh方面的实践案例。

微服务架构是当今互联网和金融机构渐趋主流的系统架构模式,其核心是集成服务通信、服务治理功能的服务框架,微服务框架在持续演进同时,服务网格(Service Mesh)作为一种新型的微服务架构,因架构灵活、普适性强,被认为具有较好发展前景。

中国工商银行(后简称工行)主动探索服务网格领域,从2019年开始服务网格技术预研工作,通过对服务网格技术深入研究和实践后,于2021年建设了服务网格平台。服务网格与现有微服务架构融合发展,助力工行应用架构向分布式、服务化转型,承载未来开放平台核心银行系统。

一,业界服务网格发展现状

自2016 年服务网格技术诞生以来,业界涌现了诸多的开源产品。如,Istio(Google+IBM+Lyft)、Linkerd(Twitter)、Consul(Hashicorp)等。其中以Istio社区活跃度和认可度最高,被作为服务网格的标杆开源产品。

服务网格是一个专门处理服务通讯的基础设施层。它通过在业务Pod中注入Sidecar容器,接管业务容器的通信流量,同时Sidecar容器与网格平台的控制平面对接,基于控制平面下发的策略,对代理流量实施治理和管控,将原有服务框架的治理能力下层到Sidecar容器中,从而实现了基础框架能力的下沉,与业务系统解耦。

截屏2021-12-10 下午12.12.52.png

图1:服务网格示意图

Sidecar容器接管后端服务通信的进出流量后,通过标准协议进行服务间通信,可实现跨语言、跨协议的服务互访。

此外,Sidecar容器可对代理的流量进行管控,如统一的服务路由、安全加密、监控采集等。

截屏2021-12-10 下午12.12.59.png

图2:服务网格请求流转过程示意图

二,服务网格技术

在工行的探索与实践

工行从2015年开启了IT架构转型工程,截止目前分布式体系已覆盖240余个关键应用,生产已有约超48万个提供方分布式服务节点,日均服务调用量超127亿,逐步实现了超越主机性能容量的集群处理能力。

工行分布式服务平台在稳定支撑已有业务系统的平稳运行同时,也存在一些业界共性的挑战,诸如:

1)跨语言技术栈的互联互通需研发多套基础框架,技术研发和维护成本高。2)多产品线下,各应用使用了不同版本的基础框架,推动各应用升级框架周期较长,生产并行运行多版本的基础框架,兼容压力较大。

为解决当前痛点,工行积极引入服务网格技术,探索解耦业务系统与基础设施,完善服务治理能力。

(一)与微服务框架融合发展,构建企业级服务网格平台

服务网格(Service Mesh)平台在建设过程中,集成了原有分布式体系的注册中心、服务监控等基础设施,将原服务框架客户端中最基础的通讯协议编解码能力以轻量级客户端的形式保留在业务系统中,其余服务框架客户端的能力均下沉至Sidecar中,可与服务框架兼容发展,平滑过渡。

目前工行已完成服务网格(Service Mesh)平台的建设,在与分布式服务平台融合发展过程中,打通了异构语言系统的服务治理与监控体系,解耦了业务与中间件系统,丰富了流量治理能力,并已在智能投顾、文字识别等应用完成业务试点。

截屏2021-12-10 下午12.13.08.png

图3:服务网格边车(Sidecar)与微服务SDK对比图

服务网格控制平面包含了配置中心、注册中心、安全中心、管控中心、监控中心、日志中心等模块。

数据平面Sidecar与原服务框架使用相同的通讯协议(Dubbo/Spring Cloud),支持服务网格系统与原服务框架系统互联互通,平滑迁移。

截屏2021-12-10 下午12.13.20.png

图4:工行服务网格架构图

(二)探索企业级方案,支持规模化部署和平滑迁移

工行服务网格在大数据、高频联机等服务场景下,对流量代理部署模式、平滑迁移、性能优化等方面开展了落地实践。

(1)大数据场景下的无侵入流量代理部署模式

工行应用开发语言主要使用Java,但在大数据领域Python语言也被广泛使用。针对异构语言场景,服务网格平台提供了无侵入透明劫持的流量代理方案,简化了异构语言应用接入难度。无侵入流量代理的核心是通过修改网络Iptables规则,强制拦截进出业务容器的流量,并将这部分流量重定向至Sidecar容器。其具体实现为:在启动业务Pod时,通过Init Container(初始化容器)修改业务Pod的网络Iptables规则,该规则让进出业务容器的流量都强制重定向至Sidecar容器,实现Sidecar容器对业务容器的流量接管。

截屏2021-12-10 下午12.13.28.png

图5:透明劫持流量代理示意图

但是Iptables对性能和可维护性都存在较大的挑战,故在联机高频服务场景,我们提供了轻量级客户端与Sidecar协作的流量代理方案。

  (2)高频联机场景下的低侵入流量代理部署模式

在联机高频服务场景,我们通过对业务应用引入轻量级的客户端,该客户端在对业务透明的前提下,改变业务应用的服务注册发现行为,将原往注册中心发起的服务注册与订阅的行为转变为往本地127.0.0.1的Sidecar地址发起服务注册与订阅,并由Sidecar代理向注册中心发起服务注册与订阅。业务容器通过Sidecar代理订阅后,本地获取的服务目的地址则为127.0.0.1的Sidecar地址,后续所有请求将会直接发往Sidecar,再由Sidecar转发至真实的服务目的地址,实现流量代理能力。

截屏2021-12-10 下午12.13.35.png

图6:端口流量代理示意图

(3)传统部署向网格化部署的平滑迁移

目前工行微服务主要有基于Dubbo和Spring Cloud两种服务实例组成,且已在生产环境大规模运行,在引入服务网格系统时需具备与原微服务系统的平滑过渡能力。工行通过服务网格系统同时支持Dubbo与Spring cloud协议,服务网格实例可与原服务框架实例通过相同协议互相访问。使在同一注册中心下,服务网格系统与原分布式服务系统可融合发展,平滑过渡。

截屏2021-12-10 下午12.13.45.png

图7:平滑迁移示意图

(4)规模化部署后的性能挑战与优化

目前工行最大的注册中心集群上有超48万提供者的超大规模业务场景,而在开源Isito架构中,服务发现的目的地址、配置信息等会通过Pilot的Xds API进行全量下发。在大量服务实例的情况下,全量下发会影响 Pilot 和Sidecar 的性能和稳定性。服务网格平台通过引入第三方注册中心与配置中心。由Sidecar直接对接注册中心与配置中心,支持按需订阅,配置精准下发,大幅降低Pilot和Sidecar压力。通过压测,控制平面具备支持百万级实例的性能容量能力。

截屏2021-12-10 下午12.13.54.png

图8:工行控制面组件演进图

(三)构建企业级服务治理能力,支持精准流量管控

目前开源Istio的流量治理能力极其有限,只有基础的路由与可观察性,无法满足企业级的需求。SOFAMesh基于Istio架构设计,自研数据面,并调优部分控制面组件,可满足企业落地需求,工行与SOFAMesh团队合作,建设了金融级的服务网格平台,并对流量管控能力进行了企业级增强。工行服务网格已具备完善的监控运维能力,能监控到各节点运行时状态,支持对各节点进行实时流量调拨,对于故障节点具备实时流量摘除能力,能对各节点进行统一安全管控。

(1)监控运维能力

服务网格平台内置了完善的监控与报警能力,支持向第三方监控系统上报服务监控、链路监控等监控指标;并具备根据单位时间内的业务请求异常率阈值的报警,且能在触发限流、熔断、降级、故障自愈等服务治理功能时,同步触发对应的报警事件。

 (2)流量治理能力

服务网格平台已具备细粒度的流量精准匹配能力,从流量身份标识角度识别特定标识的流量合集,并对这部分流量进行精准管控。平台现已支持(标签级/方法级/服务级/应用级)限流、熔断、降级、路由、流量镜像、链路加密、鉴权、故障演练、故障隔离等企业级的流量管控能力。

(3)故障自愈能力

传统故障反馈依赖监控报警后通过应急预案临时处置故障节点,业务和运维定制应急预案的能力,强依赖有经验的运维工程师,新人上手成本高;且预案操作散落在文档中,可维护性差,随着业务迭代可能会逐步退化,增加操作复杂度。服务网格平台提供了一套统一的基础故障自愈系统,以时间窗口内的业务请求失败率为黄金指标,辅助窗口期间最少调用次数、失败率倍数等,实现常见故障自动感知,自动从客户端或服务端侧网络隔离故障节点,并在故障节点恢复后能网络自恢复,达到业务自愈的能力,提升了分布式系的运维高可用能力。

        截屏2021-12-10 下午12.14.02.png

图9:故障隔离工作图

  (4)安全管理能力

服务网格平台已支持安全认证能力,支持国密及多种主流算法构建加密通道,实现更加安全的数据传输,以零信任网络的安全态度,实现全链路可信、加密;并能识别调用方身份标识,根据身份标识设置访问控制策略(黑/白名单)。在有多接入方的业务场景中,可预防个别客户系统故障或者恶意攻击,对异常客户实施黑名单管控,拒绝非法访问,保护本系统的可用性。

截屏2021-12-10 下午12.14.10.png

图10:安全管控工作示意图

三,未来展望

服务网格作为云原生领域下一代微服务技术,经过5年多地演进,仅在个别头部企业大规模生产实践,以银行为代表的金融同业中尚无成功案例。

工行服务网格已完成多语言、异构技术、边缘场景的业务试点,基本论证服务网格在流量管控、系统扩展性的优势,具有下沉服务治理能力到基础设施层,高度解耦中间件与业务系统的可行性。后续,工行将在全面总结前期试点经验的基础上,扩大试点应用范围,充分论证服务网格技术在差异化的技术架构、银行多样化业务场景的适应性,同步打磨完善平台能力,全面提升性能容量和稳定性,为金融同业落地服务网格技术提供最佳实践与示范。

相关文章
|
10天前
|
自然语言处理 监控 Cloud Native
探索微服务架构中的服务网格Service Mesh
【10月更文挑战第7天】服务网格(Service Mesh)是微服务架构中的关键组件,通过在每个服务实例旁部署Sidecar代理,实现服务间通信的管理、监控和安全增强。本文介绍了服务网格的基本概念、核心组件、优势及实施步骤,探讨了其在现代开发中的应用,并提供了实战技巧。
|
2月前
|
运维 负载均衡 监控
探索微服务架构下的服务网格(Service Mesh)实践之路
【8月更文挑战第30天】 在当今日益复杂的分布式系统中,微服务架构已成为众多企业解决系统扩展与维护难题的利器。然而,随着服务的不断增多和网络交互的复杂性提升,传统的微服务管理方式开始显得力不从心。服务网格(Service Mesh)作为一种新兴的解决方案,旨在通过提供应用层的网络基础设施来简化服务间通讯,并增强系统的可观察性和安全性。本文将分享我在采用服务网格技术过程中的经验与思考,探讨如何在现代云原生环境中有效地实施服务网格,以及它给开发和运维带来的变革。
|
4月前
|
负载均衡 测试技术 网络安全
阿里云服务网格ASM多集群实践(一)多集群管理概述
服务网格多集群管理网络打通和部署模式的多种最佳实践
|
3月前
|
Cloud Native 测试技术 开发者
阿里云服务网格ASM多集群实践(二):高效按需的应用多环境部署与全链路灰度发布
介绍服务网格ASM提出的一种多集群部署下的多环境部署与全链路灰度发布解决方案。
|
5月前
|
监控 负载均衡 数据安全/隐私保护
探索微服务架构下的服务网格(Service Mesh)实践
【5月更文挑战第6天】 在现代软件工程的复杂多变的开发环境中,微服务架构已成为构建、部署和扩展应用的一种流行方式。随着微服务架构的普及,服务网格(Service Mesh)作为一种新兴技术范式,旨在提供一种透明且高效的方式来管理微服务间的通讯。本文将深入探讨服务网格的核心概念、它在微服务架构中的作用以及如何在实际项目中落地实施服务网格。通过剖析服务网格的关键组件及其与现有系统的协同工作方式,我们揭示了服务网格提高系统可观察性、安全性和可操作性的内在机制。此外,文章还将分享一些实践中的挑战和应对策略,为开发者和企业决策者提供实用的参考。
|
5月前
|
负载均衡 监控 Go
Golang深入浅出之-Go语言中的服务网格(Service Mesh)原理与应用
【5月更文挑战第5天】服务网格是处理服务间通信的基础设施层,常由数据平面(代理,如Envoy)和控制平面(管理配置)组成。本文讨论了服务发现、负载均衡和追踪等常见问题及其解决方案,并展示了使用Go语言实现Envoy sidecar配置的例子,强调Go语言在构建服务网格中的优势。服务网格能提升微服务的管理和可观测性,正确应对问题能构建更健壮的分布式系统。
437 1
|
5月前
|
运维 监控 负载均衡
探索微服务架构下的服务网格(Service Mesh)实践之路
【4月更文挑战第30天】 在现代云计算的大背景下,微服务架构以其灵活性和可扩展性成为众多企业转型的首选。然而,随着服务的激增和网络交互的复杂化,传统的服务通信模式已无法满足需求,服务网格(Service Mesh)应运而生。本文通过分析服务网格的核心组件、运作机制以及在企业中的实际应用案例,探讨了服务网格在微服务架构中的关键作用及其带来的变革,同时提出了实施过程中面临的挑战和解决策略。
|
5月前
|
运维 监控 Cloud Native
云原生架构下的服务网格演进与实践
【5月更文挑战第23天】 随着云计算技术的不断成熟,云原生架构已成为推动企业数字化转型的关键动力。本文将深入探讨服务网格在云原生环境中的重要性,分析其在微服务管理、流量控制和安全性方面的创新应用。通过对服务网格的技术和实践案例的剖析,揭示其如何优化云原生应用的部署、运行和管理,为企业构建更加动态、可靠和高效的分布式系统提供策略指导。
|
5月前
|
Oracle 关系型数据库
oracle asm 磁盘显示offline
oracle asm 磁盘显示offline
284 2
|
5月前
|
存储 Oracle 关系型数据库
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
oracle数据库ASM磁盘组掉线,ASM实例不能挂载。数据库管理员尝试修复数据库,但是没有成功。
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例