金融企业区域集中库的设计构想和测试验证

导读

本文探讨了金融企业区域集中库的设计构想和测试验证,包括架构设想、数据库整合场景测试及优势和使用设想。作者提出利用 TiDB 数据库产品集中建设区域集中库,解决 MySQL 存量节点的整合问题,实现部署的标准化、按需扩展和统一运维管理。文章详细介绍了测试内容和结果,强调了区域集中库在建设和运行成本、服务质量等方面的优势,并提出了相应的管理措施,为金融企业数据库架构提供了有价值的参考 。

本文作者 :

邵 健 |杭州银行股份有限公司数据库专家

张显华丨杭州银行股份有限公司数据库专家

区域集中库的架构设想

在银行等金融企业的网络设计中,会根据服务主题将内部网络分割成若干个网络安全域,如:核心网络域、网银网络域等。在各个网络域中,根据业务应用对数据库的需求配置资源。随着业务的创新和发展,MySQL 存量节点多,管理难度大,资源利用率低,背离了规模部署、高效运维、敏态供给的云化发展理念,在生产运行的各阶段中存在不少的能力短板,比 如:

  • 部署建设阶段
  • 以业务发展目标或者每日批量压力高峰进行数据库资源规格评估,可能存在资源浪费和发展不同步的可能性。
  • 不同的版本、部署方案、变量参数和管理平台共存, 配置的碎片化不利于团队知识管理,阻碍标准化发展。
  • 生产运行阶段
  • 应用数模设计阶段缺少主键约束造成主从同步延迟,影响从库数据时效,高可用机制可能存在不稳定。
  • 业务应用重复订阅全行统一的人员、机构和客户等主数据推送,浪费存储容量,占用数据库和网络资源。
  • 数据库面对下游业务的数据供给需求,复制链路构成较为复杂的网状结构,管理和维护成本较高,客户上限制了数据价值的进一步挖掘。

TiDB 数据库产品具备良好的水平扩展能力,能满足高并发大数据量业务的使用需求。通过 resource control 特性可划分集群资源,承载不同的业务应用。设想在单个网络域中集中建设一套 TiDB 集群,进行当前业务的迁移,整合替代“孤岛式”的 MySQL 集群(见图一),实现部署的标准化、按需扩展和统一运维管理。

图一 “孤岛式”的 MySQL 集群和分布式数据库区域集中库演进设想

数据库整合场景测试

基于网络区域集中库的设计构想,进行实际整合场景的需求抽象,使用 TiDB 做为测试平台,验证在分布式数据库上快速创建不同规格的数据库服务以提高设备利用率,并通过标准化高可用等管理体系降低总体成本。

2.1 资源管控

Request Unit (RU) 是对 CPU、IO 等系统资源的统一抽象的计量单位,用于表示对单个请求消耗的资源量。请求消耗的 RU 数量取决于多种因素,例如操作类型或正在检索或修改的数据量。

  • 集群资源的评估

测试集群配置为三台两路 ARM 服务器。使用 oltp_read_write 模型估算集群的 RU 上限为 163000 RU(见图二)。

图二 oltp_read_write 模型容量估算的标签页

使用 TPCC 模型估算为 459000 RU(见图三)。

图三 TPCC 模型容量估算的标签页

使用 root 用户进行 oltp_read_write 模型高并发压测可得集群最大 RU 365000(图四)。

图四 单个 root 用户测试的 RU 消耗监控面板

三种评估方法结果(见表一)表明,估算和实际的差距较大,估算方法需要改进。

表一 评估方法结果

  • 不同规格 RU 对联机交易的影响

配置三个资源组的每秒 RU 参数 (见图五),数据库用户归属于资源组后,每秒使用的 RU 上限受该参数控制。

图五 三资源组测试的资源组容量

三个用户对应三个资源组同时压测,RU 使用平稳(见图六)。

图六 三资源组测试 RU 消耗监控面板

压测结果(见表二)表明,实际使用上限基本符合配置,QPS 与 RU 成正比关系,符合配置规则。

