wordpress 小工具 不显示不出来/seoul是什么国家
本文详细介绍了中泰证券在系统国产化改造项目中采用 TiDB 多租户技术的实施过程。文章分析了中泰证券数据库系统现状以及引入 TiDB 资源管控技术的必要性,探讨了 TiDB 多租户的关键特性,并阐述了在实际应用中的具体操作步骤。通过该技术的应用,中泰证券有效降低了运维成本,提升了开发效率。 文章强调了 TiDB 多租户在证券企业中的应用优势,特别突出了其在资源观测、复用、可配置性等方面的价值。
项目背景
中泰证券股份有限公司(原名齐鲁证券有限公司)成立于 2001 年 5 月,是国内排名前 20 的全国大型综合性券商,在全国 28 个省市自治区设有 45 家分公司、280 多家证券营业部,员工 9000 多人,控股中泰期货、中泰资本、中泰金融国际、中泰资管、中泰创投、齐鲁股权交易中心、万家基金,形成了证券、期货、基金、投资等各项业务齐头并进的发展格局。
受国际环境影响,在国家政策的大力支持下,系统国产化开始在全国范围内加速落地。中泰证券在系统国产化改造项目中,使用 TiDB 和国产化操作系统、芯片,提升自主可控能力。
中泰科技研发部目前使用两套 TiDB 集群,将多套业务系统进行集合。TiDB 集群版本号均为 V7.1。按照业务系统服务对象的不同,分别承载对外和对内客户业务。基于 TiDB 对大表的支持性更友好,无需分库分表,复杂 SQL 的性能提升明显,TiDB 的弹性扩缩容,简单易运维操作。这些,都毫无疑问地降低了运维成本、提升了开发效率。但是这两套集群都是多套业务系统共用,因此,非常需要资源管控技术,确保每一个业务系统都拥有独立的资源池。
TiDB 多租户介绍
TiDB 6.6 首次引入资源管控(Resource Control,简称:RC)特性,并在 TiDB 7.0 进行了优化和增强。该技术利用资源组 (Resource Group) 限制每个资源组所能使用的计算和 IO 资源,同时创造性的引入 burst (可超用)属性,当集群有空闲资源时,允许资源组超越限制,实现资源的充分利用。
这个特性满足了目前一些企业的需求,也可以顺带解决了部分用户的痛点:
- 业务系统间影响和干扰 :某个业务系统的非预期负载变化会影响其他业务系统的正常运行。
- 分析业务对交易的影响 :对资源需求较高的数据分析或批量作业会影响其他业务系统的响应时间。
- 运维操作对资源的消耗 :数据备份、统计信息收集等后台任务可能会影响服务质量。
具体应用和实施
以下文章内容中的数据均基于生产环境做过修改,不是真实数据,仅供参考。
3.1 资源评估
打开 Dashboard 页面,在左侧菜单列表中找到 Resource Manager,在 Estimate Capacity 中 根据标准测试类型进行资源评估。
3.2 应用绑定 RU
通过梳理数据库中的业务用户,确定哪些用户是属于哪些业务系统,方便后面将不同的资源组与不同的用户绑定。
执行以下 SQL 为业务 A、业务 B、以及管理员绑定 Resource Control 和 RU。业务 A 和业务 B 同属于 TP 系统,业务重要性较高,对 sql 查询速度和效率都有一定的要求,对慢查询容忍性较低。所以对业务 A 和业务 B 的资源分配优先级要高一些,并且允许资源超用(BURSTABLE),应对前端业务流量的突增。而管理员账户日常主要用来做数据库管理相关的工作,很少或者不涉及业务 SQL,所以资源分配优先级较低,可以先设置成允许资源超用。
初步绑定都设置 BURSTABLE 属性确保每个业务都有充足 RU 可以使用,避免资源不足情况而无法观察到某个业务真实 RU 消耗情况。
-- 创建A资源组
CREATE RESOURCE GROUP IF NOT EXISTS a_rg RU_PER_SEC=180000 PRIORITY=HIGH BURSTABLE;
-- 创建B资源组
CREATE RESOURCE GROUP IF NOT EXISTS b_rg RU_PER_SEC=90000 PRIORITY=HIGH BURSTABLE;
.....
-- 创建管理员查询资源组
CREATE RESOURCE GROUP IF NOT EXISTS admin_rg RU_PER_SEC=20000 BURSTABLE;
-- 为不同业务系统用户绑定资源组
-- 将A资源组绑定到A业务系统用户上
ALTER USER a_user RESOURCE GROUP a_rg;
-- 将B资源组绑定到B业务系统用户上
ALTER USER b_user RESOURCE GROUP b_rg;
.....
-- 将管理资源组绑定到系统管理用户上
ALTER USER admin_user RESOURCE GROUP admin_rg;
3.3 观察应用 RU 使用情况
完成绑定后 ,TiDB 可以实时统计到各个业务消耗的资源情况。生产运行一段时间后,需要观察业务实际消耗 RU, 完成后续调整。
依然是去 Dashboard 页面,在左侧菜单列表中找到 Resource Manager。这个页面较之前业务系统用户没有绑定 RU 之前,多了一个 Configuration 模块。可以在这里模块清晰的观察到每个资源组的详细信息。
继续在 Resource Manager 页面中找到 Metrics 模块,观察 RU 的使用情况(建议观察时间区域尽可能长,以得到更全面的 RU 消耗情况),如下图所示。
将这个曲线和上面 Configuration 模块的 RU 信息对照,查看是否需要进行 RU 调整。调整语句如下:
-- A业务系统最高消耗 17000 RU ,建议绑定 25000 RU ,预留一定 Buffer ,由于总体资源充足设置 BURSTABLE 属性确保业务有足够资源
alter resource group a_rg RU_PER_SEC=25000 PRIORITY=HIGH BURSTABLE;
-- B业务系统最高消耗 14000 RU ,建议绑定 20000 RU ,预留一定 Buffer ,由于总体资源充足设置 BURSTABLE 属性确保业务有足够资源
ALTER RESOURCE GROUP b_rg RU_PER_SEC = 20000 BURSTABLE;
-- 设置管理员查询资源组,不设置 BURSTABLE 属性,降低管理员执行 Slow Query 时对集群影响
alter resource group admin_rg RU_PER_SEC=10000;
RU 使用收益
由于目前 TiDB 服务器资源充足,并且各个业务系统的峰值谷值都具有同一性,每个业务系统的重要程度也差不多。所以 TiDB 这个多租户特性带来的价值主要体现在资源的可观测性和可配置性上。
在资源可观测性上 :有了 RU,结合 Dashboard,可以清楚的观察到每个业务系统使用了多少资源,TiDB 整个集群资源是否充足,是否需要添加资源。
在资源可配置性上 :TiDB 多租户最重要的能力是在资源繁忙时实现资源控制,后续继续迁移新业务导致资源不足且临时没有服务器添加到集群的场景下可以在线解除 BURSTABLE 属性,给业务设置合适的 RU 大小来实现资源控制。此能力可以在线调整,对业务几乎无感知。在资源不足的极端场景下,能够控制不同用户的资源消耗,保证各业务系统的资源隔离性,用户可以安心使用 TiDB 多租户能力。
结语
大部分企业会给 TiDB 集群预留充足资源,此时利用 BURSTABLE 属性实现资源观测和资源复用;小部分企业无法给 TiDB 集群预留充足资源,此时可以在线修改多租户配置并实现资源控制。
目前,在证券企业中,许多业务系统跑在不同的 MySQL 集群上面。随着 MySQL 5.7 生命周期结束以及 IT 基础设施国产化改造的推进,把存量的多套 MySQL 集群归集到一套 TiDB 集群成为一个理想的解决方案。通过 TiDB 的资源管控特性,多个业务能够共享一套集群,实现资源的有效利用。对比传统多租户方案,TiDB 多租户除了基础资源控制能力以外还提供了更强大的资源复用能力、资源可观测性、在线可配置性、在线限流等能力。可以更好降低整体硬件成本、减少多集群运维成本、观测资源池使用率。
相关文章:

