从 Oracle 到 TiDB,国有大行打造本地生活 APP 新体验

导读

本文介绍了某国有大行推出的本地生活服务类 APP 在数字时代的创新应用实践。该 APP 利用金融科技和互联网平台模式,打造“金融+非金融”的线上生态服务平台,满足了用户多样化的生活需求。为应对用户增长和数据量增加带来的挑战,该 APP 决定采用新一代 HTAP 数据库 TiDB 替换原系统中的 Oracle RAC,以提升整个系统的处理能力、扩展能力和服务能力。 文章介绍了 TiDB 带来的优势和应用价值,包括灵活的扩展能力、无需分库分表、金融级高可用能力等,帮助该平台提升了用户体验,增强了业务竞争力。

创新的本地生活服务平台

数字时代,用户行为线上化、场景化趋势日益明显。为积极响应国家扩大内需、拉动消费的号召,某国有大行顺应时代潮流,于 2021 年推出了一款本地生活服务类 APP。该 APP 依托金融科技手段与互联网平台模式,创新打造“金融 + 非金融”的线上生态服务平台,满足用户多样化的生活需求。这款本地生活 APP 自上线以来, 注册用户数已达到千万级别 ,成为了各地政府拉动本地消费的密切合作伙伴,平台特色包括:

  • 丰富的生活场景服务 :涵盖美食、外卖、充值、打车、电影演出、缴费、家装生活、车生活等多个方面,满足用户衣食住行娱等全方位需求。
  • 开放共享的合作模式 :为商家提供快速入驻通道,以线上平台推广提升商家曝光度,助力商家品牌宣传、活动集客和流量变现。
  • 免佣的银行系交易平台 :为用户提供安全可靠的交易环境,并依托银行资源提供更多优惠福利。

数据架构面临新的挑战

这款本地生活 APP 的业务功能涵盖基础服务、门面服务、抢券服务、订单服务、商户管理服务等多个方面,具体职能如下:

  • 门面服务 :提供商家信息展示、店铺导航、评价管理等功能;
  • 抢券 服务 :提供优惠券上架、发放、核销全流程管理服务,前端服务按渠道分成 4 个抢券通道,采用业务垂直分库和集中库存储的方式来提升性能和可靠性;
  • 订单服务 :提供订单生成、维护、查询、评价和推送等功能,应用层采用分表设计来应对大流量的冲击;
  • 订单历史查询服务 :提供针对各类订单按照用户、日期、交易渠道等多维度的查询功能;
  • 商户管理服务 :提供商品类目及标签管理,商品上下架,KA 品牌商户维护等功能。

图 1:改造前基于分库分表的数据架构

该生活 APP 上线后迅速推广,日活跃用户达到数百万,日订单量突破百万。 目前,存量表中数据记录行数超过亿行,20 多张表每天新增数据超过千万条。面对如此迅猛的业务发展和数据量增长,原有的技术架构(主要采用集中式数据库以及抢券服务的分库分表的技术架构)已经无法满足业务需求,无法做到对应用透明的快速弹性扩展。因此,需要找到一种新的技术架构或产品来解决现有架构的痛点:

  • 处理能力受限 :集中式数据库受限于单机服务器资源限制,无法满足快速发展的生活类业务场景对数据容量和并发处理能力的需求。
  • 高可用能力不足 :集中式数据库存在单点故障的风险,故障转移时会影响业务的连续性。
  • 业务处理能力下降 :订单业务随着客户交易量的增加,部分业务需要在多个数据库或数据表中进行,增加了查询的时间和成本。当历史库也无法满足存储容量要求时,需要考虑继续拆分。

为了解决上述问题,抢券业务采用分库分表模式来提升并发处理能力,但当业务发生变更时,需要对所有分库进行修改和调整,增加了业务变更的难度和风险。DBA 需要对多个数据库或数据表进行管理和维护,进而增加了系统故障排查和维护的难度。

使用原生分布式数据库 TiDB 替换 Oracle

为缓解生活 APP 业务的高 TPS 并发访问以及海量数据带来的性能压力,经过对市场主流分布式数据库的调研,并结合自身业务场景实践,最终决定采用新一代 HTAP 数据库 TiDB 替换原系统中的 Oracle RAC,从而提升整个系统的处理能力、扩展能力和服务能力。TiDB 分布式数据库带来的优势主要体现在以下几个方面:

