「数据库」中国工商银行 MySQL 转型实践

一、ICBC 数据库转型背景

首先介绍下工行进行MySQL转型的背景,大概有以下四方面的考量:

1、利润提升

大家知道工行的利润在四大行当中是最高的,怎么持续做到利润提升?简单来说就是开源节流。

众所周知,国有银行以前存量核心体系核心都是 DB2,OLTP 系统是 Oracle,这种架构类型很成熟,但是运营费用昂贵,机器和服务随便就要几千万几亿资金的支出。

随着大数据时代步入成熟期,我们从数据存储从 TB 发展到 PB,科技业务量呈指数增长,大家可以看到线上化处理已经成为主流,特别是在疫情开始后,这对银行的处理能力和峰值吞吐量施加了双重压力,传统集中式这种方式已经不能满足我们的需求,我们也付不起这个成本,而基于通用的廉价的 X86 硬件基础设施在业界互联网头部公司已经广泛使用,可行性毋庸置疑,所以我们就开始借鉴他们这种方式来做。

2、同业领先

大家都说我行是宇宙第一大行,所以我们行的科技队伍人数最多的,我们要做到同业领先,大致有两点诉求:

3、技术自研

全球化的趋势要求技术无国界,但是从去年开始的贸易战,以及美国的实体管制清单,我们可以看到技术是有国界的,比如之前 HashiCorp 发布公告,其企业版产品禁止中国使用已经成为一种征兆。所以拥抱开源、提升技术自研能力,解决对商业产品的过度依赖其实是一种趋势,但是也要注意到,不是所有的开源产品有没有问题,大家一定要注意审阅开源许可证,比如 GPL 这种传染性许可证其实风险很高。同时从银行业务的特性来看,实现分布式可扩展架构,做到在线扩缩容,满足银行对事务强一致性的处理要求,对我们的技术积累都是一种不小的挑战。

4、长远规划

我行数据库产品的长远规划简单来说就是 2 步走原则:

二、ICBC 数据库建设历程

大家可以看下我行数据库的建设历程,我们最早是从 2014 年开始基于 MySQL 5.5 建立MySQL 运维平台。因为是小打小闹,并未成体系化,所以 2016 年才是我行第一阶段建设的开始,逐步完善周边配套。从 2018 年中旬开始,是我行第二阶段的建设。

第一阶段是探索 MySQL 的可能性,试点成功后就开始全面推广,并持续完善研发和运维自动化体系。

第二阶段遵循两步走的原则,一方面随着数据库越来越增多,运维成本大幅增长,资源利用率不高,所以我们将 MySQL 上云,后面我会介绍成效,大概 90% 都是基于云数据库。

另一方面,我们还要扩展技术路线,试点新产品 GaussDB 和 OceanBase,落地 5 个产品场景,一是在物联网里做了一个创新,二是在基于其他的业务场景化。单纯从应用场景来看,其可以满足银行业务要求,但是它们的生态环境不太好,就是配套周边有待完善(这里指除原厂以外的生态圈),相对 MySQL 来说还是有所欠缺。

三、ICBC MySQL实施成效

来看看我们的成效,有以下四点:

1、高度自主自控能力

我们基于开源技术构建了企业级的分布式解决方案,MySQL 数据库解决方案,满足不同业务场景的需求。还自研运维管理平台,实现规模节点集群化、自动化、标准化管理。

2、广泛运用于各业务场景

MySQL 应用高达 217 个,MySQL 数据库实例接近 8000 个,为主机应用下移提供数据服务支撑,经受了支撑双十一、春节业务高峰万级 TPS 的真实考验。

3、同业领先数据库云化服务

我行在同业率先达成了 MySQL 的大规模云化部署,占比达到 90% 以上。同时我们提供了一键式的快速供给,一键式的运维管理,简化了运维操作流程。

4、秒级恢复、分钟级切换

多站点数据存储,保证数据强一致性,实现同城双活 RPO=0。本地故障秒级恢复,无需人工干预,业务系统无感知,园区级故障分钟级同城切换。

四、ICBC 技术路线

我行技术路线其实应该跟大家玩法一致,我们最早是和腾讯做的交流,所以我们的技术路线有点接近于腾讯,使用应用架构的服务网关加上处理分组,配合运维管理平台实现的。处理分组,也就是所谓的 set 实际上包含了联机处理功能的服务器集合,既有中间件这类应用服务器,也包含了 MySQL 的数据库服务器。

当交易请求过来时,首先通过 SLB(或F5)进行负载均衡后,到达服务网关,服务网关会根据业务预设的一些字段,比如用户 ID、银行卡号、帐号进行一致性 Hash 以后,分发到对应的处理分组上,由对应分组处理完成以后返回结果,从而完成交易链路的处理。

同时我们会结合应用场景对数据进行分片,大概会做 128 个分片,并对分片进行合并部署。

最后我们在每个 MySQL 服务器部署一个 Agent,定时采集快照信息、监听可用状态等,统一上送给管理平台,管理平台可以生成 AWR 报告,也可以进行数据库探活。如果某个数据库被监测到有问题的时候,数据库运维平台就可以做到自动化的切换,实现了数据库层面的高可用能力。

1、ICBC 技术路线-分布式访问层

对于分布式访问层,这个其实褒贬不一,因为业界争议很大,比如业界有阿里的 TDDL,还有网易的 DDB 这种成熟的产品。但是我们为了完整性,最后也是做了一个分布式访问层,我们的分布式访问层有两种模式,但是相对较薄,与 TDDL 和 DDB 相比存在一定差距,但是压力相对较轻,不像他们压力会集中在访问层的维护人员手中。

2、ICBC 技术路线-高可用

