2018年,微服务方兴未艾,Service Mesh(服务网格)又快速崛起。有观点认为,2018年可被称之为“Service Mesh元年”,在未来两年中,Service Mesh将迎来爆发式增长,成为下一代的微服务架构。

那么,Service Mesh到底是什么?自2016年被提出,为何不到两年就获得了如此高的人气?Service Mesh又能为企业解决哪些问题?在近日召开的GIAC全球互联网架构大会上,蚂蚁金服高级技术专家黄挺以蚂蚁金服的自身实践为例,深入解读了Service Mesh。

蚂蚁金服高级技术专家黄挺

解决蚂蚁金服三大难题

“Service Mesh”最早由开发Linkerd的Buoyant公司提出,2016年9月第一次公开使用该名词。对于什么是Service Mesh,Linkerd首席执行官William Morgan曾经给出这样的解释:

“服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服务网格负责在这些拓扑中实现请求的可靠传输。在实践中,服务网格通常实现为一组轻量级网络代理,它们与应用程序部署在一起,而对应用程序透明。”

这听起来还是有些抽象,黄挺用蚂蚁金服自身的例子,解读了Service Mesh的三个主要应用场景:

其一,解决多语言通信的问题,用同一套基础设施解决不同的语言的通信问题。

众所周知,SOFA 中间件(Scalable Open Financial Architecture)是蚂蚁金服自主研发的金融级分布式中间件,被蚂蚁金服广泛应用于支付、借贷、信用、基金、保险等全金融场景,支撑蚂蚁金服平稳度过历次“双11”、“双12”、“新春红包”等苛刻考验。

如今SOFA包含丰富的组件,如SOFA Boot、微服务、数据访问代理、分布式事物、消息队列、分布式链路跟踪等,基本上包含了分布式架构所需的各种中间件。

“然而有一个问题是,这些中间件都是用Java写的”,黄挺指出,当前蚂蚁金服技术栈大部分基于Java语言,包含2000+应用和20000+服务;但还有一部分应用是基于NodeJS、C++、Golang和Python语言,要把这些应用融入到SOFA体系,按照传统的方式,各种语言的客户端都需要再实现一遍,带来巨大的工作量,同时要承担大量风险。

而通过Service Mesh中的Sidecar,服务注册中心、限流熔断、动态配置、故障注入等客户端可以和NodeJS、C++、Golang、Python等具体语言解绑,让基础中间件和具体的应用脱离关联,即“一次实现,搞定所有语言的客户端”,用一套基础设施解决不同语言的通信问题,大大节省了工作量。

其二,解决遗留系统融入问题,让一些遗留系统更好的融入到云原生体系。

很多传统企业,包括金融机构往往有着大量的遗留系统,随着传统企业云化的深入,这些遗留系统也需要转变为云原生应用。“一种方式是直接把系统代码重新做一遍,直接用云原生的方式再写一遍”,黄挺认为,这种方式虽然比较直接,但是也比较粗暴,有可能在迁移过程当中出现非常多的Bug。

而有了Service Mesh之后,通过Sidecar,遗留系统不经改造,或是只需要很少的改造,可以非常方便的和云原生体系融合到一起。

其三,解耦基础设施团队和应用研发团队,增强基础设施团队的交付能力和交付速度。

近些年,蚂蚁金服的技术架构逐渐从单体应用向服务化架构演进。据黄挺介绍,在单体应用中,通常需要多个团队去改同一套代码,一起部署、一起发布,以及发现问题一起回滚,这个过程非常痛苦。

“应用研发有时候无法很好的理解基础设施的东西,升级容易出现问题。基础设施团队有时候也无法很好地去了解应用研发。应用研发和基础设施团队耦合在一起发布、变更、升级,非常容易出现问题”,黄挺说。

Service Mesh让蚂蚁金服找到了解决问题的方法,通过Service Mesh,应用研发和基础设施团队能够最大程度地解耦,做厚技术中台,让中间件可以更快的交付业务需要的能力。

黄挺举例说,以前SOFARPC中新的能力需要半年甚至一年的时间才能逐步应用于蚂蚁金服核心系统,有了SOFA Mesh(蚂蚁金服自研的Service Mesh),蚂蚁金服可以在一个月的时间内将新的能力快速地提供给所有的业务系统,而不用一个个的去升级业务系统。

蚂蚁金服SOFA Mesh自研路

Service Mesh是一个很新的框架,2016年1月 15日,Linkerd 0.0.7版本发布,这是能够在Github上看到的第一个Service Mesh。如今,业界流行的Service Mesh框架已经包括Linkerd、Istio和Conduit等。

据黄挺介绍,蚂蚁金服在考量业界主流Service Mesh框架的时候,有着两个明确的需求:其一,能否从蚂蚁金服当前的架构下渐进式地演进到Service Mesh架构之下;其二,在性能和稳定性上能否满足蚂蚁金服金融级以及高流量的要求。

