网商银行数据库迭代记,OceanBase助力金融创新实践

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
性能测试 PTS,5000VUM额度
简介: 2020年12月21日第十一届中国数据库技术大会(DTCC 2020)于北京如期举行,网商银行架构师,存储底盘负责人杨祥合先生,在 “OceanBase 企业级分布式数据库实践专场” 分享了《网商银行分布式数据库应用实践》的演讲,本文为演讲实录

2020年12月21日第十一届中国数据库技术大会(DTCC 2020)于北京如期举行,网商银行架构师,存储底盘负责人杨祥合先生,在 “OceanBase 企业级分布式数据库实践专场” 分享了《网商银行分布式数据库应用实践》的演讲,以下为演讲实录:

随着数据量爆发,业务日益复杂,现今 IT 环境中面对的场景复杂度和故障率也越来越高,甚至在国内出现了多起数据安全“黑天鹅”事件。以下分享将以网商银行的架构历史演进和对数据库的应用徐徐展开,以期给诸位带来启发。

网商银行架构史,斩获人行科技奖

网商银行是一家以普惠金融为使命的互联网银行,业务主要面向三农和小微企业。技术底盘架构在蚂蚁金融云和 OceanBase 上。作为 OceanBase 服务的第一家银行,网商银行对高并发、扩展性、数据一致性的需求一开始就存在。而在数据库选型的过程中,首先考虑的是高可用和高弹性,其次是低成本和自研。

我们先从存储架构和数据库版本两个方面来谈谈网商银行的发展史。

存储架构方面,从最初的两地三中心,到后来从 OceanBase 0.5版本升级到 OceanBase 1.0版本,实现了三地五中心的单元化。“三地五中心”,即在三座城市部署五个中心,一旦其中一到两个中心发生故障,甚至一个城市出现问题,业务都能够在 30 秒内自动恢复。

2019年,将 OceanBase 在高可用、扩展性用于混合云架构,在做多云架构时,面对不同业务目标的多朵云,可以一键将数据扩展到另一朵云上。2020年,开始落地云原生架构,配合全栈加密,从用户数据进入到服务的全过程,整个生命周期数据传输加密,落在磁盘上的数据都是密文。

在数据库方面,网商银行基于分库分表的数据库架构,从设计之初就设定单元化的目标。使用分库分表多集群,解决了库设计上的单点问题,数据库的升级、备份等在不同集群之间错峰进行,避免影响全局。

1.png

网商银行架构师,存储底盘负责人杨祥合

网商银行到底有怎样的技术实力?这在网商银行成立之初,就在行业中引起了热议。当时我们做了一个勇敢的决定,在生产系统中来一次断网演练。当完成了相关的报备后,我们就正式开始了这次断网演练,直接把生产系统中其中一个机房的流量全部断掉。让行业震惊的是,网商银行用了不到 1 分钟便实现了快速恢复,这背后其实充分体现的就是 OceanBase 的高可用、快速恢复的自治能力。

整个三地五中心异地多活的项目落地之后,我们把项目上报到人行,该项目最终获得了人行科技发展二等奖。实际的生产环境中,网商银行利用人行的窗口,定期做断网演练,这是发现自身问题的重要举措。

网商银行架构一览,从分库分表到批场景

OceanBase 不只是数据库,云原生架构之后,可实现链路加密,在 ServiceMesh 做加密,数据库做解密。目前,网商银行数据库集群规模 100 多套,数据量达到 PB 级。在线库和历史库架构中,历史库访问量较低。云原生微服务起来后,数据库、业务系统不断被拆分,需要下游的核心能力,包括建立一些基于 AI 能力的加持。

在分库分表方面,网商银行采用分区架构,在生产实践当中,有热点库、热点行、热点表等挑战,这些热点利用分区的能力,每一个分区独立到一台机器。

银行业务中的海量数据的处理方面,数据库设计是每批次并发处理 13~130 亿。具体逻辑为,每个批次查询 5000-100 万条,单表拆分片数 13 片到 2600 片,按照这个逻辑,网商银行使用了 999 分片,最大每批次可处理 130 亿账户。

批场景中,利用分库分表的基础上,使用表分区提高并发跑批能力。如银行工资代发、团体险等需使用表分区的能力,如企业人员导入,原本一个单表导入做成多个分区,把不同的数据打散不同的分区上提升性能。

业界有厂商宣称,库高可用是人为切主对业务无影响。我们认为应增加主库宕机 1 分钟内自动恢复,且数据保持一致的要求。网商银行数据库的标准是在此基础上,两个机房同时故障,也能够达到 RPO=0、RTO<1分钟。

金融业选型建议,从数据库到历史库

数据库选型,性能隐私双保险

一是主备模式不适合金融高并发场景。主库出问题需层层上报,强拉备库为主会丢数据。如果采用强同步模式,经测试性能会降 10 倍,这种性能下降是无法接受的。

据中国信通院发布云数据库标准选型建议,一致性协议应该成为金融数据库标配。高可用架构=快速恢复+最小影响面。快速恢复依赖一致性协议的加持。最小影响面分横纵两个纬度,横向拆分成多个集群、做分库分表和表内分片,纵向拆分成多个机房,让不同范围的用户编号进入到不同的机房,这样单机房/单个分库的故障影响面影响降到最小。

