蚂蚁金服 DB Mesh 的探索与实践

2019双11,支付宝有哪些“秘密武器”? 2019双11,支付宝参战的第十一年。 与十一年前相比,双11的许多东西都改变了。比如金额——2684亿,差不多是十一年前的5000倍;比如流量——订单峰值54.4万笔/秒,曾经是想都不敢想的数字;再比如层出不穷的新技术,就是这些惊人数字背后的“秘密武器”,给迎战双11的战士们作最完备的武装。 也有始终不变的东西。大战来临前的紧张、不安、如履薄冰,对每一个细节反复check的“强迫症”,以... 阅读详情

蚂蚁金服数据访问层有三个核心组件:数据访问框架 ZDAL、数据访问代理 DBP 和 OceanBase 代理服务器 OBProxy。本篇主要涉及 ZDAL 和 OBProxy 两个组件。ZDAL 作为全站数据访问的标准组件,不仅提供了分库分表、读写分离、分布式 Sequence 等标准的应用能力,还提供了链路跟踪、影子压测、单元化、容灾切换等技术风险能力 。OBProxy 作为 OceanBase 的访问入口,提供了 OceanBase 路由寻址、读写分离等数据库能力,同时从执行效率和资源成本角度考虑,从 OBProxy 诞生那天我们就采用了近应用的独立进程部署模式,目前生产环境上保持在几十万级别的进程数。

本篇文章通过介绍当前蚂蚁金服数据访问层遇到的问题、解决的思路、演进的方向三个方面,期望能够阐述 DB Mesh 发展的一些思考让更多同学认识 DB Mesh。期望能够用 DB Mesh 的方式将数据访问层下沉到统一的基础设施之上,让新业务快速使用上蚂蚁金服内部多年的技术风险能力,并能够持续享受到更多的性能、资源等技术红利。

背景

随着业务的快速发展,ZDAL 作为客户端模式的组件,一直存在业务耦合、版本迭代推进、多语言支持等问题。OBProxy 是为 OceanBase 数据库专门量身定制的代理服务器,天然就是业务无耦合、支持多语言。用户的数据在 OceanBase 上以多副本的形式存放在各个 OBServer 上,OBProxy 则负责接收用户发过来的 SQL 请求,解析 SQL 请求并计算分区信息后,将用户请求转发到最佳目标 OBServer 上,并将执行结果给用户。在蚂蚁金服内部也存在分库分表组件 ZDAL,用在多 OceanBase 集群以及单元化的场景。两者配合使用,分库分表组件 ZDAL 做业务层的流量调拨,OceanBase 分区功能支持数据库的水平扩容能力。

我们进一步看 ZDAL 和 OBProxy 这两个组件的核心逻辑。

ZDAL 的核心逻辑:

  • SQL 解析器:获得表名及分库分表字段;

  • 规则引擎:计算分库分表结果;

  • 执行层:将 SQL 改写发给数据库,并做结果集合并用户;

OBProxy 的核心逻辑:

  • 协议解析器:解析协议中的 SQL,Parse 后获得表名及分区字段;

  • 路由器:计算分区表所在的 OBServer;

  • IO 层:将请求转发给 OBServer,将结果集返回给客户端;

可以看出,OBProxy 和 ZDAL 这两个组件的执行路径有一定的重复度,比如两个组件都做了 SQL 解析,并分析表名和字段。这对性能带来一定的损耗,而且这种重复给研发迭代带来更多的工作量。

基于前面的考虑将 ZDAL 和 OBProxy 两者合并成一个组件的是一个自然的方案,通过将 ZDAL 逻辑下沉到 OBProxy 中,让 OBProxy 提供了分库分表、读写分离、分布式序列等中间件能力,这个组件我们命名为 ODP(Open Database Proxy)。