经过大规模的验证,当前业界主流的Service Mesh并不能很好地满足蚂蚁金服这两个需求。例如,Istio在性能上存有缺陷,无法满足蚂蚁金服高流量和高性能的需求;Linkerd架构不够开放,资源占用率较高;Conduit当前版本还不够成熟,并且基于非常新的RUST语言,精通的人较少。

现有Service Mesh架构均不能满足需求,而蚂蚁金服在传统服务化架构上已经有十余年积累,这两个因素让蚂蚁金服选择自研Service Mesh——SOFA Mesh

但“自研”并不代表一定要“从零开始”。“我们没有从零开始直接构建一个Service Mesh框架,而是借鉴了一些现有Service Mesh框架的优秀经验,同时尽量遵从整个Service Mesh社区的规范”,黄挺表示,例如,在Control Plane的Pilot以及Auth,SOFA Mesh直接选择了集成Istio的部分,并且进行了适当地增强。

“SOFA Mesh一切的技术选择都是能够让蚂蚁金服稳定、高效、渐进式地演进到 Serivce Mesh 架构下,因此SOFA Mesh在技术上的选择更加务实,也希望能够和业界保持技术上的互通”,黄挺强调。

尽管不是从零开始构建,但SOFA Mesh的开发过程也并不简单。

黄挺回忆说,SOFA Mesh自研过程中最大的困难是第一次上线时候的进度压力,因为当时有着切实的业务需求:“当时的一个场景需要用C++去调用后端一个用SOFA写的Java系统,为了满足业务上的要求,我们集结了应用网络和中间件团队,组成了技术攻坚团队,最终花了差不多两个月的时间从零开始构建了SOFA Mesh Golang版本的Sidecar,并且对接到SOFA服务化体系下,最终保证了业务的正常上线,在性能以及稳定性上都满足了业务的需求。”

经过蚂蚁金服业务场景的不断磨练,SOFA Mesh如今已经在蚂蚁金服多个场景中落地。据黄挺介绍,SOFA Mesh在蚂蚁金服内部更多的被应用于多语言支持,亦被应用于解决内部服务调用的安全以及在能力发布上的问题,此外也在规划解决异构体系的通信问题,在蚂蚁金服业务中发挥着越来越关键的作用。

Mesh的未来——Xmesh

作为一个新兴的技术框架,Service Mesh从2016年被提出来,去年迎来了蓬勃发展。不仅是蚂蚁金服,谷歌、IBM、华为等业界巨头已经参与到Service Mesh的研发之中,国内多家互联网和云计算企业也开始在Service Mesh进行验证和投入。

黄挺认为,2018年,随着云原生理念的进一步地被传播,以及 Kubernetes 等容器编排平台被更多的公司所采纳,Service Mesh 也必将在今年有更好蓬勃地发展。

“我们预计今年会有更多的公司在内部去实践Service Mesh,也非常期待在业界能够听到更多公司的Service Mesh的实践。从形态上,除了Service Mesh,也会逐步出现其他形式的Mesh,比如Message Mesh或者DB Mesh等等”,对于Service Mesh的未来,黄挺十分乐观。

而对于蚂蚁金服来说,其自研的SOFA Mesh会继续在内部更多场景下落地,用更多的场景去“磨练”SOFA Mesh。“未来我们也不排除在服务调用上之外的场景做 Mesh,在数据访问、消息通信上也用上Mesh的场景,以达到在基础设施上更加统一的目的”黄挺说。

据黄挺透露,蚂蚁金服目前也正在紧锣密鼓地准备SOFA Mesh的开源。SOFA Mesh的诞生结合了业界的先进理念和经验,而蚂蚁金服也希望将SOFA Mesh的成果反馈给社区,推动SOFA Mesh生态的良性发展。

