本文转载自《金融电子化》

原文链接:https://mp.weixin.qq.com/s/WGG91Rv9QTBHPsNVPG8Z5g

随着移动互联网的迅猛发展,分布式架构在互联网IT技术领域广泛应用并积累了大量实践经验。在互联网金融快速发展和利率市场化的大环境下,建设能够支持海量客户、具有弹性扩展能力、高效灵活的分布式架构应用系统已成为国内金融行业迫切的需要。

分布式数据库应用大势所趋

我社普惠金融平台建设,旨在“充分运用金融科技手段,优化信贷流程和客户评价模型,降低企业融资成本,纾解民营企业、小微企业融资难融资贵问题,增强金融服务实体经济能力”。

普惠金融服务是典型的互联网应用,其与传统信贷系统不同,具有互联网场景接入能力,如果沿用集中式的技术架构,在应对海量客户的互联网应用场景和总拥有成本等方面存在以下的潜在问题:

  • 集中式架构普遍缺乏弹性伸缩的能力。随着交易量和数据量的增长,系统整体吞吐量会遇到硬件或技术的瓶颈。尤其在支持面向互联网客户相关业务时,不能有效处理瞬时爆发的高并发交易,制约了客户获取以及大规模业务营销。

  • 集中式架构采用单体应用设计。软件开发和运行管理的最小单元是应用,管理力度较粗,容易“牵一发而动全身”,应用的开发过程不易践行轻量化敏捷开发理念,系统在运行过程中容易出现单点故障,难以有效进行故障隔离。

  • 集中式架构系统的基础设施通常使用高端服务器和存储设备,以及传统关系型数据库。硬件和软件采购成本高,开发和运维主要依赖于服务厂商,服务成本高,也无法做到完全自主掌控。

  • 技术体系封闭,技术的发展高度依赖于厂商,特别是依赖国外厂商,商业银行的IT团队缺乏自主可控能力,在一定程度上存在信息安全风险。

我社在规划新一代普惠金融平台建设时,从战略高度对上述问题进行深入分析与思考,立足长远发展规划,从横纵两个角度看待该分布式系统的研发,即在数据方面着眼于分布式数据库,在功能层面则引入微服务架构,进而真正实现全方位分布式框架的金融服务底层系统。同时,响应国家对技术自主可控的要求,选择国产分布式数据库,有效控制IT成本和实现技术自主可控。

国产分布式数据库应用实践

普惠金融平台与传统业务系统不同,具有互联网场景接入能力,获客方式发生了变化。为了满足客户申请贷款的爆发式增长,在审批方式和流程上有所改变,对企业征信和智能风控的要求更高。随着细分领域竞争的加剧,平台应用需要不断调整、随时迭代。

经过仔细而严格的评选,最终我社采用国产分布式数据库—SequoiaDB巨杉数据库作为底层分布式数据库平台。

平台应用利用分布式数据库计算-存储层分离技术,将协议解析、计算等模块与底层存储解耦,存储层通过多维分区实现弹性扩张,计算层采用无状态设计,独立部署,通过动态增加数据库实例线性提升计算能力,有效应对瞬时爆发的高并发海量交易,分布式数据库平台同时完整兼容MySQL、PosgreSQL和SparkSQL针对应用提供较高兼容性。

平台应用开发基于Spring Cloud微服务框架,业务逻辑从传统的单一中间件被拆解成众多微服务组件,分布式数据库实例服务层提供了可选择、可适配、可动态伸缩的标准数据库计算引擎,可根据应用的场景灵活选择。应用开发采用数据库分布式计算引擎,面向联机交易的业务场景,采用兼容MySQL的计算实例,批处理业务场景选用兼容SparkSQL的计算实例。实例通过访问分布式数据库不同的数据副本,实现对数据的并行处理和多元利用(一份数据,多种用途)。

以下是联机业务应用分布式数据库的几个技术要点:

1.分布式架构下的应用设计

分布式数据库的核心机制即是将海量数据通过某种算法切分到一个或多个分区中。每个数据分区可以使用不同的物理服务器,通过网络设备将服务器连接到一起,以构成一个逻辑上对外统一的数据库服务。因此,如何将数据进行均匀切分、如何在切分后对数据进行快速检索,是分布式策略必须优先保障的内容。

分布式数据库切分规则包括:

(1)散列分区:散列分区指的是在数据写入的过程中,针对指定分区字段的值进行散列后,判断其数据物理存放分区的规则。

​ (2)范围分区:范围分区指的是在数据写入的过程中,针对指定分区字段的值判断其所在范围,根据数据所在范围对应的数据分区,判断其物理位置的规则。

​ (3)多维混合分区:多维混合分区是散列分区与范围分区的结合。在多维混合分区中,用户在建表时可以指定两个不同的字段,首先根据第一个字段进行范围的判定,之后再根据第二个字段在该范围所对应的一系列物理服务器中进行散列判断其位置。

