关于tidb raft 协议

tidb 采用raft 协议,保证数据一致性,是指tidb 所有组件节点,还是只单指 tikv 节点啊,像tidb-server 有使用什么协议吗

TiDB 是存算分离架构,tidb-server 只是无状态的计算节点而已,所有系统表其实是存在 TiKV 中的。详细可以看下 https://docs.pingcap.com/zh/tidb/stable/tidb-architecture

1 个赞

是单指tikv的,tidb-server是无状态没有数据的,只是一个入口。

PD呢,PD似乎也采用了raft 协议吧,PD上是有数据的,是不是也有个一致性问题啊

PD(Placement Driver)是TiDB集群中的一个组件,负责存储和管理集群的元数据信息,如Region分布、节点状态等。PD确实采用了Raft协议来保证数据的一致性。

Raft协议如何解决一致性问题

Raft协议通过以下机制来确保数据一致性:

  1. 领导者选举:Raft协议通过选举机制确保在任何给定时间内只有一个领导者(Leader),从而避免了多个节点同时尝试更新数据的问题。
  2. 日志复制:Leader负责接收客户端请求并更新自己的日志,然后将这些日志条目复制到其他节点(Follower)。只有当日志条目被复制到超过半数的节点时,Leader才会将其提交到状态机。
  3. 心跳机制:Leader会定期向Follower发送心跳包,以确认Follower的状态并防止Follower超时后错误地触发新的选举。
2 个赞

pd上用etcd存储元数据,etcd用了raft保证数据同步。
当pd leader挂了的时候,选leader的过程也是raft协议。

1 个赞

只有TiKV 节点是raft 协议 ,6版本以后也可以超过3副本 变成多副本

有没有tidb 原理相关的文章推荐一下啊,

  • Raft 协议 主要用于 TiKV 节点 之间的数据一致性,保证数据的副本一致性和容错性。
  • TiDB 组件 使用 gRPC 协议 与 TiKV 通信,并使用 两阶段提交协议 来保证分布式事务的一致性。TiDB 本身不直接使用 Raft 协议,但它通过分布式事务管理来确保跨 TiKV 节点的数据一致性
1 个赞

etcd 是什么啊,都百度不到呢

PD是只有一个leader,所有的获取都是从一个节点获取的,其余两个PD节点可以理解为从节点,只有leader挂掉的时候,其余的PD节点才成为主节点。

看这里

1、gRPC:TiDB 服务器与 TiKV 存储节点之间的通信是通过 gRPC 实现的。gRPC 是一种高效的远程过程调用(RPC)框架,它使用 HTTP/2 作为传输层,并且通常采用 Protocol Buffers 作为接口定义语言(IDL)。
2、PD (Placement Driver):TiDB 与 PD 之间的交互也是通过 gRPC 进行的。PD 负责管理集群元数据、调度和负载均衡等任务。
3、TiFlash:如果部署了 TiFlash 分析引擎,那么 TiDB 与 TiFlash 之间的通信同样依赖于 gRPC。