图 2:改造后的分布式数据架构

  • 灵活的扩展能力 :快速横向扩展可以满足业务持续发展带来的数据量增长问题;
  • 无需分库分表 :原生分布式架构解决了分库分表原设计带来的痛点;
  • 金融级高可用能力 :Multi-Raft 自选主和 TiCDC 提供主备数据的实时复制,提供了 7*24 不间断的服务保障;
  • 节约存储空间 :TiKV 采用 LSM Tree 存储引擎,通过编码压缩大幅减少存量、增量数据所需磁盘空间;
  • 快速响应业务的要求 :分区表动态裁剪配合领域缓存设计满足大表对高并发、高性能查询的要求,Online Schema Change 保证在线 DDL 的快速执行。

图 3:分布式数据库 TiDB 高可用部署示意图

应用价值

该生活服务类 APP 是国有大行重点推出的线上生态平台,面向海量用户提供多样化的生活服务。 为了满足高并发场景下高性能、高可用及大容量存储等处理能力,平台采用了分布式数据库 TiDB。 TiDB 凭借弹性扩展、实时 HTAP 等优势,帮助平台提升了用户体验, 增强了业务竞争力。

  • 快速释放业务能力 :TiDB 具有弹性扩展和自动负载均衡能力,可以根据业务需求进行灵活扩容,简化应用开发,让应用更聚焦于业务功能的实现,企业无需考虑客户及交易量增加可能带来的架构改变。在抢券业务场景下,对现有集群进行动态扩容就能满足接入渠道及流量增长时对处理能力的要求。
  • 提供实时数据处理 :TiDB 具有行列存互相隔离的能力,可以在不影响在线业务运行的情况下进行实时的数据分析,利用这个特性可以实现历史订单更多维度的实时分析能力,从而丰富客户画像及开展个性化的用户营销活动。
  • 降低架构复杂度,有效节约成本 :避免随着业务增长进行复杂的分库分表处理,从而简化应用开发与运维工作,实现了高效降低成本的目标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【原创】nnUnet V1在win11下的安装与配置

安装之前可以先了解一下论文的主要内容,便于之后网络训练与推理,调试程序。 论文地址:nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation | Nature Methods 也可以从其他博客快速浏览&#xff1a…

计算机网络(网络原理与应用)之高级交换实验------冗余环路与生成树协议