ODP 作为近业务端部署的进程,虽然逻辑独立出来,升级时但是依然需要去改动业务的容器,所以迭代过程中的升级推进工作也是比较费时费力,而且 ODP 只是整个产品的冰山一角,需要大量的精力来构建冰山之下的基础设施,比如说如何解决 ODP 的运维问题、用户透明切换的方案、复杂配置的推送问题、金融级数据库密钥管理问题等。我们发现这部分与蚂蚁金服内部大规模实践的 ServiceMesh 遇到的问题有比较大的重合度,所以与 ServiceMesh 一起共建底层基础设施,为这块的完整产品方案命名为 DBMesh。下文会简单介绍一下我们的演进路线和发展方向。

解决思路

Sidecar 模式以解耦部署

从执行效率和资源成本角度考虑,OBProxy 在蚂蚁金服一直都在采用近业务端部署的方式,日常保有的服务数在数十万的级别。近业务端部署虽然提供了高效率,但是也带来了运维上的复杂度,同时需要升级版本时,也需要和通知业务一起来做发布和升级。要让单个应用升级,基本都是按月计,如果涉及到全站层面的升级,时间基本不太好估算。

但是随着云原生以及 Kubernetes 的发展,让 Sidecar 模式更为成熟,即在业务的容器旁边再运行一个容器,这个非常贴合我们近业务端部署的 OBProxy 进程,只需要将 OBProxy 进程改造成 OBProxy Sidecar,即可进行独立升级、发布、运维等。同时蚂蚁金服在云原生领域有非常深的实践,有着世界上最大规模的 Kubernetes 集群和 ServiceMesh 集群,将 OBProxy 变成 Sidecar 也是比较合理和方便实施的了。

今年双十一切了约 10% 的数万个的 PODs 到 ODP Sidecar 模式,通过 Sidecar 的方式能够让业务快速享受到基础软件迭代的好处,本次双十一 ODP 修复了一个非预期日志打印导致某个机房出现慢 SQL 问题,在传统的本地进程方式,需要推动所有的业务进行拉迭代、发布、打包时间周期基本不太可控。而今年让所有涉及应用独立的灰度、升级仅花费两天时间。

合并重复逻辑拿技术红利

解决了部署模式的问题,通过快速迭代并且独立升级的方式,才能让功能下沉的落地成为可能。我们将分库分表组件的大多数功能都下沉到了 ODP 上,比如:分库分表功能、读写分离功能、分布式 Sequence 功能、全链路跟踪等。如下图:

整个分库分表组件功能下沉之后,在今年双十一我们在核心系统上线,拿到了一些非常可观的技术红利:

  • 性能提升:通过功能的合并可以省去额外的 SQL 解析和路由计算过程,双十一上线的系统 SQL 平均响应时间可以下降上百微秒;

  • 启动速度:应用只需要和 ODP 建立连接即可,无需初始化多个分库的数据源,初始化时间从数十秒降到数十毫秒;

  • 内存下降:和启动速度一样,由于应用和 ODP 的连接数减少了,同样也可以节省应用端的内存使用,生产上能够下降上百 MB;

共建 Mesh 基础设施完善技术风险

研发同学会将更多的关注点放在 ODP 数据链路上,如何提高数据平面的性能,如何增加更多的 SQL 特性,而会忽略非 SQL 执行链路上的诉求。DBMesh 作为应用侧的基础设施,更多的要考虑如何更好的管理 Sidecar、数据访问高安全防控、满足配置变更的三板斧要求、最大程度的节省资源成本等。

我们在与蚂蚁金服 ServiceMesh 团队共建整个云原生下 Mesh 的技术风险能力,优先完善 Sidecar 的运维能力和变更三板斧能力,后续会将 ODP Sidecar 部署到宿主机上以最大程度优化 ODP 的资源占用,也会逐步下沉更多如影子压测、灰度机房、流量镜像等的技术风险能力。

总结