对于高可用来说,我们的高可用历程是学习和借鉴互联网零头公司的经验发展而来,提供两种模式,这个应该是 5.7 的固定模式。

五、ICBC 研发管控挑战

1、问题

说了这么多,大家只看到 MySQL 的好处,但是免费的午餐并不好吃,其对应用到的研发管控层面造成严峻挑战,这一点大家务必注意,技术可行性不等于研发落地的有效执行,同时也不等于落地执行复杂度的降低。我们在进行研发管控的时候发现了 3 个层面的问题:

2、ICBC 研发管控层面

为了应对这些问题,我行在研发管控层面建立了一个完整的生态圈,这里我建议大家也可以自己做一下。因为最主要的一个问题是慢 SQL 的数量会随着应用的增加呈现爆发性增长,这一点阿里也公开说过,当时他们也是因为慢 SQL 的爆发式增长导致他们必须要建立 SRE 这个体系,所以我们是在设计、编码、测试、交付后四个阶段都做了一些处理,并建立了相关门禁,一环扣一环,确保问题及早发现和解决。

在设计阶段我们编写并发布了设计指引,建立元数据的管理标准和能力提升课程。同时通过自动化的方式形成表结构设计工具和元数据管理系统的联动体系,首先通过元数据管理系统,明确业务线和应用的字段、类型的标准,形成元数据字典,架构师设计表时,借助设计工具联动管理系系统选取所需要的元数据自动生成即可,最后还可以生成 DDL 语句,方便大家在开发环境下进行开发测试;

编码层面我们也做了自动化的门禁控制,基于 Sonar 体系使用 Druid 开发了一个数据库检查插件,对 SQL 语句以及 MyBatis 文件进行解析并分析其是否符合我们的编码规范,大概可以控制住 60% 左右的问题语句。一方面我们落实了安全检查,比如 SQL 注入检查,实现安全层面的保障。另一方面对它的写法规则进行审视,提早发现不合理的写法,毕竟 MySQL 跟 Oracle 不太一样。通过质量门禁的方式可以确保开发人员在这个层面做到强遵守,严落实,以最小代价规避生产隐患;

在测试层面我们建立安全测试和性能测试的处理机制,基于 OWASP 的 ZAP 落实黑盒测试,同时做好重要交易的性能测试,确保重点交易满足业务高并发要求,提升用户满意指数和幸福指数;

交付后我行建立了 SRE 管理体系,对慢 SQL 进行监控治理,对大事务自动查杀,提前规避生产隐患,同时会把相关案例分析和生产问题总结成经典案例,让大家学习,提升大家的意识,逐步建立对生产安全的一种敬畏感。最后我行积极践行 AIOps,基于全链路跟踪的处理数据,实现根因分析,逐步向 1-5-10 的业界故障诊断目标看齐。

六、ICBC 系统运维

1、ICBC 系统运维层面-自动化环境供给

从系统运维层面,自动化环境供给,在 2019 年 DAMS 峰会已进行过分享,提升资源使用效率约 4-5 倍,加快资源部署速度,提升内部管理效率。这里有两个问题。

2、ICBC 系统运维层面-自动化运维

从运维层面,自动化运维实际上是对数据库的一个可用性、可靠性、性能等进行监控,涵盖 100 多项监控项指标,同时基于 AIOps 实现 1-5-10 故障定位目标,及时告警。我们每个月都会对慢 SQL 进行常规性治理,可以看到下面这张模型图,我们建立了一个三维雷达图,按总数,慢 SQL 耗时以及建议优化方案和整改计划,同时我们做了一个慢 SQL 自动查杀方案,确保慢 SQL 不会对生产造成巨大影响。因为我们之前有个案例,一张表忘记建主键,备库 24 小时都没有追上主库。

自动化安装部署,我们对分布式 MySQL 数据库组件的安装配置、高可用、数据灾备、升级维护都进行了覆盖,DBA 现在应该是业界最少的了。

智能化高可用,集成了高可用切换功能,支持数据优先、同城优先的处理,融合智能告警和高可用切换动态管理,提供切换异常智能化告警和高可用保障建议能力。

3、ICBC 实际场景-客户信息系统

工行的客户信息系统承载了我行客户信息管理职能,涉及 6 亿个人客户和 1 千多万对公客户,总记录数超过 160 亿,每日 2 亿次客户信息维护与查询,最高并发数 7600 TPS,平均交易耗时小于 30 毫秒,支持应用范围同业最广、日均访问数量同业最多的处理。

七、ICBC 分布式数据库的规划

后续一些规划实际上是这样的:

1、MySQL 其他缺陷

MySQL 其实还有些其他的缺陷:

2、探索新技术路线的挑战

探索通用分布式事务数据库方案,可能数据库自身没有问题,但是从它的生态圈来说是有问题的,不够成熟,比如 PG、OB 和 TiDB 等产品还是缺乏成熟丰富的生态体系。我们使用起来的话会很痛苦,同时国产数据库蓬勃发展,技术路线差异很大,方向也没有明确,所以后面我们还会继续跟进分布式的各个产品,去保证我们会有更多的积累。

文章来源:https://mp.weixin.qq.com/s?__biz=MzkwOTIxNDQ3OA==&mid=2247534111&idx=1&sn=7707ac7be958541cea8d5b251f65c88f&chksm=c13c107ef64b99684a232c1bf29bbf2b94d69bee6ea2fcc7e9fb9208b32824ffd2f2754d5173&scene=178&cur_album_id=1771543947706695682#rd

展开阅读全文

页面更新:2024-02-23

标签:中国工商银行   数据库   分布式   同业   层面   场景   路线   业务   数据   产品   技术

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top