聊聊分布式数据库TDSQL的技术架构

news2024/9/21 4:57:21

大家好,我是飞哥!

咱们很多读者都是在互联网公司工作,大部分同学会有一种认知偏差,总以为互联网的业务对技术的要求是最高的。但其实不然。

比如在对延时的要求上,高频量化交易就比互联网的延迟要求要高得多。在数据库上,银行、证券、电信在这些行业中对数据库的要求也比互联网高得多。拿银行举例,银行的系统里是连一分钱都不能错的,而且即使是十几年前的交易记录也必须能够查出来,对安全性的要求就更不用说了。

在过去很长的一段时间里,这些行业选择数据库基本上就是 Oracle 和 IBM 的天下,各家企业在选型时基本就是 Oracle 和 DB2 之间二选一。但前几天看到 IDC 发布了《中国分布式关系型数据库 2023 年厂商评估》的报告,很高兴看到国内数据库已经发展的非常的好了,老东家腾讯云的 TDSQL 也跻身进了领导者位置,并在国内市场上取得了第一的成绩

IDC 是全球最顶级的市场研究和咨询机构。它通过大量的数据进行市场分析,对科技行业里的各种技术各家厂商进行分析。为企业提供专业的咨询服务。这家公司的分析报告是非常权威的,在市场中认可度非常的高。

c4c06cf0360339173723c910f688fbaf.png

那么什么是分布式数据库,其分布式、强一致性、高可用以及无损升级等特性又是如何实现的呢。今天我们在这篇文中使用 TDSQL 技术架构来进行学习和理解。

传统的 Oracle 和 DB2 都属于传统的单体数据库架构。由于数据的进一步的大规模的增长,这种传统架构出现了不少的弊端。一个弊端就是扩展性问题。单机的性能再强存储再大都不可能承受这些行业里的大规模的存储和计算需求。

虽然可以通过分库分表的方式来一定程度提供扩展性,但这种扩展性对应用不透明。应用需要知道底层的集群、库、表的实现细节,代码写起来很脏,后期也不好维护。另一个弊端是存储和计算没有分离,总有一个资源是浪费的。

另外还有个更重要的原因是漂亮国脾气很不稳定,动不动就封锁咱一下,搞得国内各行各业都担惊受怕。在银行、证券、电信这种支柱型的行业里,数据是容不得出一点差错的。所以近年来,这些行业都在积极地在国内寻找平替产品。

所以数据库行业需要一些国内的产品出来解决以上问题。

在腾讯早在 2002 年的时候,也主要是使用 Mysql 来存储腾讯的计费等数据,但后来由于业务的快速发展,用户量越来越大,增值业务收入规模也越来越大,对可用性的要求水涨船高,就开始自研分布式数据库,大约到了 2012 年的时候 TDSQL 就形成了雏形,在公司内部提供金融级的高一致性、可靠性的服务。

在 2014 年的时候,腾讯系微众银行成立。在做存储技术选型的时候,经过反复的测试验证,发现 TDSQL 已经满足了银行对一致性、可用性的需求。开始采用 TDSQL 作为核心业务的底层存储。

后面公有云蓬勃开始发展的时候,TDSQL 自然就作为腾讯分布式关系型数据库被推向了很多银行、金融机构。截止到 2023 年,在 4000 多家国内的各种金融、公共服务、电信、证券等行业得到了应用,服务了30家金融机构完成核心系统的替换,中国十大银行中七家都应用了 TDSQL。

TDSQL 是一个对应用层透明的分布式数据库。应用可以像使用单机数据库一样简单地使用,不必像分库分表那样关心底层的划分策略。数据库自己内部封装事务、分片、灾备、扩展性等功能。

f724ad86a2b950b83d7ae0ef97df1c22.png

从这个架构图中可见,用户请求只需要和负载均衡通信即可,完全不用关心数据库底层的实现。

而在架构内部主要是三部分组成,一是管理节点、二是计算节点、三是存储节点。没错,现代的分布式存储都是计算和存储相分离的。这样可以做到可以单独进行扩展。

当有用户请求到来时,负载均衡组件会把请求发送给 SQL 引擎。从用户视角来看,它看到的是一张整体上的表。

SQL 引擎会对用户输入的 sql 语句进行词法、语法解析,还需要处理分布式场景下的全局自增字段等逻辑。然后根据 MetaCluster 中存储的元信息决定将请求发往后面的哪些数据节点。这里要注意的是,用户访问的表实际上是可能被分布在后台的多个 SET 内的,用户对此并不知情。所以 SQL 引擎会向多个数据节点发起请求,各个节点返回后,SQL 引擎进行聚合后返回给用户。