表二 资源组每秒 RU 规划的业务测试结果

  • 资源组 BURSTABLE 属性对调度的影响

配置资源组 test_rg1 启用可突发(BURSTABLE)属性(见图七),当系统资源闲置时,该资源组可以超出上限。

图七 burstable 属性测试的资源组容量标签页

先发起 test_rg1 资源组中用户的压测,RU 使用达到了 293000 左右,体现 burstable 参数在集群空闲状态下的配置效果,再发起另外两个资源组的压测,test_rg1 逐步回落到资源组配置上限 160000 左右(见图八)。

图八 资源组 burstable 属性测试的 RU 消耗监控面板

压测结果(见表三)表明,BURSTABLE 属性可以充分利用闲置资源。繁忙时,会优先保证上限内的 RU 分配。

表三 资源组 burstable 属性的业务测试结果

  • 在线调整 RU 对联机交易的影响

发起 test_rg1 组中用户的压测,在线调整资源组的每秒 RU 值,即时反应到实际 RU 使用(见图九)。

图九 在线调整资源组测试的 RU 消耗监控面板

压测结果(见表四)表明,资源组配置变更即时反应到业务的 QPS 上。

表四 在线调整资源组测试的业务测试结果

2.2 读写分离

在 MySQL 架构中,为防止对业务主交易造成影响,将从库用于数据抽取、异步检查等只读场景。区域集中库也需要实现等同于读写分离的隔离效果,分布式数据库配置 Learner 角色,只参与同步数据而不参与多数派投票。

使用 Placement Rules 将 33 节点的 TiKV 实例标签配置为 Learner 数据副本,监控中对应实例的 Leader 数量为 0(见图十),只同步数据,不响应交易的读写请求。

图十 各个 TiKV 实例的 Leader 数量分布监控面板

  • 会话的读写分离

设置变量 set session tidb_replica_read=‘learner',执行查询 SQL 时只使用 33 节点的资源(见图十一)。

图十一 TiKV 实例 CPU 监控面板

  • 物理备份的读写分离

使用 --replica-read-label 参数执行 br 备份命令,只使用 33 节点写入备份文件(见图十二)。

图十二 备份写数据监控面板

2.3 业务管理

多业务整合的场景中,不仅需要关注资源开销,还需要关注数据库的业务管理特性,比如 SQL 黑名单、细粒度监控、连接标识等,提升管理员的运维效率。

2.3.1 SQL 黑名单功能

  • 资源组的自动策略

配置 default 资源组属性 query_limit=(exec_elapsed='100s', action=kill,watch=similar ),实现语句执行超过 100s 后自动 kill。慢 SQL 语句执行超时后被 kill(测试效果如下),说明自动策略可以支持慢 SQL 的自动化管理。

MySQL> select now();select *,(select max(c) from sbtest2 where sbtest1.c=sbtest2.c group by id ) avgc from sbtest1 where sbtest1.id< 5000;select now(); 
+---------------------+
| now()               |
+---------------------+
| 2024-02-05 15:33:15 |
+---------------------+
1 row in set (0.000 sec)
ERROR 1105 (HY000): other error: Coprocessor task terminated due to exceeding the deadline
+---------------------+
| now()               |
+---------------------+
| 2024-02-05 15:34:55 |
+---------------------+
1 row in set (0.000 sec)
  • 手工配置黑名单

配置 query watch 清单 query watch add action kill sql digest 'DIGEST 值'中。SQL 语句执行后提示被中断(测试效果如下),说明可以支持慢 SQL 的手工管理。

MysQL> select *,(select max(c) from sbtest2 where sbtest1.c=sbtest2.c group by id ) avgc from sbtest1 where sbtest1.id< 100; 
ERROR 8254 (HY000): Quarantined and interrupted because of being in runaway watch list

查询验证限制记录(测试效果如下),说明可分析黑名单生效记录。