蚂蚁金服缘何自研Service Mesh?的更多相关文章

  1. 干货 | 蚂蚁金服是如何实现经典服务化架构往 Service Mesh 方向的演进的?

    干货 | 蚂蚁金服是如何实现经典服务化架构往 Service Mesh 方向的演进的? https://www.sohu.com/a/235575064_99940985 干货 | 蚂蚁金服是如何实现 ...

  2. 蚂蚁金服首席数据科学家漆远:AI技术开放,与业界融合共创

    小蚂蚁说: 11月8日,在第五届世界互联网大会-<人工智能:融合发展新机遇>论坛上,蚂蚁金服副总裁.首席数据科学家漆远认为AI具有控制风险.降本增效和提升用户体验三大作用. 11月8日,第 ...

  3. 蚂蚁金服 Service Mesh 渐进式迁移方案|Service Mesh Meetup 实录

    小蚂蚁说: 本文是基于在 Service Mesher Meetup 上海站的主题分享<蚂蚁金服 Service Mesh 渐进式迁移方案>内容整理,完整的分享 PPT 获取方式见文章底部 ...

  4. 蚂蚁金服 Service Mesh 实践探索

    SOFAMesh是蚂蚁金服在ServiceMesh方向上的探索,下面是它高级技术专家敖小剑在QCon上海2018上的演讲. Service Mesh 是一个 基础设施层,用于处理服务间通讯.现代云原生 ...

  5. 蚂蚁金服研发的金融级分布式中间件SOFA背后的故事

    导读:GIAC大会期间,蚂蚁金服杨冰,黄挺等讲师面向华南技术社区做了<数字金融时代的云原生架构转型路径>和<从传统服务化走向Service Mesh>等演讲,就此机会,高可用架 ...

  6. 备战双 11!蚂蚁金服万级规模 K8s 集群管理系统如何设计?

    作者 | 蚂蚁金服技术专家 沧漠 关注『阿里巴巴云原生』公众号,回复关键词"1024",可获取本文 PPT. 前言 Kubernetes 以其超前的设计理念和优秀的技术架构,在容器 ...

  7. 胡喜:从 BASIC 到 basic ,蚂蚁金服技术要解决两个基本的计算问题

    摘要: 揭开 BASIC College 神秘面纱,蚂蚁金服首次揭秘人才培养机制. 导读:5 月 6 日,蚂蚁金服副 CTO 胡喜在 2019 年 QCon 上做了<蚂蚁金服十五年技术架构演进之 ...

  8. 蚂蚁金服SOFAMesh在多语言上的实践

    在用一项技术前,一定要知道它的优点和缺点,它的优点是否对你有足够的吸引力,它的缺点不足你是否有办法补上.黄挺在CNUTCon全球运维大会上的分享也很不错. 黄挺,蚂蚁金服高级技术专家,蚂蚁金服分布式架 ...

  9. 我是如何拿到蚂蚁金服 offer 的 ?

    阅读本文大概需要 5.6 分钟. 作者:翟洪毅 一.梦想和被拒 二.积累 三.结语   首先介绍一下投稿作者 翟洪毅,16年华理计算机本科毕业.在年前拿到了蚂蚁金服Java开发的offer,P6. 工 ...

随机推荐

  1. numpy 中的 broadcasting 理解

    broadcast 是 numpy 中 array 的一个重要操作. 首先,broadcast 只适用于加减. 然后,broadcast 执行的时候,如果两个 array 的 shape 不一样,会先 ...

  2. ubuntu 12.04启用休眠

    x86-64 与EM64区别 EM64T全称是Extended Memory 64 Technology(64位内存技术扩展技术.Intel声称“EM64T技术是Intel对IA32平台一系列技术革新 ...

  3. Android——进程通信/ AIDL/Message相关知识总结贴

    Android多进程通信 http://www.apkbus.com/android-83462-1-1.html Android 跨进程通信(一) http://www.apkbus.com/and ...

  4. 如何查看Ubuntu下已安装包版本号

    之前的工作大部分在红帽企业版 下工作,查找安装包用rpm 很方便,但是由于这边大部分的服务器的运行环境是ubantu,补补. 在终端下也可以很方便查看已安装的软件包版本号,也能单独查看所需要的软件包是 ...

  5. 配置yum软件仓库(redhat 7.0)

    第一步:切换到yum配置文件目录 执行:cd /etc/yum.repos.d/ 第二步:创建文件并进行编辑:vi rhel7.repo 写入如下内容:[rhel7] name=rhel7 ##名字随 ...

  6. CentOS7.4安装配置mysql8 TAR免安装版

    下载mysql: https://dev.mysql.com/downloads/mysql/ 解压tar.xz文件:先 xz -d mysql-8.0.15-linux-glibc2.12-x86_ ...

  7. [svc]linux的ip命令操作接口和路由表

    参考: https://www.tecmint.com/ip-command-examples/ 学会linux的配置ip,配置网关,添加路由等命令 man ip man ip address man ...

  8. 8个超实用的jQuery插件应用

    自jQuery诞生以来,jQuery社区都在不断地.自发地为jQuery创建许许多多功能不一的插件应用,很多jQuery插件非常实用,对我们的前端开发帮助相当大,不仅可以更完美的完成指定功能,而且节省 ...

  9. Oracle数据库学习(一)安装和简单使用

    新公司的新项目,需要用到Oracle数据库,所以现在便来解除此数据库,不得不说,这个数据库还这是麻烦. 安装倒是简单,就是中间会遇到各种问题. 安装步骤参考:https://blog.csdn.net ...

  10. Centos 编译安装nodejs&express框架

    一. 下载nodejs 版本 wget http://nodejs.org/dist/v0.10.28/node-v0.10.28.tar.gz 二. 编译安装 cp node-v0.10.28.ta ...