这是分布式数据库的首要目标,对用户屏蔽分布式,只在逻辑上提供整张的表访问,简化用户使用数据库的方式

由于 SQL 引擎只负责计算,不负责存储,本身是无状态的。该节点只需要重点关注 CPU 和 内存相关的性能优化即可。在硬件上,也可以选择计算型的硬件。

SET 是分布式数据库实例。一个 SET 内部包含了 Master、Slave 节点。每个 SET 中存储哪些数据是由 shardkey 来进行分散的。在数据接入的时候,TDSQL 采用 raft 协议的强同步复制,Master 接收到业务请求后,等待其中一个 Slave 应答成功后才会返回成功,否则不返回。通过这种方式实现强一致性

在每个节点内部,都包含一个 Agent 和具体的 Mysql 实例。这种架构有点类似于微服务中 Mesh 架构 中用 Sidecar 把微服务框架功能独立出来一样。Agent 和存储解耦,好处是 Agent 可以监控并上报 Mysql 的状态,而且系统升级的时候,也可以单独升级和重启 Agent,而不用重启 Mysql 进程,可以做到无损升级

如果 Master 节点发生故障,它的 Agent 会上报它的异常给 MetaServer。接着 Master 会降级成为 Slave。再从剩下的 Slave 中选举一个出来作为 Master。后面的请求就会发送给新的 Master。整个容灾切换机制都无需人为干预,通过这种方式实现高可用

25b0a303612d245fa83806c51924bfdc.png

以上就是 TDSQL 的强一致性、无损升级、高可用在架构上实现的原理。

另外还有一个我觉得在 TDSQL 中比较值得学习的一个点是它的扁鹊智能化 DBA 平台。我们大家在做自己的系统时也可以借鉴这个思路实现自己系统的高效运维。

当集群规模大了之后,必然会出现各种各样的问题。比如网络异常发生、SSD 衰老,如果这些问题全部依赖人工去排查和处理,效率太低了。而且未来分布式系统的规模会越来越大,所以人工维护必然需要被代替。以下是 TDSQL 的扁鹊平台架构。

ee9035473bff8551b1ec8a27ecdce292.png

DBA 靠这个平台可以发现各种集群中运行的问题。比如差 SQL、扩容异常、锁分析等等各种日常运维工作。更高效率的运维也是实现高可用的另一个关键要素。

最后,再次恭喜 TDSQL 登录中国分布式关系型数据库“领导者”类别,这份来自业界的高度评价十分难得。相信国产数据库未来一定会越来越强!

声明:本文用到的 TDSQL 的技术架构图片来自于腾讯云官网中的技术文档《TDSQL 核心架构原理解析》 https://main.qcloudimg.com/raw/63227aa97c20056ee7f8e89e499921a4.pdf

8f6543b5e0dbdf6d2f60228300580a6c.png

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

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

相关文章

家政服务小程序预约上门,让服务更便捷

随着人们生活节奏的加快,家政服务行业越来越受到人们的欢迎。为了满足市场需求,提高服务质量,家政公司需要开发一款预约上门的家政服务小程序。本文将详细介绍如何制作一个预约上门的家政服务小程序。 一、登录乔拓云网后台 首先&#xff0c…

springoot集成kafka

1.常见两种模式 2.高可用 和 负载均衡 组内:消费者 一个只能消费一个分区 组外:消费者消费是订阅者模式

Element的安装以及基本使用

Element是基于Vue的网站组件库,用于快捷构建网页 像上面这样的样式 官网地址 Element - 网站快速成型工具 安装 npm i element-ui -S 装包命令 npm install babel-plugin-component -D 安装好之后会在package.json里面显示版本 在node_modules中会自动初始化一个 …

选择排序-排序算法

思路 选择排序(Selection sort)的主要思路是:在要排序的区间内找到一个最大的元素,将它放到数组的最后一个位置,然后在剩余的未排序区间内找到一个最大的元素,将它放到数组的倒数第二个位置。以此类推&…

涵盖多种功能,龙讯旷腾Module第六期:输运性质

Module是什么 在PWmat的基础功能上,我们针对用户的使用需求开发了一些顶层模块(Module)。这些Module中的一部分是与已有的优秀工具的接口,一部分是以PWmat的计算结果为基础得到实际需要的物理量,一部分则是为特定的计…

2023iEnglish学习成长营结营 助力自主阅读习惯养成

iEnglish智能英语学习解决方案日前消息,2023年最新一期的365天和1000天“iEnglish学习成长营”顺利结营。据悉,截至今年12月,完成365天和1000天每天坚持不低于30分钟的英语原版阅读人数分别累计突破15万人和2万人。而当前,21天、100天、365天以及1000天四种不同目标和意义的iEn…