MySQL> select * from mysq1.tidb_runaway_queries order_by time desc limit 1\G
*************************** 1. row ***************************
resource_group_name: defaulttime: 2024-02-05 14:57:37match_type: watchaction: ki11original_sq1: select *,(select max(c) from sbtest2 where sbtest1.c=sbtest2.c group by id ) avgc from sbtest1 where sbtest1.id< 100 plan_digest: 85484f90b715278bd114095a4bbbe168da158f24e824a04d11c09be7268fe2ab           tidb_server: 10.186.136.31:4000
1 row in set (0.002 sec) 

2.3.2 业务会话标识功能

  • 会话变量

会话变量 tidb_session_alias 可动态定义会话中业务标识,如当前运行的交易码信息,会话视图、慢日志及 General log 的 session_alias 列中会记录运行值,类似 Oracle 数据库 v$session 的 module 列可以帮助识别应用程序功能模块信息。

编辑测试描述文件 oltp_read_write.lua,添加 con:query("set tidb_session_alias='QUERYXXX'"),模拟应用切换交易码。慢日志(见图十三)和 processlist 视图(见图十四)中 session_alias 标识 SQL,可分析 SQL 语句的业务行为。

图十三 慢日志中的业务标识

图十四 processlist 视图的业务标识

  • 会话属性

系统视图 session_connect_attrs 可查看连接的固定属性信息,数据库侧可用于梳理应用的自定义连接信息。配置连接串参数 connectionAttributes=app_name:bank,ver:v1.0&(见图十五)或者使用 JDBC 内置方法,实现应用版本等标识。

图十五 Jmeter 的连接串配置

系统视图 session_connect_attrs 可查看应用的自定义属性(见图十六),说明可分析客户端信息。

图十六 系统视图中的客户端属性

2.3.3 细粒度监控功能

配置 record-db-label 可以在 db 和 resource_group 粒度上提供 QPS、Duration 等 metrics 指标,在 grafana 添加监控面板(见图十七)。

图十七 细粒度的 QPS 和 Average Duration 监控面板

2.4 测试小结

通过以上的测试,基本上验证了利用分布式数据库实现区域集中库的设想:

  1. 资源隔离特性具备数据库规格限制,支持用户、会话及语句等粒度。在线调整即时生效的特点,可以基于不同业务资源消耗的时间窗口进行资源“调度”,实现资源利用效益最大化。
  2. Learner 角色副本可用于数据抽取、查询和备份等场景,保证生产隔离,节省“从集群”的资源开销。
  3. 通过规则和已知的 SQL 指纹对不良 SQL 能实现有效防范。
  4. 通过业务会话标识和细粒度监控功能,基本满足应用整合后的观测需求。
  5. 集群 RU 评估方法、Query Limit 策略添加扫描行数或 RU 资源使用监控、资源组添加时间计划等有待继续改进。

区域集中库的优势和使用设想

区域集中库是将数据库整合落地在数据库层,通过标准化部署和细粒度资源配置,得到更高的服务可用性、规格弹性和资源利用率。两种整合方式的适用情况对比如表五。

表五 区域集中库特性对比

表五 区域集中库特性对比

综合各个能力项对比结果,评估区域集中库在建设和运行成本、服务质量上均具有较大的优势。在使用过程中,需要配套管理措施:

  • 开发建设典型业务压测模型(如转账交易)作为标尺,根据该模型得到集群交易性能上限,按典型业务性能设计成多个规格,再由需求方根据该模型评估业务交易性能需求规格和业务批量窗口特点进行对接。
  • 统一管理区域集中库的全行主数据,数据团队只需要接入一次数据,实现资源集约使用。
  • 利用单副本的 Learner 节点实现读写分离,对接备份、ETL 抽取、数据查询平台等非业务的数据需求。
  • 与行内的低代码开发平台进行对接,通过框架的配置功能使用数据库的会话属性和业务会话标识功能,实现更加有效的 SQL 定位和管理。
  • 引导应用运维自助查看资源组监控和细粒度日志。

通过区域集中库的建设整合,将简化数据库能力分层模型(图十八)。

第一层关键业务使用两地三中心的分布式数据库。

第二层高并发大数据量业务使用独立的分布式数据库。

第三层规模较小或者业务发展规模较灵活的业务使用区域集中库。

图十八 数据库能力分层模型

