招商银行周伟:Fintech数据开放平台之数据库军规和内功修炼(含PPT)

编者说明:在2018数据库大会上,招商银行的资深数据库架构师周伟,分享了招行金融科技数据开放平台的建设经验。这个主题引起了现场听众的广泛关注,我们在此整理发布出来,以其让更多用户能够借鉴到招商银行的成功经验(关注本公众号,回复2018DTCC ,可以在根目录下找到本文PPT)。

作者: 周伟 招商银行 数据库架构师

个人介绍:招商银行数据库管理室数据架构组Leader, 从事数据库行业14年,所负责的信用卡代授权数据架构, 解决了主机下移的性能问题,并适应FinTech时代高并发、 高可用、可扩展的业务场景,成功经受住双十一促销节海量支付请求的考验。


以下是分享内容整理。


招商银行行长田惠宇讲过这样一段话:金融科技银行就是『以科技敏捷带动业务敏捷』,创造最佳客户体验,实现效率、成本、风险的最佳平衡。在此思想指导之下,招商银行的金融科技建设迅速展开推进。

在金融科技的进程中,招商银行逐步从投资巨大、集中式的主机系统,迁移和转换到分布式架构,以X86和云计算为基础的新平台模式。

为贯彻招行『移动优先』战略,持续提升运维保障水平,招商银行制定了明确的『数据开放平台应对策略』,并提出了四大解决方案:

  1. 通过应用读写分离、数据多活等,构建金融高可用架构;

  2. 通过运维标准化、流程化、自动化,提供云服务能力;

  3. 加强DevOps建设,完善自动化发布;

  4. 进行分布式计算联合创新,构建弹性伸缩能力

在这四大原则的指导之下,具体的数据架构规划建设逐层展开。

在从主机下移到开放架构,首先需要获取的是高可用,这是金融系统最基础的保障要求。而Oracle提供的丰富MAA架构,正是高可用的成熟解决方案。比如Oracle的 Extended RAC,可以构建多站点的双活架构,确保业务的可用性。

(关于扩展RAC集群的知识,请参考云和恩墨的成功案例:通过扩展RAC集群,打造多站点数据库双活架构


那么招商银行的数据库建设,有哪些具体的落地要求呢?

在实践中,招行形成了兼顾可用性和扩展性的5大要求:

  1. 读写分离;

  2. 分库分表;

  3. 数据双活;

  4. 无状态冗余;

  5. 数据放通;

其中前三项比较好理解,后两项我们展开说明一下。


无状态冗余是指在应急的时候,通过预先创建的数据库或表快速接管『无状态』的应用,使得业务可以在数据库服务能力受损时继续办理,确保业务连续性不受影响

在这种情况下,冗余库可能使的某些业务交易受损,但是核心流程不受影响,在主生产库恢复之后,可以通过数据合并确保数据的一致性。

编者注:这种『无状态冗余』充分体现了提前预案的重要性,很多企业在系统架构时,未考虑应急情况,则主生产流程上出现任何问题,都可以导致业务全面中断。所以,一个真正高可用的架构,要充分考虑各种可能出现的异常,并且做出提前的预案。


招商银行的『数据放通』是指,在关键路径上有不强依赖数据库的备选路径,在数据库正常情况下,业务操作通过首选路径,同步写入数据库;如果数据库不正常,则通过消息队列、本地缓存或者日志文件落地数据,通过异步写入数据库,使业务连续性不受数据库可用性的影响


为了确保整个系统的高可用,招商银行也对投产发布进行了严格的管控。在准入判断时,对于新增系统设备,必须满足『第二级准入条件』,也就是前面所说的5大要求,确保整体制度、高可用架构的规范落地

招商银行通过持续的DevOps建设,应用发布的自动化平台极大的提高了系统的发布效率,将以前以月计算的发布周期缩短到以周或者天计算。极大提高的应用的敏捷性:


在后端数据库环境的部署上,也实现了全流程的自动化,完成一套环境的构建,从一到两周缩短到不到两小时即可完成。


招商银行的数据库运维操作,遵循了从原子化标准化、到流程编排的自动化演进过程,已经实现了工具化和平台化,下图展示了一键导出导入的功能设计,从流程、脚本,到前端自助式的页面,效率大大提升。


在数据双活架构上,招商银行实现了成熟的设计和迭代落地,下图展示了代授权业务的异地数据双活设计,整体设计的概要如下:

  1. 深圳和上海双数据中心;

  2. 每个数据中心是2节点的RAC集群;

  3. 数据库根据客户号后两位将数据拆分;

  4. RAC不同节点访问数据严格隔离;

  5. 四个节点分别访问四部分数据;

  6. 深圳和上海之间通过OGG进行数据同步;


这个架构是兼顾性能和高可用的典型架构,数据访问隔离确保RAC集群的高性能,数据异地访问隔离,确保同步的有效性。在这个架构中,本地节点失效,RAC来保障,站点失效,异地来保障

为了减少对于生产的影响,确保日志的有效落地,在两地还分别设立了本地日志落地点,在此进行日志抽取分析:

对于无状态冗余系统,其高可用架构设计如下图:


对于某些查询密集型功能,其静态数据查询,实现了读写分离的设计。确保分散主库的读压力,例如,对于用户绑卡列表查询,这个展示在用户登录之后的信息,查询需求非常大,但是不做数据操作修改,最适合读写分离改造。所以按照以下逻辑架构进行了专门的设计:

最后,感谢周伟老师授权社区发表和分享招商银行的成功经验。他的团队正在扩充人手感兴趣的可以关注招聘信息:




资源下载

关注公众号:数据和云(OraNews)回复关键字获取

2018DTCC , 数据库大会PPT

2017DTC,2017 DTC 大会 PPT

DBALIFE ,“DBA 的一天”海报

DBA04 ,DBA 手记4 电子书

122ARCH ,Oracle 12.2体系结构图

2017OOW ,Oracle OpenWorld 资料

PRELECTION ,大讲堂讲师课程资料

近期文章

仅仅使用AWR做报告? 性能优化还未入门

实战课堂:一则CPU 100%的故障分析

杨廷琨:如何编写高效SQL(含PPT)

一份高达555页的技术PPT会是什么样子?

大象起舞:用PostgreSQL解海盗分金问题


原文地址:https://www.cnblogs.com/hzcya1995/p/13312361.html