某邮储银行数据归集系统在HTAP场景下的选型与实践

news2025/7/16 15:22:14

导语:面对HTAP能力的需求与云原生时代的趋势,以及国产化的浪潮,某邮储银行携手OceanBase打造了云原生时代下的国产分布式数据库场景实践体验。以下内容整理自某邮储银行运维方DBA的自述。

 

业务痛点

 

我们有一套针对业务内部的运营数据归集系统,各地的服务网点都将各类生产数据、经营数据及运营数据进行上报,还有前端用户埋点数据、各子系统生产数据表单汇集,数据源的格式多样,数据聚合程度不一,计算方式复杂多样。目前,我们采用两种方式进行数据采集。

  • 人工上报:通过员工自行制表、填表将数据上报至系统中的固定页面,进行运算。

  • 机器抓取:一些老系统或无法提供接口,就需要通过RPA自动化机器人抓取数据,这是整个基础数据的来源。抓取数据后汇总,并用Java在程序中进行计算,将数据沉淀至报表,以供前台实时读取。

面对每天的数据增长,而且内部运营系统的数据不能直接完成实时分析,需要将其汇总成特定格式进行转换计算,做成战略面板,提供顶层决策分析能力。我们使用的数据库系统是MySQL,在大众印象中,MySQL侧重于OLTP(联机事务处理),在OLAP(在线分析处理)方面的性能如高可用、备份等方面表现较弱,这些痛点在我们使用MySQL的过程中也确实感受到了。而随着我们业务并发量的提高和数据量的增长,既要求较强的OLTP能力,又需要OLAP能力的支撑,且软硬件及服务成本不断升高。面对传统关系型数据库的许多技术难题,比如海量数据下sacle in or out(弹性扩展)的算力不足、不能原生解决单点故障和全链路高可用、OLTP+OLAP场景无法实现一体化,我们决定探索HTAP(混合事务分析处理)数据库,实现降本增效的目标。

 

产品调研

 

在决定探索HTAP数据库后,我们最先了解到的是OceanBase。因为公司有一个项目正在使用阿里云的PolarDB,但PolarDB必须在云端部署,而我们的业务需求是本地部署,所以,OceanBase成为我们的首个研究目标。OceanBase兼容MySQL的特性很吸引我们,而最终选择OceanBase是出于以下几个因素。

  • 因素1:稳定可靠。 OceanBase十二年稳定可靠的产品力和在支付宝全核心场景替换MySQL的实践,以及应用于众多行业多个大型客户核心场景,为我们在业务场景中使用它建立了信心。
  • 因素2:AP性能优秀。 在类似的OLAP场景中,我们曾经使用过GBase、PostgreSQL、Greenplum,在复杂的SQL查询方面速度较慢,并且当用户量大的时候再连接这些数据库,都会出现各种各样的问题,也有可能是我们自身资源不足的导致的。我们在测试OceanBase的性能时,采用现有环境即2核40C80线程、256GB内存的环境,测试了TPS和QPS, 以下是在3000并发量下Sysbench的读写混合测试结果。这个测试结果完全满足了业务要求。

 