通过区域集中库的建设,实现数据库部署架构的收敛。在此基础上,可进一步对业务数据操作行为的采集和分析,有利于生产运行向智能化转型。

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

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

相关文章

gitlab使用

个人笔记&#xff08;整理不易&#xff0c;有帮助点个赞&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 个人随笔&#xff1a;工作总结随笔_8、以前工作中都接触过哪些类型的测试文档-CSDN博客 目录 一&#xff1a…

SSL中的CA证书

目录 一、CA概述 二、数据加密 三、身份认证 一、CA概述 SSL如何保证网络通信的安全和数据的完整性呢&#xff1f;就是采用了两种手段&#xff1a;身份认证和数据加密。身份认证就需要用到CA证书。 CA是证书的签发机构&#xff0c;它是公钥基础设施&#xff08;Public Key In…

鸿蒙OS开发实战:【自动化测试框架】使用指南

概述 为支撑HarmonyOS操作系统的自动化测试活动开展&#xff0c;我们提供了支持JS/TS语言的单元及UI测试框架&#xff0c;支持开发者针对应用接口进行单元测试&#xff0c;并且可基于UI操作进行UI自动化脚本的编写。 本指南重点介绍自动化测试框架的主要功能&#xff0c;同时…

linux centos 系统 docker及podman拉取kylin麒麟镜像内部及部署安装Gaussdb数据库

研究总结来之不易 1.首先下载安装包&#xff0c;网址&#xff1a; 软件包 | openGauss 2.参考安装连接&#xff1a; 单节点安装 openGauss学习笔记-03 openGauss极简版单节点安装_opengauss 笔记-CSDN博客 当然他们说的有些也是不完全一样的&#xff0c;根据自己的环境摸索…

.NET 设计模式—装饰器模式(Decorator Pattern)

简介 装饰者模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你在不改变对象接口的前提下&#xff0c;动态地将新行为附加到对象上。这种模式是通过创建一个包装&#xff08;或装饰&#xff09;对象&#xff0c;将要被装饰的对象包裹起来…

设计模式之命令模式讲解

概念&#xff1a;命令模式&#xff08;Command Pattern&#xff09;又称行动&#xff08;Action&#xff09;模式或交易&#xff08;Transaction&#xff09;模式。将一个请求封装成一个对象&#xff0c;从而让你使用不同的请求把客户端参数化&#xff0c;对请求排队或者记录请…

2月智能手表线上电商市场(京东天猫淘宝)分析:华为手表成最大赢家!

近年来&#xff0c;各大厂商纷纷积极布局健康管理领域&#xff0c;智能手表成为可穿戴市场的热门产品。随着越来越多的厂商进入&#xff0c;智能手表的芯片技术、显示屏技术、传感器技术等都在不断进步&#xff0c;整体性能和功能得到显著提升&#xff0c;使得用户体验更加出色…

【Labview】虚拟仪器技术

一、背景知识 1.1 虚拟仪器的定义、组成和应用 虚拟仪器的特点 虚拟仪器的突出特征为“硬件功能软件化”&#xff0c;虚拟仪器是在计算机上显示仪器面板&#xff0c;将硬件电路完成信号调理和处理功能由计算机程序完成。 虚拟仪器的组成 硬件软件 硬件是基础&#xff0c;负责将…

0104练习与思考题-算法基础-算法导论第三版

2.3-1 归并示意图 问题&#xff1a;使用图2-4作为模型&#xff0c;说明归并排序再数组 A ( 3 , 41 , 52 , 26 , 38 , 57 , 9 , 49 ) A(3,41,52,26,38,57,9,49) A(3,41,52,26,38,57,9,49)上的操作。图示&#xff1a; tips:&#xff1a;有不少在线算法可视化工具&#xff08;软…

基于taro搭建小程序多项目框架

前言 为什么需要这样一个框架&#xff0c;以及这个框架带来的好处是什么&#xff1f; 从字面意思上理解&#xff1a;该框架可以用来同时管理多个小程序&#xff0c;并且可以抽离公用组件或业务逻辑供各个小程序使用。当你工作中面临这种同时维护多个小程序的业务场景时&#…

