您当前的位置:首页 > 电脑百科 > 数据库 > 百科

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

时间:2023-12-11 12:54:55  来源:微信公众号  作者:开发内功修炼

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

当有用户请求到来时,负载均衡组件会把请求发送给 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。整个容灾切换机制都无需人为干预,通过这种方式实现高可用。

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

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

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

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

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

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

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



Tags:数据库   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  Search: 数据库  点击:(4)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28  Search: 数据库  点击:(13)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  Search: 数据库  点击:(12)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12  Search: 数据库  点击:(25)  评论:(0)  加入收藏
让数据库和缓存数据保持一致的三种策略
如何保证缓存和数据库的一致性,这算得上是个老生常谈的话题啦,看到好多技术新人在写更新缓存数据代码,采用了非常复杂甚至“诡异”的方案,甚为不解。一、背景目前随着缓存架构方...【详细内容】
2024-02-20  Search: 数据库  点击:(35)  评论:(0)  加入收藏
MySQL数据库如何生成分组排序的序号
经常进行数据分析的小伙伴经常会需要生成序号或进行数据分组排序并生成序号。在MySQL8.0中可以使用窗口函数来实现,可以参考历史文章有了这些函数,统计分析事半功倍进行了解。...【详细内容】
2024-01-30  Search: 数据库  点击:(53)  评论:(0)  加入收藏
一篇文章,彻底理解数据库操作语言:DDL、DML、DCL、TCL
本篇文章以具体的SQL语句讲解了数据库SQL语言四大分类(数据定义语言DDL,数据操作语言DML,数据查询语言DQL,数据控制语言DCL),同时也介绍了事务控制语言TCL。最近与开发和运维讨论...【详细内容】
2024-01-30  Search: 数据库  点击:(41)  评论:(0)  加入收藏
一文读懂:什么是数据库,它到底有啥用?
提到数据库,可能很多人会很陌生。但据库其实已经渗入我们生活的方方面面,像网上购物、扫码点餐、抢红包等等应用背后都离不开数据库的支持。可以说数据库是支撑各类应用软件运...【详细内容】
2024-01-25  Search: 数据库  点击:(42)  评论:(0)  加入收藏
oracle数据库基础学习
在当今数字化时代,数据库已成为企业运营的关键要素。而Oracle数据库,作为全球领先的企业级数据库管理系统,更是备受推崇。本文将带您深入了解Oracle数据库的基础知识,帮助您从零...【详细内容】
2024-01-20  Search: 数据库  点击:(85)  评论:(0)  加入收藏
一个流行的支持超多数据库的ORM库
Sequelize 是一个流行的 Node.js ORM(对象关系映射)库,用于在 Node.js 中操作关系型数据库。它支持多种数据库系统,如 PostgreSQL、MySQL、SQLite 和 MSSQL,并提供了简单易用的 A...【详细内容】
2024-01-15  Search: 数据库  点击:(74)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(4)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(3)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(13)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(12)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(6)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(13)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(5)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(4)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(25)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(19)  评论:(0)  加入收藏
站内最新
站内热门
站内头条