006、体系结构之TiKV读取和Coprocessor

1、数据的读取

1.1、ReadIndex Read

例如此时要读取 key =1 的内容,它不能直接去kv中读取,因为它是分布式的,它经过TiDB Server 收到读取请求,然后到PD 当中,找到这个key = 1 再哪个region,在哪个leader上,例如查到了在TiKV node 2上。 然后经过层层路径,终于到了rocksdb kv。 从这个TiDB Server 一直到kv 的数据返回,假设有50ms,则在这50ms 有可能会变更leader,(例如leader 热点平衡,将这个leader切换到其他节点)
在这里插入图片描述
如何保证数据返回过程中,节点不切换
读取的时候。leader会向其他flower发送心跳,告知我在读取的时候,就是读leader
在这里插入图片描述
在这里插入图片描述

1.2、Follower Read

也就是读取的数据,是最新提交的数据。

在这里插入图片描述
注意一点:现在不考虑MVCC 读旧版本数据的情况。

读肯定是需要提交完成之后(1-95). 由于raft log 都是排好序的,读取的动作是在 raft 提交动作之后,它肯定是大于(1_95) 当前的raft_log (1_97) 一定实在之后,这这个1_97就是ReadIndex .这个值就会记录下来。

简而言之,事务开始时间能读取的内容,是已经提交的数据。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

协同处理器(Coprocessor)

在这里插入图片描述
问题1: region散落在不同节点,大量数据需要通过网络汇聚到TiDB上,TiKV上都要返回到TiDB网络开销太大。问题2:所有计算都需要在TiDB上操作,CPU消耗太大

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Coprocessor: 作用将计算下推到TiKV上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值