DBMesh 让数据访问从客户端模式切换到代理模式,给应用带来了启动速度的极大优化。Sidecar 的部署模式则是 SQL 平均响应时间、资源利用的最优模式。将更多的技术风险能力沉淀进来,让新应用快速享受到金融级的技术风险能力,存量应用的技术风险指标更完善。我们期望通过统一的数据访问基础设施,让业务都使用标准的技术组件,降低学习以及维护成本,仅专注在业务开发和创新上。

作者介绍

易鸿伟(花名:改之),蚂蚁金服高级技术专家,负责数据中间件及 OceanBase 链路层方向的研发工作。主要技术关注在分布式数据库、高性能服务器、数据库高可用、分布式事务、单元化架构等,并对微服务、云原生、Mesh 等技术有一定的理解。

相关文章阅读

本文归档在 sofastack.tech。

???? 奖励支持 SOFAStack 的你~

* 点下右下角“在看”

* 到公众号对话框发送“U型枕”,试试手气~

* 本期互动奖品“蚂蚁 U 型枕”

蚂蚁金服副 CTO胡喜:从 BASIC 到 basic ,蚂蚁金服十五年技术架构演进之路 主要观点 1. 蚂蚁金服过去十五年,通过技术重塑了支付和微贷业务。Blockchain (区块链)、ArtificialIntelligence(人工智能)、Security(安全)、 IoT(物联网)和 Cloud computing(云计算),这五大 BASIC 技术仍会是金融科技的基石。BASIC 里最基础的能力是计算能力,只有不断提升计算能力,才能适应未来应用场景的千变万化。 2... 阅读详情

相关推荐

阿里云导出的镜像raw转换成vmdk格式工具

阿里云导出的镜像raw转换成vmdk格式工具 1.安装java环境,安装教程不介绍了 2.raw2vmdk软件下载: 在我的链接里面: 3.使用 打开cmd.bat软件: java -jar raw2vmdk.jar (原镜像)C:\\images\\raw\\disk.img (转换的镜像)D:\\images\\vmdk\\disk.vmdk 4.vmware打开vmdk文件 ...

3843

SphereEx苗立尧:云原生架构下的Database Mesh研发实践

通过Service Mesh对数据库访问进行治理

开源吞噬世界。 859

FitzHugh-Nagumo 模型连续-MATLAB仿真

【代码】FitzHugh-Nagumo 模型连续-MATLAB仿真。

qq_43688618的博客 882

蚂蚁金服 Service Mesh 落地实践与挑战 | GIAC 实录

