TcaplusDB君的小知识:TcaplusDB技术原理分享

TcaplusDB君的小知识:TcaplusDB技术原理分享数据库技术是通过研究数据库的结构、存储、设计、管理以及应用的基本理论和实现方法,并利用这些理论和方法来实现对数据库中的数据的处理、分析、转化等操作。 数据库技术作为计算机数据处理与信息管理系统的核心…

TcaplusDB君的小知识:TcaplusDB技术原理分享

数据库技术是通过研究数据库的结构、存储、设计、管理以及应用的基本理论和实现方法,并利用这些理论和方法来实现对数据库中的数据的处理、分析、转化等操作。 数据库技术作为计算机数据处理与信息管理系统的核心,研究和解决了计算机信息处理过程中大量数据有效地组织和存储的问题,在数据库系统中减少数据存储冗余、实现数据共享、保障数据安全以及高效地检索数据和处理数据。

在本篇文章中,将会介绍腾讯自研的分布式数据库TcaplusDB的技术原理。


存储原理

一个表通过HASH分表,按照路由数组长度(默认为10k)进行取模运算分片(Mod Sharding),所以每张表最多可以分成10k个分片(Shard)。以下图为例,1个TcaplusDB表被分为5个Shard文件分布到不同存储节点,每个结点分布有1个或多个分片的数据。 在这里插入图片描述

图3.1 TcaplusDB存储技术示意图

3.2 系统扩容

TcaplusDB扩容分别在存储层和接入层进行。从第2章节的架构图中,可以看到接入层即Tcap Proxy层,存储层即Tcapsvr层(主备节点)。对于接入层而言,采用的是无状态设计,所以可以灵活水平扩缩容,且不影响线上业务,对业务无感知 ; 对于存储层而言,由于表采用的是分片设计,在扩容时需要将原机器上的分片水平迁移到新机器上,达到扩容存储空间的目的。以图3.2为例,Table A在扩容前,只有一个分片Shard 1, 路由数组长度为10k。在扩容时,将该表分为两个分片,其中路由项0-5k放在Shard1 , 路由项5001-10k放在Shard2,2个shard分别存储到两个存储节点上。

在这里插入图片描述

图3.2 存储节点扩容示意图

数据迁移过程见图3.3,原TcaplusDB Salve节点上数据会复制到新的TcaplusDB Master节点,通过binlog同步保持数据完整性,接入层tcapoxy的数据请求重定向到新的TcaplusDB集群。

在这里插入图片描述

图3.3 扩容后请求重定向示意图 接入层扩容,如图3.4所示,通过一致性哈希路由切换,将原来由4个tcaproxy负责转发的路由,平均分配给5个tcaproxy,路由切换过程不会造成消息丢失。

在这里插入图片描述

图3.4 接入层扩容示意图

TcaplusDB的扩容基于存储节点的磁盘使用率和QPS (Queries per Second) 2个维度。当单台存储节点容量使用达到一定阈值后即触发扩容操作。


TcaplusDB是腾讯出品的分布式NoSQL数据库,存储和调度的代码完全自研。具备缓存+落地融合架构、PB级存储、毫秒级时延、无损水平扩展和复杂数据结构等特性。同时具备丰富的生态、便捷的迁移、极低的运维成本和五个九高可用等特点。客户覆盖游戏、互联网、政务、金融、制造和物联网等领域。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6382.html

(0)
上一篇 2023-04-11
下一篇 2023-04-11

相关推荐

  • percona-toolkit的安装与使用

    percona-toolkit的安装与使用一、percona-toolkit的安装请参考:https://blog.csdn.net/yuanyk1222/article/details/100066788 二、下面来说说此工具的一些用法:…

    2022-12-25
    164
  • 用zfill函数实现python数据填充补齐

    用zfill函数实现python数据填充补齐在 python 中,zfill 函数是 Python 语言中的自带函数,其作用是用指定字符(默认是“0”)将字符串左侧填充至指定长度。zfill 函数的基本语法如下:

    2023-12-31
    118
  • 技术分享 | 快速掌握 MySQL 8.0 认证插件的使用「建议收藏」

    技术分享 | 快速掌握 MySQL 8.0 认证插件的使用「建议收藏」作者:郭斌斌 引言 MySQL 8.0.15 版本主从复制时,io 线程一直处于 connecting 状态, 由于复制用户使用的认证插件是 caching_sha2_password,而想要通过 …

    2023-01-29
    146
  • 关于Queries_per_sec 性能计数器[通俗易懂]

    关于Queries_per_sec 性能计数器[通俗易懂]【问题描述】 Queries_per_sec (QPS)是数据库两个比较重要的性能计数器指标。我们经常要求开发告知这个参数,以评估数据库的一个负载情况。下面的这段代码连上服务器,做一个简单的查询: u

    2023-01-25
    137
  • JavaScript获取对象的key

    JavaScript获取对象的key在 JavaScript 中,获取对象的 key(属性名)是非常常见的操作。不仅如此,有时候我们需要对对象的 key 做进一步的操作,如查找某个特定 key,在循环中迭代对象等等。这篇文章将详细介绍如何使用 JavaScript 获取对象的 key(属性名),并给出多个案例来演示不同的用法。

    2024-06-14
    46
  • innodb_thread_concurrency_MySQL in

    innodb_thread_concurrency_MySQL inExplain简介 本文主要讲述如何通过 explain 命令获取 select 语句的执行计划,通过 explain 我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些…

    2023-02-11
    156
  • 使用Python Tkinter实现复选框

    使用Python Tkinter实现复选框Python Tkinter是一个强大的GUI开发库,可以用来开发各种桌面应用程序。在Tkinter中,复选框是一种常见的GUI控件,用户可以通过勾选或取消勾选复选框来选择或取消选择相应的选项。

    2024-03-27
    76
  • 40Mn18Cr3热锻环[通俗易懂]

    40Mn18Cr3热锻环[通俗易懂]无磁钢40Mn18Cr3和50Mn18Cr5经常作为电机配件进行热锻、模锻、温锻工艺的。 作为电机护环,对材料性能都有较高的要求,特别是护环的屈服。《135 85↘ 上海高高,十几年经营无磁钢下来。…

    2023-03-19
    152

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注