西安银行(600928. SH)是一家以国外大型银行、国内央企、地方国企、民营企业为主要战略投资者的区域性股份制商业银行。自1997年成立以来,历经财务重组、引进战投、企业更名、跨区域经营、综合化发展、数字化转型等战略步骤,成为西北首家A股上市银行。
截至2022年12月31日,公司员工3273人,下设总行营业部、9家省内分行、10家区域支行和12家直属支行等在内的共177家营业网点,控股2家村镇银行,参股1家汽车金融公司。线下网点覆盖区域,线上业务辐射全国。近些年来,西安银行业务提速,业绩增长飞快,连续两年入选了“全球银行品牌价值500强”。
今年年初,西安银行科技部总架构师肖梁,接受了央视频《奇妙中国》节目的采访,向我们讲述了西安银行数据库升级的故事,点击下方视频听听客户的声音。
豆浆、油条、胡辣汤,油茶、面皮、肉夹馍……西安人喜欢用一顿丰盛的早餐开启美好的一天,但对于西安银行科技部的工作人员来说,这却是一天新挑战的开始:几十万单并发支付需求会朝着西安银行的系统汹涌而来。“大家早上都要赶时间,如果支付速度慢或者经常报错,会非常影响客户的使用体验和满意度。”西安银行 OceanBase 系统升级项目经理朱攀告诉我们。这其实只是西安银行所面临挑战的一个缩影,而西安银行的解题思路也很“直接”:那就是用更先进的技术去支撑业务的发展和创新。
随着数字化转型的推进,西安银行线上渠道服务增长迅速。在其刚上线的第一年,资管平台账户就轻松突破了百万,业务量基本每年都有一倍增长,“我们会预判传统技术架构能否在未来两三年继续支撑这么高增长的用户请求量,另一方面,产品开发迭代速度在传统 IT 体系架构下是否能够赶得上业务发展的需求也是亟需考虑的问题。”西安银行科技部工作人员回忆。
基于以上两点考虑,2017年底,西安银行提出“将互联网开放平台在未来两到三年内完成分布式改造,要逐步将银行信息系统由传统集中式架构转向多节点运行、数据分布存储、动态负载均衡的分布式架构”,以更好地适应互联网时代业务高弹性、高并发、高融合的特性。
西安银行认为一个真正意义上采用分布式微服务化的系统,一定是从应用设计、技术框架、数据库设计等方面全面采用分布式技术。只有进行了全面改造的系统才能充分享受微服务分布式框架所带来的技术红利。
2017 年,西安银行开始启动互联网金融开放平台分布式架构的升级。其中,数据库分布式改造是难度最大、最重要的一环。
2019 年 5 月 11 日,西安银行成功完成了互联网金融业务平台的 MySQL 数据库以及互联网交易资金存管平台的 Oracle 数据库向 OceanBase 分布式数据库的平滑迁移,成为国内首家实现将关键业务系统的 Oracle 数据库在线平滑迁移至 OceanBase 分布式数据库的银行。
2020 年,西安银行又陆续完成了其他业务系统的升级。
彼时, OceanBase 2.1 版本在 Oracle 兼容性的支持上才刚刚起步。所以,对于 Oracle 兼容性的开发过程可以说是与西安银行共建的过程。“虽然当时 OceanBase 自己也有关于 Oracle 兼容的开发排期,但如果有来自外部的客户需求,我们会将客户的需求放在第一优先级,尽量做到让客户应用不做修改,就像使用 Oracle 一样使用 OceanBase。”OceanBase 交付与服务部服务管理部总监王春辉介绍。据西安银行团队回忆:数据库迁移项目的第一个阶段(2018 年 11 月开始),OceanBase 团队就基于西安银行的业务系统在不断丰富 Oracle 兼容性的相关功能,比如银行金融应用会普遍使用 Oracle 序列来生成流水号,但 OceanBase 原生兼容的 MySQL 并没有序列的概念——如若不支持序列则需要对整个应用系统进行较大的改造,成本巨大。就在这时,OceanBase 快速响应,在第一时间将兼容 Oracle 序列的 OceanBase 输出给了西安银行。到 2019 年 4 月,OceanBase 已经能够充分满足西安银行对 Oracle 的各项要求,版本相对稳定,彼时,双方开始着手准备数据库替换的关键步骤——数据迁移。从开发测试环境做灰度验证,之后在生产环境做了两轮模拟迁移,寻找迁移效率与系统承压的平衡点,平衡点的寻找是每个银行进行数据库迁移的难点,要根据各自的业务去探索。为了保证迁移前后的数据一致性,通常的数据迁移过程都要保证应用系统不对数据库做写操作,为此需要应用系统停业,如果迁移后开启营业,在新库有数据写入的情况下回退到源库几乎不可能,只能再次停业排查问题,存在进一步延长停业时间的风险。而此次西安银行迁移的系统是互金渠道的对客系统,长时间的停业会严重影响对客业务,因此如何尽可能缩短停业时间是西安银行在此次数据迁移中特别关注的。“如果能预估出来,不管是停一个小时,或者是两个小时三个小时,提前发公告安排合理的停业窗口都 OK,但在当时,对我们来说最大的风险其实是未知的风险。”西安银行指出。在风险未知的情况下,西安银行走了一条不同的路进行在线迁移,也成为了第一个“吃螃蟹”的银行。王春辉表示:“一开始客户都会担心从集中式到分布式差别太大,上手很难,但其实开发上没有太大差别。而且在运维上由于分布式的特点,即使某个节点出了问题,也不会对业务整体产生太大影响,故障也更好诊断。”西安银行是国内首家使用OceanBase迁移服务(OceanBase Migration Service,简称 OMS)完成在线数据迁移的商业银行。通过 OMS,系统正常营业期间就可以发起全量数据迁移,且可以控制迁移速度不拖垮源端,增量实时同步,在应用系统切换数据源的几分钟内做好数据对比、反向回写等操作就可完成数据库切换。以“西银惠付”这一西安银行特色业务为例,它在西安市民中的普及率非常高,从餐饮、购物到停车缴费,几乎是 24 小时不间断,因此这项业务对停机的时间要求非常高。于是,OceanBase 团队专门为这个业务设计了一个“动态迁移”模式,通过OMS,系统正常营业期间就可以发起全量数据迁移,且可以控制迁移速度不拖垮源端,增量实时同步,在应用系统切换数据源的几分钟内做好数据对比、反向回写等操作就可完成数据库切换,将原本需要 3 小时左右的停业时间缩短到几分钟,保障了应用系统对客服务能力。并且通过切换后的回写机制,应用系统在 OceanBase 端的更新同样会在 Oracle 端进行更新,一旦验证发现问题时,应用可以随时切换回源库,将切换风险降到最低,回退方案实际上是银行系统上线的一个安全绳,此次迁移的方案在业内非常罕见,也是 OMS 首次在蚂蚁集团的技术体系外实施。
“胆大心细”是深度参与西安银行迁移项目的两位工作人员所共同提及的迁移策略。
西安银行 OceanBase 系统升级项目经理朱攀透露:“在一些关键业务上,西安银行数据的安全、平滑迁移可以降至分钟级。”而这背后,是双方团队一起经历了 1 个月的双平台应用系统改造,94 天 8 轮内部技术测试及优化和 14 个工作日迁移灰度测试验证。在使用 OceanBase 之后,西安银行的软硬件整体成本大幅下降,应用的查询效率有大幅提升,并且有力支撑了其未来业务的灵活变化与用户的高速增长。大数据量查询效率较前期提升了一倍;迁移后存管业务仅占集群不到 1/4 的容量,却可以承载比原来更大的业务规模。与此同时,新的数据库架构和西安银行上层应用的分布式架构的契合度更高。“站在使用者的角度,我们在迁移之后几乎感受不到什么差别。而且由于分布式的架构特点,在很多方面还有独特的优势。我们国产数据库能够在这么短时间内就通过自主创新实现了与老牌数据库相当的技术和服务水平,我们也感到很兴奋。”朱攀感叹道。王春辉在总结之所以 OceanBase 能够打动包括西安银行在内的众多客户的原因时,提到了两个方面:第一,真金淬炼。在当时,很多国产数据库只有产品而并没有实际应用案例,而 OceanBase 是真正被实践验证过的,与很多其他数据库先开发再去找场景进行验证和打磨不同,OceanBase 从一开始就是基于支付宝的应用需求而开发的,对客户需求和场景的理解更深入全面。第二,真诚的服务。在迁移之余,OceanBase 以“贴身式”服务“陪伴”客户,在做好技术转移的同时,OceanBase 也会进行知识的转移,通过培训和实践,帮助西安银行培养出了一大批自己的数字化人才。
往期推荐
▼ 点击下方「阅读原文」,查看更多客户故事。