在我社新一代普惠金融服务平台项目中,对于数据库表结构的设计面向数据特征有针对性地定义分区字段与规则。在实践的过程中,极大提升应用的效率与并发能力,避免了传统架构中数据库成为瓶颈与热点的问题。

2.分布式微服务架构下的数据一致性保证

在利用分布式数据库系统实现底层业务支撑时,会带来很多传统集中式数据库无法比拟的特性,例如:分布式容错能力、弹性可扩展能力等,这些都是对银行等金融行业来说至关重要的优化因素。分布式数据库系统之所以能够具有这些能力,主要是因为它的分布式存储特性,即每个节点保存完整数据库的一部分,而在其它若干节点上部署它的副本。那么,为了实现这样的分布式数据库系统,使之发挥应有的能力,很重要的一环就是在于它的一致性策略。

在实践的过程中,我社重点研究并解决了行业内公认的分布式环境下端到端数据一致性与数据安全的难题:

(1)利用柔性事务保证微服务之间的数据一致性;

通过平台对分布式数据库在银行领域应用策略的研究,深入了解分布式底层技术,利用柔性事务TCC实现微服务之间数据一致性。普惠金融平台应用开发基于Spring Cloud微服务框架,应用程序微服务开发规范明确了每组微服务必须提供try-confirm-cancel接口,遵循对微服务的分布式事务所提出的RESTful TCC解决方案,结合Spring Cloud Netflix和分布式柔性事务实现微服务之间的数据一致性。

(2)在微服务内部,通过分布式数据库技术实现自动化事务一致性保障;

结合普惠金融系统业务数据的特点,合理运用数据多维分区策略,并利用分布式数据库技术,在两阶段提交(2PC)基础之上,针对异常故障场景,实现自动化的事务一致性保障。

为了保证数据的一致性,需要维护一个全局唯一性的ID来区别并发的事务,标识产生或变更的数据,实现这样一个全局唯一的ID通常结合事务发起的时间,依赖时间戳加上其他的一些标识位。国产分布式数据系统,专门设计了一套全分布的逻辑时钟机制,避免了强制所有参与节点从GTM中获取唯一ID的步骤,同时又能满足分布式存储和处理的要求。

3.分布式数据库跨同城数据中心部署

基于分布式数据库完善的多副本数据同步机制,实现跨同城双中心部署,支持数据的容灾与高可用,实现新一代普惠金融平台应用跨数据中心运行,当主中心出现灾难时,数据零丢失,分布式数据库自动容灾切换,对应用系统完全透明。下图是省联社普惠金融平台分布式数据库应用的双活部署示意图:

项目创新成果

1.分布式架构转型与金融国产化

分布式数据库提供灵活、弹性、便捷、融合的数据服务能力,应对瞬时爆发型业务量增长,与微服务架构相结合,为应用的敏捷迭代开发打下了良好的基础,快速推出创新、差异化、跨界的金融服务和产品。

利用国产分布式数据库巨杉数据库,对底层代码完全自主可控,替换国外数据库产品,避免核心技术的绑定,从软件与硬件两个方面、性能和效率两个层面、短期应用的战术最优化和长远发展的战略最优化两个角度实现了整体的全面提升。另外,考虑到异地灾备,通过分布式数据与应用相结合的多活部署与实践,为各地农信社和其它金融机构未来多活数据中心建设探索出了一条切实可行的道路。

2.分布式环境下端到端数据一致性

在实践的过程中,我社重点研究并解决了行业内公认的分布式环境下端到端数据一致性与数据安全的难题:(1)利用柔性事务保证微服务之间的数据一致性;(2)在微服务内部,通过分布式数据库技术实现自动化事务一致性保障;(3)利用分布式数据库多活体系解决跨数据中心数据一致性与高可用问题。

在虚拟化云环境中微服务框架下,我社完成了分布式系统的多层次数据一致性,进而实现了高效弹性易扩展、事务处理的最终一致性、微服务级别的数据保障以及多活异地容灾等优良的特性,为金融科技背景下银行等金融系统的进一步升级与改革提供了强大动力和发展潜力。

3.实现社会与经济效益最大化

我社对互联网融资行业进行了深入调研,将互联网融资业务的共性进行提炼,基于建弹性多层次混合平台系统推出了一个强大稳定的集客户账户、产品创新、全周期核算、业务自动化审批、智能风控等为一体的普惠金融平台。该平台为客户提供差异化配置金融服务,完成互联网跨界的产品整合、服务交互、产品核算等功能。不仅提供了全方位的一揽子普惠金融、互联网融资服务,而且为企业互联网金融业务的快速发展奠定了坚实的基础。