国家越来越重视用户隐私,用户安全的主题下,将全行数据加密提上日程。数据从金融网关进入网商那一刻起就变成密文,密文传输、密文存储;银行的备份和传统企业不一样,既要有同程备份又要有超远程的备份,中间有网络传输加密、透明加密,传输到超远程机房,再做一层存储透明加密。

历史库选型,让数据远离丢失风险

冷热分离为什么会带来数据丢失的风险?因为,在线数据库通过读取校验整个数据,CRC 验证 block 完整性,冷数据如果发生故障,没有读请求来验证数据块是否正常,从而难以发现坏块,极端情况甚至会导致多个副本永久丢失。

OceanBase 数据库有一个后台的进程,不间断扫描数据进行校验,以此发现问题,让数据库的备份真正的有效。如果几个月后才发现问题,为时晚矣,因为数据备份保存不了那么久。根据我们的历史库选型原则,一定要有后台校验,让数据远离丢失风险;此外,还要关注加密,保护用户隐私。

高性能探索实践,创新迭代扛大促

网商银行和 OceanBase 一路创新前行,不断探索向上。

线上性能摸底—链路压测

网商银行用的全链路压测方法进行容量摸底。通过压测代码上传到平台,将产出的流量打入金融网关,网关调用一层层业务服务。直接在生产系统进行压测,标通过标记区分是压测的业务,中间件把压测流量打到影子库中去;整体上,流量穿越所有的微服务链路,通过全链路压测进行容量摸底,确保链路上无单点流量瓶颈。

每年大促活动前,通过全链路压测进行容量摸底。

混合云弹性架构—大促弹出(20%)

假如网商银行一朵云上机器资源已用尽,能否并让流量跑到另一朵云上?通过混合云的弹性架构,数据库的一键扩展,应用上做单元化适配。今年大促最终弹出 20% 的流量到新云上,充分验证了 OceanBase 的快速的扩展能力。

OceanBase 致力于打造金融行业银行业的数据库,同时最令人骄傲的一点是 OceanBase 是中国人自己的数据库,希望行业同仁的交流能带来更多创新的尝试,带动国产数据库走向更广阔的发展。

相关文章
|
3天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
4天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
7天前
|
SQL Java 数据库
Spring Boot与Flyway:数据库版本控制的自动化实践
【10月更文挑战第19天】 在软件开发中,数据库的版本控制是一个至关重要的环节,它确保了数据库结构的一致性和项目的顺利迭代。Spring Boot结合Flyway提供了一种自动化的数据库版本控制解决方案,极大地简化了数据库迁移管理。本文将详细介绍如何使用Spring Boot和Flyway实现数据库版本的自动化控制。
10 2
|
20天前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
30 11
|
19天前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
20天前
|
Rust 前端开发 关系型数据库
Tauri 开发实践 — Tauri 集成本地数据库
本文介绍了在 Tauri 框架中集成本地数据库的几种方案,包括直接绑定 SQLite、使用第三方数据库库和使用 tauri-plugin-sql-api 插件。最终选择了 tauri-plugin-sql-api,因为它集成简单、支持多种数据库类型,并且与 Tauri 框架深度整合,提升了开发效率和安全性。文章详细介绍了如何安装和使用该插件,以及如何编写核心代码实现数据库操作。
89 2
|
24天前
|
SQL 关系型数据库 数据库
SQL数据库:核心原理与应用实践
随着信息技术的飞速发展,数据库管理系统已成为各类组织和企业中不可或缺的核心组件。在众多数据库管理系统中,SQL(结构化查询语言)数据库以其强大的数据管理能力和灵活性,广泛应用于各类业务场景。本文将深入探讨SQL数据库的基本原理、核心特性以及实际应用。一、SQL数据库概述SQL数据库是一种关系型数据库
22 5
|
23天前
|
SQL 开发框架 .NET
ASP连接SQL数据库:从基础到实践
随着互联网技术的快速发展,数据库与应用程序之间的连接成为了软件开发中的一项关键技术。ASP(ActiveServerPages)是一种在服务器端执行的脚本环境,它能够生成动态的网页内容。而SQL数据库则是一种关系型数据库管理系统,广泛应用于各类网站和应用程序的数据存储和管理。本文将详细介绍如何使用A
36 3
|
28天前
|
SQL 存储 人工智能
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
在「DATA+AI」见解论坛上,OceanBase CTO杨传辉先生分享了AI与数据库技术融合的最新进展。他探讨了AI如何助力数据库技术演进,并介绍了OceanBase一体化数据库的创新。OceanBase通过单机分布式一体化架构,实现了从小规模到大规模的无缝扩展,具备高可用性和高效的数据处理能力。此外,OceanBase还实现了交易处理、分析和AI的一体化,大幅提升了系统的灵活性和性能。杨传辉强调,OceanBase的目标是成为一套能满足80%工作负载需求的系统,推动AI技术在各行各业的广泛应用。关注我们,深入了解AI与大数据的未来!
|
27天前
|
关系型数据库 数据挖掘 数据库
解析数据库联结:应用与实践中的 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN 与 CROSS JOIN
解析数据库联结:应用与实践中的 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN 与 CROSS JOIN
41 1