【Mysql高可用集群-双主双活-myql+keeplived】

Mysql高可用集群-双主双活-myqlkeeplived 一、介绍二、准备工作1.两台centos7 linux服务器2.mysql安装包3.keepalived安装包 三、安装mysql1.在128、129两台服务器根据《linux安装mysql服务-两种安装方式教程》按方式一安装好mysql应用。2.修改128服务器/etc/my.cnf配置文件&am…

mynet开源库

1.介绍 个人实现的c开源网络库&#xff0e; 2.软件架构 1.结构图 2.基于event的自动分发机制 3.多优先级分发队列&#xff0c;延迟分发队列 内部event服务于通知机制的优先级为0&#xff0c;外部event优先级为1&#xff0e; 当集中处理分发的event_callback时&#xff0c…

Flutter如何集成到已有iOS工程上

大家好&#xff0c;我是咕噜铁蛋&#xff0c;今天我将和大家分享一个实用的技术教程——如何将Flutter集成到已有的iOS工程中。Flutter是Google推出的一款开源的移动UI框架&#xff0c;它允许开发者使用Dart语言来开发高性能、美观的原生应用&#xff0c;并支持iOS和Android两大…

聚观早报 | 百度文心一言上线新功能;腾势Z9GT将发布

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 4月08日消息 百度文心一言上线新功能 腾势Z9GT将发布 华为将举办鸿蒙春季沟通会 苹果与Shutterstock达成协议 O…

LeetCode初级算法书Java题解日常更新

LeetCode初级算法高效题解&#xff08;含思路注释&#xff09; 文章目录 LeetCode初级算法高效题解&#xff08;含思路注释&#xff09;前言一、数组1.删除排序数组中的重复项2.买卖股票的最佳时机 II3.旋转数组4.存在重复元素 总结 前言 决定用四个月过一下算法 一、数组 1.…

threejs 组-层级模型 | 本地坐标和世界坐标 | 局部坐标系和世界坐标系 | 本地矩阵.materix和世界矩阵.matrixWorld

文章目录 组- THREE.Group递归遍历模型树结构object3D.traverse()object3D.add (object.Object3D..) 添加对象 和 object3D.remove(object.Object3D..) 移除对象 局部坐标系和世界坐标系辅助坐标器 AxesHelper 本地坐标和世界坐标 - 基于世界坐标系的位置本地坐标与世界坐标的理…

Redis7(二)数据类型及其用法

一、概述 命令不区分大小写&#xff0c;key区分大小写 数据类型针对value String List Set Hash ZSet bitmap GEO HyperLogLog Stream bitfield 二、String <K,V> 1、设值/取值 getrange key index1 index2 getrange key 0 -1//获取所有的值 SETRANGE KEY_N…

XC7A35T-2FGG484 嵌入式FPGA现场可编程门阵列 Xilinx

XC7A35T-2FGG484 是一款由Xilinx&#xff08;赛灵思&#xff09;制造的FPGA&#xff08;现场可编程门阵列&#xff09;芯片 以下是XC7A35T-2FGG484 的主要参数&#xff1a; 1. 系列&#xff1a;Artix-7 2. 逻辑单元数量&#xff1a;33280个 3. 工艺技术&#xff1a;28nm 4. …

Linux 5.10 Pstore 功能测试

目录 简介环境配置内核配置参考备注 简介 Pstore(Persistent store support)是用于系统发生oops或panic时&#xff0c;自动保存内核log buffer中的日志。随着功能不断完善&#xff0c;Duo S使用Linux 5.10已经支持保存console日志、ftrace消息和用户空间日志的收集&#xff0c…

STC89C52学习笔记(三)

STC89C52学习笔记&#xff08;三&#xff09; 综述&#xff1a;本文讲述了通过51单片机控制LED闪烁、流水灯、按键控制LED亮灭、按键控制LED实现二进制、按键控制LED左右移。 一、LED 1.LED闪烁 1&#xff09;LED电路原理 LED采用共阳极&#xff0c;当LED另一端为低电平时…