资讯专栏INFORMATION COLUMN

TIDB基础架构

IT那活儿 / 1542人阅读
TIDB基础架构

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


Tidb基础架构

与传统的单机数据库相比tidb拥有纯分布式价格,拥有良好的扩展性,支持弹性的阔缩容,且兼容大多数Mysql的语法在大多数场景下可以直接替换Mysql。
默认支持高可用,在少说副本失效情况下,数据库可以自动进行数据修复和故障转移,支持ACID事务,对于一些有强一致性需求的场景,如银行转账。

图1
  • Tidb Server
    SQL 层,对外暴露 MySQL 协议的连接 endpoint,负责接受客户端的连接,执行 SQL 解析和优化,最终生成分布式执行计划。
    TiDB SERVER本身是无状态的,实践中可以启动多个 TiDB 实例,通过负载均衡组件(如 LVS、HAProxy 或 F5)对外提供统一的接入地址,客户端的连接可以均匀地分摊在多个 TiDB 实例上以达到负载均衡的效果。TiDB Server 本身并不存储数据,只是解析 SQL,将实际的数据读取请求转发给底层的存储节点 TiKV。tidb_mem_quota_query 控制每条sql占用缓存阀值大小。
    Tidb server热点小表缓存:对于一些热点小表,tidb server可以将其直接从磁盘中取出存储在缓存当中,以提高查询速率。首先该表不大于64MB,且表的写操作极少情况只存在大量读操作。
    ALTER TABLE users CACHE;

    将查询频繁数据不大(极少修改)的小表放入缓存来减清TIKV压力  table<64MB,开启小表热点缓存DDL无法操作需先关闭(互斥关系)

  • TIDB PD(Placement Driver) 
    提供TIDB Dashboard监控PD是整个Tidb的大脑,负责存储每个 TiKV 节点实时的数据分布情况和集群的整体拓扑结构,提供 TiDB Dashboard 管控界面,并为分布式事务分配事务 ID。PD 不仅存储元信息,同时还会根据 TiKV 节点实时上报的数据分布状态,下发数据调度命令给具体的 TiKV 节点。此外,PD 本身也是由至少 3 个节点构成,拥有高可用的能力。
    PD client:PD client是tidb server和PD的中间交互模块,事务请求需要先向PD申请TSO时间戳。
    TSO请求者===>PD Client=返还tsFuture,解析编译=>TSO请求者
    ====异步请求TSO=>PD==>返还TSO==PD Client==>tso请求者

    当PD TSO需求量大处理性能方法:PD会一次性分享出一段时间段(3s)的TSO串放入缓存中供TIDB server排队获取。

  • TIKV Server
    负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value值存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range左闭右开区间的数据,每个 TiKV 节点会负责多个 Region。region 分布式存储在TIKV 96-144MB 默认3个副本(高可用性),数据都存储在 TiKV 中。另外,TiKV 中的数据都会自动维护多副本(默认为三副本),天然支持高可用和自动故障转移。

    TIKV持久化存储是通过rocksdbraft(存取日志) rocksdbkv(region)来实现的。把数据保存在 RocksDB 中,具体的数据落地由 RocksDB 负责。TiKV 利用 Raft 来做数据复制,每个数据变更都会落地为一条 Raft 日志,通过 Raft 的日志复制功能,将数据安全可靠地同步到复制组的每一个节点中。不过在实际写入中,根据 Raft 的协议,只需要同步复制到多数节点,即可安全地认为数据写入成功。


RAFT日志复制

1. propose 请求操作===>leader 将请求变成写入日志。
2. append  将日志持久化写入的到RocksDB。
3. replicate 将node1日志复制给node2,node3....,接收到日志后也要自己进行append。
4. committed 不仅仅是leader持久化log其他节点>50%节点保障log在多个节点丢失不了后进行commit。
5. APPLY 将rocksdb raft日志写入到 rocksdb kv中 (实际一个kv有两个rocksdb)。


本文作者:李孝林(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129245.html

相关文章

  • TiDB Binlog 源码阅读系列文章(一)序

    摘要:总体而言,读者需要有一定的使用经验,以及可以读懂语言程序。内容概要本篇作为源码阅读系列文章的序篇,会简单的给大家讲一下后续会讲哪些部分以及逻辑顺序,方便大家对本系列文章有整体的了解。小结本篇文章主要介绍了源码阅读系列文章的目的和规划。 作者:黄佳豪 TiDB Binlog 组件用于收集 TiDB 的 binlog,并准实时同步给下游,如 TiDB、MySQL 等。该组件在功能上类似于 ...

    whidy 评论0 收藏0
  • CNCF案例研究:PingCAP

    摘要:中国论坛提案征集月日截止论坛让用户开发人员从业人员汇聚一堂,面对面进行交流合作。赞助方案出炉多元化奖学金现正接受申请即将首次合体落地中国 PingCAP将其TiDB数据库平台押注在云原生上 showImg(https://segmentfault.com/img/bVbogKp?w=508&h=477); 公司:PingCAP地点:中国北京和加利福尼亚州圣马特奥行业:软件 挑战 流行的...

    h9911 评论0 收藏0
  • CNCF案例研究:PingCAP

    摘要:中国论坛提案征集月日截止论坛让用户开发人员从业人员汇聚一堂,面对面进行交流合作。赞助方案出炉多元化奖学金现正接受申请即将首次合体落地中国 PingCAP将其TiDB数据库平台押注在云原生上 showImg(https://segmentfault.com/img/bVbogKp?w=508&h=477); 公司:PingCAP地点:中国北京和加利福尼亚州圣马特奥行业:软件 挑战 流行的...

    notebin 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<