写点什么

网商银行×OceanBase:首家云上银行的分布式数据库应用实践

  • 2019-08-26
  • 本文字数:3043 字

    阅读完需:约 10 分钟

网商银行×OceanBase:首家云上银行的分布式数据库应用实践

本文整理自 2019 年大数据产业峰会网商银行技术专家杨祥合(花名:宫博)的演讲。本文将带读者深入了解网商银行在金融级分布式数据库 OceanBase 上的应用实践。


网商银行的数据库需求

随着移动互联、云计算、大数据等信息技术的蓬勃发展,互联网金融应运而生,促使银行业向互联网模式逐步转型。


网商银行致力于为小微企业、三农用户、大众消费者、中小金融机构提供普惠金融服务,从成立之初,就提出了低成本、高可用、高弹性的要求。另外,银行作为强监管行业,上级监管部门在不同场合都提出了自主可控的要求。为了满足合规和业务发展需要,网商银行采用了自主可控的金融级分布式数据库 OceanBase 作为核心数据库,并基于它构建了国内首家云上的互联网银行。



在这 4 年来,网商银行在分布式数据库的场景验证、迁移保障、新的运维体系和高可用架构等方面有了一定的积累和沉淀,今天与大家一起交流一下。

金融级分布式数据库简介

金融级分布式数据库 OceanBase,在设计和实现过程中,结合了传统关系型数据库与分布式系统领域的经典技术,具备高性能、高可用、可扩展等特性,解决了容量和容灾问题。OceanBase 采用多租户技术实现资源隔离,避免了互相影响。同时 OceanBase 具有较高的兼容性,在提升易用性同时,极大地降低了业务迁移成本。


数据库逻辑架构

下面来介绍一下 OceanBase 的产品架构,OceanBase 采用了 Share-Nothing 架构,提供了多地多副本的集群。


右侧是 OceanBase 部署示意图。OceanBase 集群至少要部署三副本,并使用 paxos 协议保持数据一致性。并具备如下的能力和优势:


(1)保证强一致性,在主备库之间,数据始终保持一致;


(2)提供水平扩展能力;


(3)提供机房/城市级容灾、异地多活、故障自动恢复能力。



下面来回顾一下网商银行在数据库架构方面的发展史。


网商银行从建设之初,采用 5 库 10 表的设计。升级到 OceanBase 1.0 后,逻辑架构进行了水平数据拆分,从 5 库 10 表到 100 库 100 表,支持全行业务系统运行在 100 个逻辑单元,最大可支持物理部署在多地的 100 个数据中心进行并行数据处理,用于满足指数级的金融业务增长需求。



创新一直是分布式数据库架构发展的源动力,并且始终贯穿在网商银行的技术实践过程中。数据库迁移拆分、秒级弹性数据源等,正是创新技术的体现。


在从 OceanBase 0.5 升级到 OceanBase 1.0 的过程中,物理架构也从两地三中心发展到目前的三地五中心,并逐步形成了一套完整的一站式数据迁移解决方案——OceanBase 迁移服务(OceanBase Migration Service,简称 OMS)。


OMS 是数据库拆分、迁移的利器,适用于在数据库版本升级、等表拆分和 1 拆多等场景中。无论数据库是同种类型,还是异构,实现了弹性拆分,同时也将影响面控制在最细粒度,可分钟级完成。



秒级弹性数据源是针对流水型业务提供了数据源的高可用和弹性能力,使用数据路由策略,将多组物理库配置成 1 个数据源。多组物理库之间互为故障切换(FailOver);可任意切换当前服务的数据库,而不会对业务产生任何影响,切换后在秒级别所在应用立即生效,从而大大拓展了数据库的能力,构建了数据源级别的高可用。



总结来说,OceanBase 迁移服务及拆分方案,实现了灵活的数据拆分和合并,以最小的影响,在分钟级完成切换。秒级弹性数据源,可在多套数据库下同时提供服务和自动切换的能力,并且实现了数据源级的自动故障切换(Auto FailOver)。

物理架构演进