TiDB 7.1 多租户在中泰证券中的应用
本文详细介绍了中泰证券在系统国产化改造项目中采用 TiDB 多租户技术的实施过程。文章分析了中泰证券数据库系统现状以及引入 TiDB 资源管控技术的必要性,探讨了 TiDB 多租户的关键特性,并阐述了在实际应用中的具体操作步骤。通过该技术的应用࿰…...

嵌入式-stm32-SR04超声波测距介绍及实战
一:超声波传感器介绍 1.1、SR04超声波测距硬件模块 1.2、SR04的四个IO口 vcc:提供电源5V gnd:接地 Trig:是**发送**声波信号的触发器 Echo:是**接收**回波信号的引脚 当TRIG信号被触发时,传感器会发送一定频率的声波信号,该信号被反射后&am…...

智能优化算法应用:基于白鲸算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于白鲸算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于白鲸算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.白鲸算法4.实验参数设定5.算法结果6.参考文献7.MA…...

mac m1芯片 pytorch安装及gpu性能测试
pytorch 使用mac的m1芯片进行模型训练。 #小结:在数据量小和模型参数少,batch_size小时,cpu训练更快(原因:每次训练时数据需要放入GPU中,由于batch_size小。数据放入gpu比模型计算时间还长) 在…...

go 使用 - sync.WaitGroup
使用 - sync.WaitGroup 简介使用注意点 简介 waitgroup 是等待一组并发操作完成得方法。Goroutines对Go来说是独一无二的(尽管其他一些语言有类似的并发原语)。它们不是操作系统线程,它们不完全是绿色的线程(由语言运行时管理的线程)&#x…...