中文分词演进(查词典,hmm标注,无监督统计)新词发现

查词典和字标注 目前中文分词主要有两种思路:查词典和字标注。 首先,查词典的方法有:机械的最大匹配法、最少词数法,以及基于有向无环图的最大概率组合,还有基于语言模型的最大概率组合,等等。 查词典的方法…

微信小程序 实现上传图片前裁剪功能

前言 技术支持: wx-cropper 裁剪 总体思路是:安装完wx-cropper之后就它当成组件使用。在使用页面的地方引入组件就行。上传图片的逻辑不变,在 通过wx.chooseMedia() Api 拿到图片之后传递给子组件,子组件在拿到图片进行裁剪处理等…

Day60力扣打卡

打卡记录 1682分了记录下,希望下回能突破1700捏。作为一个菜鸟,知道自己很菜,一步步走到现在还是很开心的,从以前的周赛稳定1题到稳定2题,到现在的时有时无的3题。每次刷题都期盼有所长进,虽然更多的时候收…

DockerCompose部署RabbitMQ集群

DockerCompose部署RabbitMQ集群 最近小黄在工作中正好需要部署RabbitMQ集群,借此来记录一下,也希望可以帮助到大家 前置条件 简单介绍一下咱们公司现有的条件以及想要达成的效果 服务器3台,3台都是属于一个专有网络中,也就是说3…

UDP特性之广播

UDP特性之广播 1. 广播的特点2. 设置广播属性3. 广播通信流程4. 通信代码总结 1. 广播的特点 广播的UDP的特性之一,通过广播可以向子网中多台计算机发送消息,并且子网中所有的计算机都可以接收到发送方发送的消息,每个广播消息都包含一个特殊…

单机环境下一人一单

优惠券秒杀 添加优惠卷 店铺发布优惠券又分为平价券和特价券, 平价券可以任意购买而特价券需要秒杀抢购(限制数量和时间) tb_voucher(平价券): 优惠券的基本信息 tb_seckill_voucher(秒杀券): 有voucher_id字段表示具有优惠卷的基本信息,此外还有库存,开始抢购时间,结束抢购…

世界第一个语言不通的人是如何沟通的?

引言:语言是人类交流的重要工具,但在人类历史的某个时刻,肯定会有这样一位勇敢的先驱,他成为了世界上第一个语言不通的人。那么在他面临交流难题时,他是如何与他人沟通的呢?本文将对此进行探索。主体&#…

Nginx+Tomcat实现负载均衡和动静分离

目录 前瞻 动静分离和负载均衡原理 实现方法 实验(七层代理) 部署Nginx负载均衡服务器(192.168.75.50:80) 部署第一台Tomcat应用服务器(192.168.75.60:8080) 多实例部署第二台Tomcat应用服务器(192.168.75.70:80…

【超图】SuperMap iClient3D for WebGL/WebGPU —— 单体gltf模型与Blender中的方向对应关系

作者:taco 在很多包含动画的场景中,像模拟小人的行走、模拟火车的轨迹运行,又或者是模拟风力发电等等等。我们通常会加一些动画模型到里面。而有的时候可能会出现,这火车怎么倒着走啊!这人怎么头朝下啊。这种方向的问题…

【MySQL】MySQL库的增删查改

文章目录 1.库的操作1.1创建数据库1.2创建数据库案例 2.字符集和校验规则2.1查看系统默认字符集以及校验规则2.2查看数据库支持的字符集2.3查看数据库支持的字符集校验规则2.4校验规则对数据库的影响 3.操纵数据库3.1查看数据库3.2显示创建语句3.3修改数据库3.4数据库删除3.5备…

DevOps搭建(五)-JDK安装详细步骤

1、官网下载 官方网站下载JDK,这里我们安装JDK8 https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html 点击上图中的Java SE Downloads项目,也可直接点击下面链接进入: Java Downloads | Oracle 往下滚…

Android14创建Pixel6 Pro模拟器(一百七十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

C++设计模式-Builder 构建器

通过“对象创建” 模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。 一、动机 在软件系统中,有时候面临着“一个复…

STM32--Wi-Fi插座_风扇_灯

项目需求 两个互相通信的双方,波特率必须相同!!!!!! 通过 ESP8266 模块,实现手机控制 wifi 插座 / 风扇 / 灯。 项目设计 串口 1 用于与 ESP8266 通讯,串口 2 连接 PC ,用于打印 log ,查看系统状态。 项目实现 注意&a…