物理架构方面,网商银行从原来的两地三中心,发展到三地五中心部署架构。容灾能力上,从容忍单机房挂掉,到城市级宕机。网商银行实现了业务应用上异地多活的能力。这背后是分布式数据库能力的增强,是对高可用的要求,本质上也是对客户体验的极致要求。


为了数据源的高可用,分布式数据库从架构角度,来进行分集群的设计,来降低特殊情况下的影响;伴随业务发展,数据中心的集群需要分摊到更多城市,实现单元化,来降低单集群的容损率。



高可用架构是对用户体验的极致追求。网商银行基于 OceanBase 构建了异地多活,每个城市都有全量数据,通过不同数据库的读写点交叉,由多个城市来共同承担用户的流量访问。


在数据库逻辑架构示意图中,应用每次写入数据到主库的同时,会由主库将事务日志强同步到其他的备库,且至少要写成功 2 个备库。



下面来举例说明数据库异地多活部署的逻辑架构。通过三地五中心的逻辑架构部署,实现 RPO = 0,RTO 小于 30 秒,单个数据中心或者当个地域故障都能保证数据库高可用并且不丢失数据。



下面是数据库逻辑架构下的库级别主从分布的样例。从逻辑架构上可以看出,每个机房都包含全量数据,多个数据库集群同时提供服务,用这种方式降低了单点故障对客户的影响。采用交叉部署的方式,同时提升了机器的资源利用率。


下图中是在单 IDC 故障、城市故障之下,逻辑架构中表的主节点(读写点)自动切换到可用节点上,整个过程 30 秒内完成,即业务 30 秒内可自动恢复。



纵观整个业务,在线数据库的关键不在于存储,而在于计算,伴随数据量增大,尽管计算能力够用,但仍需更多的存储空间。为了存储增加而扩大机器数量会导致成本过高,而历史库方案可解决成本过高问题。


历史库降成本有两种方案:


(1)降低在线库机器成本:把数据分成冷数据和热数据,将冷数据放到 sata 上,热数据放到 SSD 上;


(2)通过终态数据进历史库,这样历史库是只读的,降低历史库的全量备份的存储成本,从而节约大量资金。



从全生命周期的视角,数据库架构的发展是从全面共享到租户共享,再到集群专享的路线;因此,数据库架构需要高弹性,在资源少的时候共享,资源多的时候独享。



为了提升分布式数据库的弹性能力,我们引入了虚拟化的技术。


当硬件资源多的时候,通过简单的调度,即可分摊到更多硬件上来,从而降低单集群容损率,将业务影响降到最低; 架构弹性意味着按需投入,成本节约。



作为中国第一家核心系统基于云计算架构的商业银行,网商银行在实践中开启了新型银行的商业模式,即便没有一个网点,截止至 2018 年 6 月,网商银行及其前身阿里小贷已经累计为超过 1000 万家小微企业及个体经营者提供了贷款支持。


选择 OceanBase 三地五中心部署架构、分布式架构 SOFAStack 等,网商银行实现了业务应用上异地多活的能力,极大提升了全行的系统吞吐量。同时,借助 OceanBase 提供的多租户特性,在集群上按照业务重要程度与流量配比分配资源策略,在资源的共享与隔离上取得了最佳的平衡,极大的减少了 IT 基础设施的采购成本。



网商银行选择 OceanBase 三地五中心部署架构,满足全行多应用系统的管理与使用需求,让应用系统多活架构设计上变的异常简单。这些基础服务实现平台与应用的深度融合,不仅大幅提升研发效率,同时经过组合后还可支持快速重构银行业务价值链,将金融服务全面融入社会各类应用场景中。


除了经过内部多年的产品打磨和不同业务场景的千锤百炼,目前,OceanBase 也已经在多家金融机构落地应用,包括人保健康险、常熟农商行、苏州银行、广东农信等数十家商业银行和保险机构。

展望

在金融 IT 基础设施中,分布式数据库在容灾、高可用、高弹性方面不断发展,具备越来越强的产品能力。展望未来,网商银行期望在一体化数据网下,用创新的能力,通过业务、应用、架构、数据、资源等多种视角,来实现数据库的智能调度,来满足金融业务的战略目标和业务连续性。