SQL statistics:
    queries performed:
        read:                            2405494
        write:                           687284
        other:                           343642
        total:                           3436420
    transactions:                        171821 (2859.31 per sec.)
    queries:                             3436420 (57186.17 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          60.0903s
    total number of events:              171821

Latency (ms):
         min:                                   29.15
         avg:                                  104.83
         max:                                  414.93
         95th percentile:                      155.80
         sum:                             18012703.78

Threads fairness:
    events (avg/stddev):           572.7367/30.91
    execution time (avg/stddev):   60.0423/0.02

 

因素3:运维简单。 目前的业务需求需要在AP与TP之间找到一个平衡点,如果AP场景和TP场景使用不同的数据库,势必会增加技术栈的深度,增大运维难度,而业务对于两种使用场景并不是强依赖的关系。使用混合型的HTAP产品,无疑是最好的选择,也是一种良好的探索与尝试。OceanBase运维简单,只需一套OCP工具就能搞定。且系统告警提供了丰富的扩展功能,可以与现有监控对接。运维人员每天只是关注重要数值,观察有没有报警,运维管理比较轻松。

因素4:国产化趋势。 我们无法预料MySQL在未来是否会被限制,也无法确定是否所有系统都会逐渐成Linux,但可以肯定的是要防患于未然。因此,研究完全国产自研且开源的数据库是一条出路,未来如果真要替换全部系统,至少到那时我们已经有一定的技术积累和沉淀,能够应对引进软件限制的问题。

因素5:适用业务且容错。 OceanBase主打HTAP,具有高可用和容灾能力,非常适用于我们的业务。同时,我们要应用数据库的系统不完全是生产系统,而是一个后台的报表,它处于核心系统与边缘系统之间,有一定的容错性,因此,决定先在这个报表环境中尝试使用OceanBase。

因素6:及时响应。 OceanBase开源后社区活动与响应都很积极,虽然有些生态还在完善,但是能感觉到OceanBase开源的产品力在显著提高。

 

场景实践

 

决定使用OceanBase后,我们开始了环境部署,表1列出部署参数。

 

Image

Image

图1 OceanBase三节点部署架构

 

上文提到,随着业务数据量的增大,我们原本使用的MySQL不符合业务要求,部署OceanBase后,我们开始重构系统和底层数据底座,经历了以下四个阶段。

 

第一,POC阶段。 “如果有什么问题或者和MySQL不一致,你们就直接报错,我们看如何解决”,这是我当时对OceanBase的研发支持人员说的话,但我惊喜地发现,OceanBase能够与我们使用的MySQL 5.7.18版本良好兼容,可以轻松实现零成本迁移。在此过程中,我们遇到了两个问题,一是SQLSTATE[0A000]: Feature not supported: 1235 while parameter _ob_enable_prepared_statement is disabled, prepared statement not supported,通过参数调整,轻松搞定;二是应用数据的迁移人员在使用Navicat进行迁移的时候,出现了一些结构化语句不兼容的问题,我们惊喜地发现Navicat16.1版本开始,有了OceanBase的专用驱动连接,使用后兼容性问题完美解决。

 

第二,数据迁移阶段。 我们使用了OceanBase 迁移服务(OceanBase Migration Service,OMS)完成了MySQL数据的在线无缝迁移。

 

第三,数据库侧改造阶段。 我们的应用测试基本不用改造,就将MySQL的分区数据、表结构等迁移到了OceanBase,并且一切运行正常,查询性能和查询效率都超出预期。同时,对于开发人员来说,他们无需投入学习成本,在OB上操作与此前在mysql上无异。

 

第四,实际上线阶段。 在该阶段,我们暂停了业务写入,等待系统迁移完成,并在新业务流量写入OceanBase集群后,观察业务波动。割接后近一个月的试用,系统运行稳定,分析数据处理时间缩短到了原来的1/3,达到了我们的使用预期。

 

业务收获

 

以上就是我们应用OceanBase的实践过程。从业务角度看,在此次的数据库实践中,我们有五点收获。

 

  • 原生的高可用体系: OceanBase基于PAXOS协议高可用,避免单点故障,RPO=0。
  • 无感知的DDL: OceanBase DDL无感知,可以加快业务迭代效率。
  • 完善的管理平台: OCP平台集成了部署、监控、诊断等功能,大大降低了运维与开发成本。
  • 线上扩展能力: 后期业务数据体系可以通过横向增加机器资源实现scale in or out。
  • 赋能HTAP能力: 数据读写与实时统计分析场景用一个数据产品解决。

 

当然,对于OceanBase,我们也有三个期望与建议。

  • 希望OCP实现集成性能测试。

  • 使用SATA硬盘实际测试出的TPS是官网的1/2,建议使用SSD作为硬盘存储。

  • 期望OceanBase能在更多场景替换MySQ,并不断完善其三地五中心等高级能力。

不得不说,随着国产化浪潮和云原生趋势的推动,企业对数据产品的要求日趋增高。面对老牌数据产品的能力,或许勇于尝试一些优秀的新型产品才能找到良好的解决方案。此次对OceanBase的探索,让我们解决了以往在高可用、线性扩展、存储成本等方面遇到的难题,并且,在拥有了HTAP能力的同时还能持续降低业务成本。

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

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

相关文章

SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.12 ES 简介

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇4 数据层解决方案4.12 ES 简介4.12.1 介绍4.12.2 全文搜索工作原理4.…

C++学习笔记(Ⅳ):C++提高编程

1 模板 1.1 模板的概念 建立通用的模板&#xff0c;提高代码复用性 1.2 函数模板 c还有一种利用模板的泛型编程 1. 语法 建立函数&#xff0c;其返回值类型和形参类型用虚拟类型代表 template<typename T> // 函数模板 template<typename T> // 声明一…

使用token登录提交到github

首先从GitHub上clone自己的仓库 git clone https://github.com/ljx2/SunnyWeather.git 修改一些文件 然后 git add ./ git commit -m ‘first commit’ 然后 git push origin main 提示输入用户名密码来验证 输完之后又提示需要创建token来上传&#xff0c;由于安全&#x…

M41T62Q6F 一款具有报警功能的低功耗串行实时时钟(RTC)芯片

M41T62Q6F是一款带有 32.768 kHz 振荡器的低功耗串行实时时钟(RTC)。8 个寄存器用于提供 时钟/日历功能&#xff0c;配置为二进制编码的十进制&#xff08;BCD&#xff09;格式。另有 8 个寄存器提供报警&#xff08;闹 铃&#xff09;、32 KHz 输出、校准以及看门狗功能的状态…

《树莓派项目实战》第七节 使用声音传感器检测声音

目录 7.1 引脚介绍 7.2 工作原理 7.3 连接到树莓派 7.4 编写代码检测声音有无 在本节&#xff0c;我们将学习如何使用声音传感器检测声音&#xff0c;该项目设计到的材料有&#xff1a; 树莓派 * 1面包板 * 1杜邦线若干声音传感器 * 17.1 引脚介绍 声音传感器一共有3个引脚…

噪声系数与插入损耗

目录噪声系数定义Friis噪声级联公式无源器件的噪声系数插入损耗&#xff1f;S参数文件能用来仿真噪声系数吗在计算射频链路的级联噪声时&#xff0c;我们会输入每一级的噪声系数以及增益&#xff0c;即可计算出整个射频链路的噪声系数&#xff0c;用于系统评估。但是有同学问我…

尚医通 (二十五) --------- 医院上传接口

目录一、医院系统模拟接口1. 服务部署2. 操作说明3. 上传接口与回调接口① 业务术语② 安全控制③ 业务接口④ 平台接口⑤ 医院接口二、集成 MongoDB三、添加医院基础类四、上传医院五、参数签名六、图片 Base64 编码一、医院系统模拟接口 1. 服务部署 ① 找到资源文件夹下面…

ArcGIS pro导出地图删除右下角小字制作者服务许可

ArcGIS pro导出地图删除右下角小字制作者服务许可 ArcGIS pro具有强大的制图功能&#xff0c;提供了丰富的底图。 研究者在使用这些底图出图时&#xff0c;发现地图右下角有__制作者名单、服务许可、来源&#xff1f;__ &#xff08;我也不知道它叫什么&#xff09;如下图 就…

【深入浅出Spring6】第六期——手写Spring框架与Spring IoC注解式开发

一、手写Spring框架 $ 准备工作 创建新的模块 myspring我们采用边测试边写框架的方式&#xff0c;所以还需要我们提供待测试的类 一号嘉宾——User类&#xff1a;用于一般类型传值测试 package com.powernode.myspring.bean; /*** author Bonbons* version 1.0*/ public clas…

【面试题】CSS响应式

1. rem是什么&#xff1f; rem&#xff0c;CSS3新增的一个相对单位&#xff08;root em&#xff0c;根em&#xff09;&#xff0c;相对于根元素&#xff0c;常用于响应式布局em&#xff0c;相对长度单位&#xff0c;相对于父元素&#xff0c;不常用px&#xff0c;像素&#xf…

中兴通讯完成基于低频 5G 商用基站的通感融合测试验证

11 月 16 日消息&#xff0c;今年 11 月&#xff0c;在 IMT-2020&#xff08;5G&#xff09;推进组的指导下&#xff0c;中兴通讯使用 4.9GHz 低频 5G 商用基站&#xff0c;完成了室外无人机、车辆和行人感知测试验证以及室内场景下呼吸感知的测试验证。验证结果显示&#xff0…

api-ms-win-crt-runtime-l1-1-0.dll文件加载失败是怎么造成的?怎么修复?

电脑中是含有大量不同类型的软件程序的&#xff0c;这些软件程序为用户们提供了丰富的功能&#xff0c;用户们使用这些软件的时候虽然看上去比较简单&#xff0c;但是电脑系统内部却是会调用大量文件的&#xff0c;在软件执行命令的过程中无论哪个环节出现了问题&#xff0c;都…

DDD系列 实战一 应用设计案例 (golang)

DDD系列 实战一 应用设计案例 (golang) 基于 ddd 的设计思想, 核心领域需要由纯内存对象基础设施的抽象的接口组成 独立于外部框架: 比如 web 框架可以是 gin, 也可以是 beego独立于客户端: 比如客户端可以是 web, 可以是移动端, 也可以是其他服务 rpc 调用独立于基础组件: 比如…

数据结构计算二叉树的深度和节点个数

2022.11.19 计算二叉树的深度和节点个数任务描述相关知识编程要求测试说明C/C代码任务描述 本关任务&#xff1a;给定一棵二叉树&#xff0c;计算该二叉树的深度、总节点个数和叶子节点个数。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.二叉树深度概念…

【Java八股文总结】之类

文章目录Q&#xff1a;一个Java文件中可以有多个类么&#xff08;不含内部类&#xff09;&#xff1f;一、Object类1、Object类的常见方法有哪些&#xff1f;2、 和 equals() 的区别3、HashCode()的作用&#xff1f;4、为什么要有hashCode&#xff1f;5、为什么重写equals()时必…

古人的雅趣

学习古人雅趣&#xff0c;为今日生活增添情趣。 目录 曲水流觞 九月九日重阳节赏菊 中秋赏月 一、曲水流觞 中国古代汉族民间的一种传统习俗&#xff0c;后来发展成为文人墨客诗酒唱酬的一种雅事。 夏历的三月上巳日人们举行祓禊&#xff08;fx&#xff09;仪式之后&#xf…

单流 TCP 100Gbps+ 难题的直观解释

关于 400Gbps 场景的概括&#xff0c;参见&#xff1a;400Gbps 网络面临的挑战 首先定义规则&#xff1a; 画坐标系&#xff0c;横轴为到达时间&#xff0c;纵轴为服务(处理)时间。每到达一个任务在横轴对应时间画一条垂直线。每处理一个任务在纵轴对应时间画一条水平线。任务…

【Linux】文件操作/文件描述符/重定向原理/缓冲区

目录 一.文件的概念 1.什么是内存级文件? 2.什么是磁盘级文件? 3.文件IO的过程 4.linux下, 一切皆文件 二.文件操作(C语言接口) 1.语言级文件接口与系统级文件接口 1).什么是语言级别的文件接口? 2).为什么要有语言级别文件接口, 直接用系统接口不好吗? 3).系统级…

老系统如何重构之最全总结

目录 1. 重构的概念 1.1 重构的定义 1.2 重构的分类 2 为什么重构 3 如何重构 3.1 说服业务方 3.2 确定重构的目标 3.3 老系统的熟悉与梳理 3.4 数据库的重构 3.5 前后端的系统重构 3.6 数据迁移与检查 3.7 系统检查联调测试 3.8 系统切换 1. 重构的概念 1.1 重构…

DlhSoft Gantt Chart Hyper Library for HTML5 Standard Edition

DlhSoft Gantt Chart Hyper Library 甘特图超级库包括一组交互式计划组件&#xff0c;可用于使用纯 JavaScript、TypeScript 或 Angular、React 或 Vue 等框架构建的启用时间线的应用程序 基于 JavaScript 的甘特图 可定制的网格列、汇总的工作分解结构、带有可拖动条和依赖线…