本文整理自GIAC(GLOBAL INTERNET ARCHITECTURE CONFERENCE)全球互联网架构大会,蚂蚁金服平台数据技术事业群技术专家石建伟(花名:...

金融级分布式架构 3047

多模态融合相关概念

多模态图像融合

weixin_43921949的博客 7357

OpenAI Codex 国内安装配置全攻略:从零到实战的 AI 编程助手集成指南

AI 编程助手正成为提升开发效率的关键工具,其核心原理是基于大规模语言模型对代码语义进行深度理解与生成。这类技术通过将自然语言指令转化为可执行的代码、自动化重构与调试,为开发者提供了智能化的结对编程体验,其技术价值在于显著降低编码复杂度、加速项目迭代。在实际应用场景中,AI 编程助手可集成于日常开发流,辅助完成代码生成、项目分析与自动化任务。本文聚焦于 OpenAI 的 Codex,针对国内开发者在网络、认证和配置上的常见挑战,提供了涵盖多种安装方式、详细配置步骤及核心使用技巧的实战指南,并特别介绍了如何利

weixin_28715081的博客 415

蚂蚁云原生应用运行时的探索和实践 - ArchSummit 上海

Mesh 模式的引入是实现应用云原生的关键路径,蚂蚁集团已在内部实现大规模落地。随着 Message、DB、Cache Mesh 等更多的中间件能力的下沉,从 Mesh 演进而来的应用运行...

金融级分布式架构 397

数据挖掘实战-基于长短期记忆网络(LSTM)的黄金价格预测模型 | 97% 准确度

本实验基于Kaggle上提供的从2013年到2023年的黄金价格数据集,运用长短期记忆网络(LSTM)构建了黄金价格预测模型。该数据集详细记录了每日的黄金价格信息,包括开盘价、收盘价、高点、低点和交易量等,为模型的训练提供了丰富的数据支持。

m0_64336780的博客 1万+

当谈起分库分表时我们该关注什么

一、为什么分库分表 首先呢,能不分表分库就不要分表分库。为什么要分库分表,用大白话说 就是数据库快扛不住了 1.1 为什么分库 瓶颈来自数据库的压力:数据库出现性能瓶颈,对外表现有几个方面:(1)大量请求阻塞在高并发场景下,大量请求都需要操作数据库,导致连接数不够了,请求处于阻塞状态。(2)SQL 操作变慢如果数据库中存在一张几千万甚至上亿数据量的表,一条 SQL 没有命中索引会全表扫描,这个查询耗时会非常久。(3)存储出现问题业务量剧增,单库数据量越来越大,给存储造成巨大压力。(4)写并发能力也是有.

博学之,审问之,慎思之,明辨之,笃行之 2031

系统分析师论文范文(三)微服务

摘要(300字) 2024年4月,我作为系统分析师参与某省三甲医院云影像系统建设项目,负责系统分析与设计工作。该项目旨在响应国家"无胶片化"医疗政策,解决传统影像系统数据孤岛、调阅效率低等问题。系统基于DICOM 3.0和HL7国际标准,采用B/S架构与Spring Cloud Alibaba微服务技术栈,包含影像采集、智能分析、数据安全等核心模块,实现全院影像资源的云端统一管理与多端调阅。在架构设计上,通过微服务拆分、分布式事务控制及多层次安全防护机制,保障了系统的高可用性与数据一致性。系统于2024年1

echo的博客 221

开源鸿蒙具身机器人(ROS2框架):从内核驱动到智能算法的完整实践

本指导文档旨在为开发者提供完整的开源鸿蒙(OpenHarmony)具身机器人开发解决方案,涵盖从底层驱动到上层ROS2应用的全栈开发流程。文档结合OpenHarmony内核驱动移植技术和ROS2机器人操作系统,为具身机器人开发提供详细的技术指导。具身机器人(Embodied Robot)是指具有物理实体、能够感知环境并与之交互的智能机器人系统。感知-决策-执行闭环多模态传感器融合(视觉、听觉、触觉、力觉)实时环境感知与理解智能决策与规划精确运动控制执行具身智能特性物理世界交互能力。

m0_67505153的博客 1269

蚂蚁金服 Service Mesh 落地实践与挑战|成都Service Mesh沙龙预告

本文整理自 GIAC(GLOBAL INTERNET ARCHITECTURE CONFERENCE)全球互联网架构大会,蚂蚁金服平台数据技术事业群技术专家石建伟(花名:...

中生代技术 315

微信小程序 - 详解苹果ios手机请求不到数据访问不了接口,但安卓却可以正常访问。wx.request苹果手机IOS请求失败、安卓可以请求成功(微信小程序上线后苹果手机不能访问接口,网络请求失败排查)

微信小程序上线后,苹果手机请求不到数据,安卓可以,微信小程序,安卓可以调接口,苹果调不了的解决方案,微信小程序:IOS访问不了接口,安卓可以正常访问,微信小程序ios版本连接不了服务器,小程序Android可以请求,ios请求失败wx.request,成功上线的小程序,安卓机可以正常访问使用,苹果微信小程序不执行请求,苹果系统无法加载数据,微信小程序 iOS 网络失败,微信小程序接口请求在ios端报错,苹果手机真机调试微信小程序出现网络请求失败,微信小程序 安卓正常 ios调接口显示网络请求失败,微信小程序

🏆 前端领域优质创作者 4361

蚂蚁金服 Service Mesh 大规模落地系列 - RPC 篇

蚂蚁金服云原生负责人鲁直 双十一后首次线下分享引言Service Mesh 是蚂蚁金服下一代架构的核心,本主题主要分享在蚂蚁金服当前的体量下,我们如何做到在奔跑的火车上换轮子,将现有的 ...

金融级分布式架构 1153

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

蚂蚁金服是如何实现经典服务化架构向Service Mesh方向演进的?

前言 在过去的一段时间中蚂蚁金服已经开始采用 Service Mesh 来帮助解决一些架构上的问题,并且在 Service Mesh 如何更好地与经典的服务化架构结合上有一定的经验,希望借此分享和大家交流我们这部分的实践。使大家对蚂蚁金服当前的服务化架构有更多了解,并对 Service Mesh 如何解决经典服务化架构中的问题以及蚂蚁金服实际在落地Service Mesh 中的时候的一些设计考虑...

一个天秤座的架构师 2万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

从蚂蚁金服实践入手,带你深入了解 Service Mesh

\u003cblockquote\u003e\n\u003cp\u003e本文整理自蚂蚁金服高级技术专家敖小剑在 QCon 上海 2018 上的演讲。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e我是来自蚂蚁金服中间件团队的敖小剑,目前是蚂蚁金服 Service Mesh 项目的 PD。我同时也是 Servicemesher 中国技术社...

cpongo55 480

蚂蚁金服 Service Mesh 大规模落地系列 - Operator 篇

本文为《蚂蚁金服 Service Mesh 大规模落地系列》第六篇 - Operator 篇,该系列将会从核心、RPC、消息、无线网关、控制面、安全、运维、测试等模块对 Service ...

金融级分布式架构 556

金融级云原生如何助力双十一?蚂蚁金服的实践经验是这样

2019年11月19日,蚂蚁金服在北京举办“巅峰洞见·聚焦金融新技术”发布会,介绍2019双11支付宝背后的技术,并重磅发布全新 OceanBase 2.2 版本和 SOFAStack 双模微服务平台。我们将系列演讲整理并发布在“蚂蚁金服科技”公众号上,欢迎关注。 蚂蚁金服金融科技产品技术部总经理杨冰,在发布会分享了蚂蚁金服金融级云原生在双十一的大规模应用实践,以下为演讲整理全文: 2...

蚂蚁金服技术团队 2208

Service Mesh 落地负责人亲述:蚂蚁金服双十一四大考题

Service Mesh 是蚂蚁金服下一代架构的核心,2019年蚂蚁金服大规模的 Service Mesh 落地,我有幸带领并面对了这个挑战,并非常平稳的通过了双十一的大考。 当 Service Mesh 遇到双十一又会迸发出怎样的火花? 蚂蚁金服的 LDC 架构继续演进的过程中,Service Mesh 要承载起哪方面的责任? 本场 Chat 我们借助四个“双十一考题”一一为大家揭晓。...

GitChat 572

蚂蚁金服 Service Mesh 双十一实战

蚂蚁金服每年双十一大促会面临非常大的流量挑战,在已有 LDC 微服务架构下已支撑起弹性扩容能力。Service Mesh 是蚂蚁金服下一代架构的核心,RPC、消息、DB、安全、运维等每一个环节均充满挑战。 本场 Chat 中将会分享: 在蚂蚁金服当前的体量下,我们如何做到在奔跑的火车上换轮子,将现有的 SOA 体系快速演进至 Service Mesh 架构。 当有多个大促分阶段进行时,如何在架构上...

GitChat 825
上一篇: 蚂蚁金服 Service Mesh 大规模落地系列 - 网关篇
下一篇: 蚂蚁金服 Service Mesh 大规模落地系列 - Operator 篇
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值