Java Web Day07-08_Layui
1. Layui概念介绍 layui(谐音:类 UI) 是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,极易上手,拿来即用。其风格简约轻盈,而组件优雅丰盈&#x…...

阿里云华北3(张家口)暂时无法办理经营性ICP许可证
阿里云服务器的华北 3(张家口)地域暂时无法办理经营性ICP许可证,如有经营性ICP业务请勿选择此地域。如果需要办理经营性ICP业务的用户,不需要选择华北3(张家口)地域,可以选择华北2(北…...

八种常见顺序存储的算法
目录 1、线性枚举 1)问题描述 2)动图演示 3)示例说明 4)算法描述 5)源码详解 2、前缀和差分 1)问题描述 2)动图演示 3)样例分析 4)算法描述 5)源码…...

Leetcod面试经典150题刷题记录 —— 栈篇
Leetcod面试经典150题刷题记录 —— 栈篇 1. 有效的括号2. 简化路径3. 最小栈4. 逆波兰表达式求值5. 基本计算器 1. 有效的括号 题目链接:有效的括号 - leetcode 题目描述: 给定一个只包括 ( ,),{,},[&…...

【Qt-QThread-QQueue】
Qt编程指南 ■ QThread■ 示例■ QQueue■■■ QThread ■ 示例 #include <QThread> class myThread : public QThread {Q_OBJECT signals...

电子握力器改造
toy_hand_game 介绍 消耗体力玩具,使用握力器(Grip Strengthener)控制舵机旋转。 开始设想是控制丝杆电机滑动,两套设备就可以控制两个丝杆电机进行“模拟拔河”,后续发现硬件设计错误,ULN2003不能控制两相四线电机,…...

3D展2D数学原理
今年早些时候,我为 MAKE 杂志写了一篇教程,介绍如何制作视频游戏角色的毛绒动物。 该技术采用给定的角色 3D 模型及其纹理,并以编程方式生成缝纫图案。 虽然我已经编写了一般摘要并将源代码上传到 GitHub,但我在这里编写了对使这一…...

MacOS+Homebrew+iTerm2+oh my zsh+powerlevel10k美化教程
MacOS终端 你是否已厌倦了MacOS终端的大黑屏? 你是否对这种美观的终端抱有兴趣? 那么,接下来我将会教你用最简单的方式来搭建一套自己的终端。 Homebrew的安装 官网地址:Homebrew — The Missing Package Manager for macOS (o…...

jenkins解决工具找不到的问题
--------------------------插件选择版本最好能跟服务器对上...

Android : 画布的使用 简单应用
示例图: MyView.java: package com.example.demo;import android.content.Context; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.Vi…...

紫光展锐5G扬帆出海 | 东南亚成为5G新热土
东南亚是一块充满活力和潜力的市场,这里人口基数大、年轻消费群体占比高,电子市场在过去几年显著增长。 增速“狂飙”的东南亚手游 近年来,东南亚手游下载量逐年增长,2023 年第一季度下载量突破 21 亿次,贡献了全球近…...

STM32 学习(一)新建工程
本课程使用的stm32型号 引脚定义,有FT能接5v,没有FT能接3.3v 启动配置 第二种启动模式中,系统存储器中存放了一部分Bootloader程序,该程序可以接收串口的数据,然后刷新到主闪存中,这样就可以使用串口下载程…...

ROBOGUIDE教程:FANUC机器人固定点焊焊接虚拟仿真
目录 概述 机器人系统创建 焊接工件模型创建 机器人抓手工具添加与工件安装 工作台添加与工件安装 固定点焊焊枪支架模型创建与组装 固定点焊焊枪添加与配置 机器人远程TCP标定(核心内容) 远程TCP手动测试 远程TCP指令介绍 机器人仿真程序编写 机器人示教编程 机…...

代码审计必要性探讨
1、背景 为了保证代码的质量,需要一系列的流程来进行保证: 今天要探讨的是代码审计的必要性。 2、代码审计 代码审计的做法多种多样,我理解必须解决以下问题 ,才可能有效: 核心:审计的本质是对比&#…...

SpringBoot-Shiro
Apache Shiro:https://shiro.apache.org/ 依赖 <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.4.1</version> </dependency>ShiroConfig.java Configuratio…...

认识Docker
大家好,这里是七七,今天起开起我们的Docker技术篇,本文是介绍Docker的,不介绍如何使用和安装Docker,只是单纯的介绍Docker。 目录 一、历史 二、Docker究竟是什么 三、Docker的结构与特性 1、Docker仓库 2、Dock…...

uniapp的分包使用记录
UniApp的分包是一种将应用代码划分为多个包的技术。分包的核心思想是将不同部分的代码划分为不同的包,按需加载,从而提高应用性能。使用UniApp的条件编译功能,开发人员可以根据需要将代码划分为多个包。每个包都包含一组页面和组件࿰…...

JSON.stringify()
一、定义 JSON.stringify() 是一个 JavaScript 内置函数,用于将 JavaScript 对象或值转换为 JSON 字符串 二、语法 JSON.stringify(value, replacer, space); value:要转换为 JSON 字符串的 JavaScript 对象或值。 eplacer(可选࿰…...

机器学习——损失函数
【说明】文章内容来自《机器学习——基于sklearn》,用于学习记录。若有争议联系删除。 1、简介 损失函数(loss function)又称为误差函数(error function),是衡量模型好坏的标准,用于估量模型的预测值与真实值的不一致程度,是一个…...

C#多线程(补充)
C#多线程(补充) C# 多线程的补充在C#中使用多线程1. Thread类2. 线程池3. Parallel类4. Task类启动任务接收任务的返回值同步调用指定连续任务任务的层次结构 5. BackgroundWorker控件 C# 多线程的补充 在C#中使用多线程 1. Thread类 使用Thread类通过…...

关于苹果iOS 16:揭开伪装成飞机模式的隐形蜂窝接入漏洞的动态情报
一、基本内容 在日常生活中,网络威胁不断演变,给个人和组织带来了一系列重大挑战。网络犯罪分子使用的一种最常见的、最具破坏性的方法之一就是网络钓鱼。这种攻击方式通过电子邮件、短信或其他通讯渠道冒充可信实体,诱使个人泄露敏感信息&am…...

Python+OpenCV 零基础学习笔记(4-5):计算机图形基础+Python相对文件路径+OpenCV图像+OpenCV视频
文章目录 相关链接运行环境前言计算机图形OpenCV简单使用图形读取文件读取可能会出现的问题:路径不对解决方案其它路径问题解决方案 图像显示保存OpenCV视频视频素材如何获取?简单视频读取 相关链接 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 …...

【C++篇】讲解Vector容器的操作方法
文章目录 🍔vector容器概念🌹操作方法⭐赋值操作⭐容量和大小⭐插入和删除⭐数据存取 🍔vector容器概念 vector 是 C 标准库中的一个容器,它提供了一种动态数组的实现。vector 容器可以存储任意类型的元素,并且可以根…...

桥接模式-举例
概叙:桥接模式用一种巧妙的方式处理多层继承存在的问题, 用抽象关联取代了传统的多层继承, 将类之间的静态继承关系转换为动态的对象组合关系, 使得系统更加灵活,并易于扩展, 同时有效控制了系统中类的个数…...

FreeBSD下安装Jenkins(软件测试集成工具)记录
简要介绍Jenkins 简而言之,Jenkins 是领先的开源自动化服务器。它使用 Java 构建,提供了 1,800 多个插件来支持几乎任何事情的自动化,因此人类可以将时间花在机器无法完成的事情上。 主要目的: 持续、自动地构建/测试软件项目。…...