【巨杉数据库SequoiaDB】省级农信国产分布式数据库应用实践的更多相关文章

  1. 【巨杉数据库SequoiaDB】巨杉Tech | 分布式数据库千亿级超大表优化实践

    01 引言 随着用户的增长.业务的发展,大型企业用户的业务系统的数据量越来越大,超大数据表的性能问题成为阻碍业务功能实现的一大障碍.其中,流水表作为最常见的一类超大表,是企业级用户经常碰到的性能瓶颈. ...

  2. 开源分布式数据库SequoiaDB在去哪儿网的实践

    编者注: 中国的数据库行业也迎来了一波新的热点事件.分布式数据库这块新消息不断,也让大家开始关注中国的分布式数据库.首先是短短一周内,Pingcap和SequoiaDB巨杉数据库陆续宣布了C轮的数千万 ...

  3. 【巨杉数据库Sequoiadb】点燃深秋,巨杉数据库亮相DTC数据技术嘉年华大会

    2019年11月15日,第九届数据技术嘉年华大会在北京隆重召开,本次大会以  “开源 • 智能 • 云数据 - 自主驱动发展 创新引领未来” 为主题,探索数据价值,共论智能未来.SequoiaDB 巨 ...

  4. 【巨杉数据库SequoiaDB】巨杉Tech | 四步走,快速诊断数据库集群状态

    1.背景 SequoiaDB 巨杉数据库是一款金融级分布式数据库,包括了分布式 NewSQL.分布式文件系统与对象存储.与高性能 NoSQL 三种存储模式,分别对应分布式在线交易.非结构化数据和内容管 ...

  5. 巨杉Talk | 拒绝数据碎片化,原生分布式数据库灵活应对数据管理需求

    2019年7月19-20日,以“运筹帷幄,数揽未来”为主题的DAMS中国数据智能管理峰会在上海青浦区成功举办.在DAMS峰会上,巨杉数据库为大家带来了题为“云架构下的分布式数据库设计与实践”的主题分享 ...

  6. 打造基于 PostgreSQL/openGauss 的分布式数据库解决方案

    在 MySQL ShardingSphere-Proxy 逐渐成熟并被广泛采用的同时,ShardingSphere 团队也在 PostgreSQL ShardingSphere-Proxy 上持续发力 ...

  7. Amoeba:开源的分布式数据库Porxy解决方案

    http://www.biaodianfu.com/amoeba.html 什么是Amoeba? Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件 ...

  8. ThinkPHP 数据库操作(五) : 存储过程、数据集、分布式数据库

    存储过程 5.0支持存储过程,如果我们定义了一个数据库存储过程 sp_query ,可以使用下面的方式调用: $result = Db::query('call sp_query(8)'); 返回的是 ...

  9. Redis_NoSql分布式数据库CAP原理

    前文简单介绍了NoSql数据库的四大分类以及常用的数据库技术,本文简单介绍分布式数据库CAP原理. 一.传统的CAID是什么 1. A(Atomicity)原子性:事务里的所有操作要么全部做完,要么都 ...

随机推荐

  1. java架构之路-(微服务专题)ribbon的基本使用和内部算法的自我实现

    上次回归: 上次我们主要说了,我们的注册中心nacos的使用,如我们的命名空间.分组.集群.版本等是如何使用的,如果是这样呢?我们现在有三个用户服务和三个订单服务,我们应该如何分发这些请求呢?都请求到 ...

  2. javascript json语句 与 js语句的互转

    //var data = "weihexin" //var data = ["weihexin", 1] var data = {name:"weih ...

  3. k8s 安装ELK(6.7.0版本)和EFK

    一.Elasticsearch安装 helm安装的也行,而且helm安装的stable/elasticsearch可用性更高,但是使用资源更多. 1.安装elasticsearch(线上环境千万记得把 ...

  4. CentOS 7的yum更换为国内的阿里云yum源

    Yellow dog Updater(Yum)是CentOS所有版本的默认包管理器,yum主要功能是更方便的添加/删除/更新RPM包,自动解决包的依赖性问题,便于管理大量系统的更新问题,其理念是使用一 ...

  5. Day6前端学习之路——布局

    一.定位 1)静态定位  position:static(默认) 2)相对定位 position:relative(要配合top.bottom.left.right等属性来使用) 3)绝对定位 pos ...

  6. nrm安装与配置(nrm管理npm源)

    1.nrm nrm(npm registry manager )是npm的镜像源管理工具,有时候国外资源太慢,使用这个就可以快速地在 npm 源间切换 2.安装nrm 在命令行执行命令,npm ins ...

  7. 第三篇 SpringBoot整合log4j2详解

    源代码:https://pan.baidu.com/s/1d1Lwv1gIvVNltIKVWeEseA 提取码:wff0 SpringBoot整合Log4j2步骤: 1.删除spring-boot-s ...

  8. android手机遍历安装应用

    /** * 遍历程序列表,判断是否安装安全支付服务 * * @return */ public boolean isMobile_spExist() { PackageManager manager ...

  9. JN_0019:CMD命令窗口常用操作

    1,回到根目录下 cd\ 2,

  10. Kubernetes 部署 Nebula 图数据库集群

    Kubernetes 是什么 Kubernetes 是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效,Kubernetes 提供了应 ...