当前,金融业正走在分布式数据库转型的路上,期望与行业同仁一起积极探索、开拓创新,努力拓展分布式数据库的应用边界。


本文转载自公众号蚂蚁金服科技(ID:Ant-Techfin)。


原文链接:


https://mp.weixin.qq.com/s/NdLLSQ_WHqG-fMa4x5rYhg


2019-08-26 10:442274
用户头像

发布了 150 篇内容, 共 40.0 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

自己搭建一个语音聊天室

anyRTC开发者

ios android 音视频 WebRTC RTC

货运物流移动端解决方案:为货运物流行业打造高性能、高粘性的“双端”触点

蚂蚁集团移动开发平台 mPaaS

移动开发 mPaaS 移动端 智慧物流

Rust从0到1-所有权-引用和借用

rust 引用 所有权 借用

OpenTelemetry 简析

阿里巴巴云原生

容器 开发者 云原生 k8s 监控

Serverless 可观测性的过去、现在与未来

阿里巴巴云原生

Serverless 容器 开发者 云原生 调度

flink流计算可视化web平台

无情

sql 流计算 flin

融云推出超值套餐包,音视频20万分钟免费享

融云 RongCloud

MySql数据库列表数据分页查询、全文检索API零代码实现

crudapi

全文检索 API crud crudapi 列表查询

Kubernetes 稳定性保障手册 -- 可观测性专题

阿里巴巴云原生

Serverless 容器 云原生 k8s 存储

二次元界福音:MakeGirlsMoe创建动漫人物

不脱发的程序猿

GitHub 开源 4月日更 二次元 MakeGirlsMoe

将AI部署到现实?或许你该读读这本书!

澳鹏Appen

人工智能 大数据 AI 伦理

荷小鱼 x mPaaS | 借助 H5 容器改善 App 白屏、浏览器兼容等问题

蚂蚁集团移动开发平台 mPaaS

html5 mPaaS 离线包 教育科技

清明节特辑 |记忆存储、声音还原、性格模仿……AI可以让人类永生吗?

华为云开发者联盟

AI 语音合成 清明节 对话机器人 VR/AR

用DeBug的方式,带你掌握HBase文件在Snapshot的各种变化

华为云开发者联盟

HBase 元数据 数据迁移 数据备份 Snapshot

单片机异常复位后如何保存变量数据

不脱发的程序猿

嵌入式 单片机 4月日更 硬件研发 单片机异常复位

融云X-Meetup南京站 探讨实时通信架构的高质量设计

融云 RongCloud

盘点几代会声会影图标

奈奈的杂社

软件测试分类体系,系统学习

程序员阿沐

软件测试 测试工程师 黑盒测试 白盒测试 测试类型

Netty HashedWheelTimer 时间轮源码详解

Yano

Java 架构 Netty

8x Flow 业务建模法(一):你能分清业务和领域吗?

胡皓

领域驱动设计 DDD 架构设计 事件风暴 业务建模

如何美化 GitHub 个人主页?

彭宏豪95

GitHub 写作 markdown IT 4月日更

Java开发8年,40W年薪被别人叫垃圾?请你们不要口嗨了,好好去刷题吧!

Java架构追梦

Java 架构 面试 金三银四 年薪40W

业务随行:用户的网络访问策略还能这么玩

华为云开发者联盟

网络 通信 安全组 IP地址 业务随行

SCF—BSS3.0的“公路网”

鲸品堂

工具 框架搭建 流式计算框架

重磅官宣:Nacos2.0 发布,性能提升 10 倍

阿里巴巴云原生

Java 容器 微服务 云原生 应用服务中间件

NAC公链主打应用而生的NA(Nirvana)公链有什么过人之处?

区块链第一资讯

在npm发布自己的组件

空城机

JavaScript 大前端 npm 4月日更 自定义组件

短视频编辑:基于ExoPlayer可实时交互的播放器

梅芳姑

定义边缘计算架构需考虑的三个方面

边缘计算

Hexo + Material + Github 搭建博客

U2647

博客 4月日更

那些我磕过的音视频项目总结

梅芳姑

网商银行×OceanBase:首家云上银行的分布式数据库应用实践_数据库_Geek_cb7643_InfoQ精选文章