一、实验目的 (1)了解生成树协议的作用; (2)熟悉生成树协议的配置。 二、应用环境 采用生成树协议可以避免环路。 生成树协议的根本目的是将一个存在物理环路的交换网络变成一个没有环路的逻辑树形网络。IEEE802.ID协议通过在交换机上运行一套复杂的算法STA(sp…

JupyterLab OpenCV展示图片

JupyterLab OpenCV展示图片 方式一 注意:此种方式如果在远程服务器上的JupyterLab上运行,可能会出现错误。 import cv2# 读取图片 image cv2.imread(photo/blg.png)# 显示图片 cv2.imshow(image, image)# 等待按键,之后关闭所有窗口 cv2.w…

Deckset for Mac:让演示文稿制作更轻松

还在为繁琐的演示文稿制作而烦恼吗?Deckset for Mac来帮您解决!它支持Markdown语言,让您只需专注于内容的创作,无需在排版和设计上耗费过多精力。丰富的主题和布局选项,让您能够轻松打造出专业级的演示文稿。快来体验D…

我的 OpenLiteSpeed 从开始到放弃之经历

昨晚下定决心放弃 OpenLiteSpeed 了,从开始到放弃历时七天。总结下来放弃 OpenLiteSpeed 主要是实在不适合明月当前的需要,用起来不是锦上添花而是个累赘了都,今天明月就给大家总结分享一下这次 OpenLiteSpeed 从开始到放弃的经历。 一、Ngin…

LLM量化

Efficient Finetuning prefix tuning 针对每种任务,学习prefix vector 启发于prompting,调整上下文内容让模型去输出自己想要的内容 核心就是找到一个上下文去引导模型解决NLP生成任务 传统情况下,我们为了得到想要的结果,会…

语言:C#

一、VSCode生成exe 二、

EasyRecovery(易恢复) 使用测试及详细使用方法

你有没有因为数据丢失懊悔不已,EasyRecovery(易恢复),来自美国拥有38年数据恢复的软件,只有收费版,重要事情说三遍,EasyRecovery 没有免费版,可以成功找回删除的部分文件&#xff0c…

SQLite .journal 文件

在之前插入大量数据测试的时候,发现在数据库文件同级目录下会产生一个同名.journal的文件,并且不是一直会存在,而是生成一会就会自动删除,然后继续生成继续删除,直到数据插入完成。 初步猜测,应该是类似 re…

增强客户黏性:服装实体店扫码连锁收银软件提供多样的会员营销策略

随着消费者对购物体验的需求不断提升,服装实体店面临着更大的挑战和机遇。为了增强客户黏性,提升销售业绩,越来越多的服装实体店开始引入扫码连锁收银软件,并提供多样化的会员营销策略。这一举措不仅为店铺提供了更加智能化的经营…

C语言——文件相关操作补充

一、文件读取结束的判定 当我们使用例如fgetc、fgets、fscanf、fread等函数来读取文件内容时,我们可能遇到需要判断文件读取的结束,一般情况下都是通过这些函数的返回值来判断文件读取是否结束。 1、fgetc 返回读取的字符的ASCII值,如果读…

Java 守护线程 ( Daemon Thread )详解

在Java中,线程分为两类:用户线程(User Thread)和守护线程(Daemon Thread)。守护线程是后台线程,主要服务于用户线程,当所有的用户线程结束时,守护线程也会自动结束,JVM会随之退出。守护线程的一个典型例子是…

Web前端一套全部清晰 ⑧ day5 CSS.3 选择器、PxCook软件、盒子模型

谁不是一路荆棘而过呢 —— 24.5.12 CSS.3 选择器、PxCook软件、盒子模型 一、选择器 1.结构伪类选择器 1.作用: 根据元素的结构关系查找元素。 选择器 说明 E:first-child 查找第一个 E元素 E:last-child 查找最后一个E元素 E:nth-chil…

【qt】最快的开发界面效率——混合编程

混合编程 一.准备工作1.创建项目2.添加项目资源 二.ui界面设计1.menuBar菜单栏2.action ▲3.toolBar工具栏4.中心组件 三.代码界面设计1.toolBar添加组件2.statusBar状态栏添加组件 四.完成界面的功能1.对action配置信号槽2.对action转到信号槽3.代码添加的组件手动关联槽函数 …

7 Days yo Die 七日杀服务器开服联机教程

1、购买后登录服务器(百度搜索莱卡云)game.lcayun.com 进入控制面板后会出现正在安装的界面,安装时长约5分钟左右 安装成功后你就可以看到我们的控制台界面 复制服务器ip地址打开游戏➡加入游戏 有两种方法加入游戏 第一种方法:…

三. TensorRT基础入门-导出并分析ONNX

目录 前言0. 简述1. generate-onnx2. export-onnx3. 补充-ONNX3.1 概念3.2 组成 总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记,仅供自己参考 本次课程我们来学习课程第三章—TensorRT 基础入门&#xff0…

redis深入理解之实战

1、SpringBoot整合redis 1.1 导入相关依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId&g…

纯CSS实现步骤条

纯CSS实现纵向Steps步骤条效果 效果图 实现思路 步骤条是一种用于引导用户按照特定流程完成任务的导航条&#xff0c;在各种分步表单交互场景中广泛应用。步骤条通常由编号、名称和引导线三个基本要素组成。本文中要实现的是一个简单的步骤条&#xff0c;包含上述三个基本要素…

SpringBoot结合Canal 实现数据同步

1、Canal介绍 Canal 指的是阿里巴巴开源的数据同步工具&#xff0c;用于数据库的实时增量数据订阅和消费。它可以针对 MySQL、MariaDB、Percona、阿里云RDS、Gtid模式下的异构数据同步等情况进行实时增量数据同步。 当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.…

计算机网络技术主要学什么内容,有哪些课程

计算机网络技术专业是一个涉及理论与实践紧密结合的学科&#xff0c;主要学习内容有计算机网络基础、网络设备技术、网络编程等内容&#xff0c;以下是上大学网&#xff08;www.sdaxue.com&#xff09;整理的计算机网络技术主要学什么内容&#xff0c;供大家参考&#xff01; 基…