tiflash 属于实时的写入,还是异步写入

tiflash 属于实时的写入,还是异步写入

哪几个技术点保证,tiflash的同步不阻塞tikv的写入?

异步写入,先写tikv,再写tiflash。

但是可以一致性读取,如果从tiflash读取的数据不是最新的,会等着同步完成再返回结果。

tiflash的在同步的时候,对其他tikv来说就是一个learner角色的tikv。不参与raft组的投票,不会被tikv选中为leader,但会同步raft日志,照着raft日志做一遍,数据也有了。

2 个赞

https://docs.pingcap.com/zh/tidb/stable/tiflash-overview
TiFlash 以低消耗不阻塞 TiKV 写入的方式,实时复制 TiKV 集群中的数据,并同时提供与 TiKV 一样的一致性读取,且可以保证读取到最新的数据。TiFlash 中的 Region 副本与 TiKV 中完全对应,且会跟随 TiKV 中的 Leader 副本同时进行分裂与合并 这里说是实时复制呢?这个实时和问题的实时不是一个概念?

我是这样理解的:

你问的是实时写入,这个只有raft组里面的leader可以做到的。因为tiflash不能做leader,肯定不会是第一时间写入的。
但后面这段文字也没大问题,因为他写的是实时复制。作为learner角色,可以实时复制数据也是没错的。

所以我理解,问题不在两个实时,在于写入和复制。

可以做到一致性读取,tikv的已经算是最新的mvcc版本了,也就限制了tiflash也必须要达到tikv这个版本,才会返回。如果tiflash的写入同步是异步的,就肯定存在延迟,select就会等待嘛?

select会等待

感谢!

是实时写入

不光kitv的多数派写成功,还需要tiflash返回至少一个写成功,这种应该叫实时吧。
tiflash是这种运行模式吗?

异步的

核心特性

TiFlash 主要有异步复制、一致性、智能选择、计算加速等几个核心特性。

https://docs.pingcap.com/zh/tidb/v7.1/tiflash-overview

文档写的是异步

应该是异步,先写kv,楼上大佬说的很清楚,又学习了

tiflash在kv里面叫learner 不参与投票。几乎是实时的。你自己可以测试一下

insert a (id) values(1);
select /*+ read_from_storage(tiflash[a]) */ id from a;
你只需执行这个sql看是不是实时的。

自己测试一下 :leftwards_hand:

en 好的 保证你可以看到插入的1

Tiflash通过 Raft Learner 协议进行数据的异步复制,确保了数据的强一致性,同时保持了与 TiKV 的隔离性。这种异步复制的方式允许在 TiFlash 节点宕机或网络延迟的情况下,TiKV 业务依然能够继续运行,因为learner不参与投票选举,单纯同步raft日志;TiFlash 的核心特性之一是异步复制,它通过 Raft Learner 协议以异步方式复制数据,这有助于在 TiFlash 节点宕机或网络延迟的情况下,确保 TiKV 业务能够继续运行。

收到 :leftwards_hand:

leaner角色,那就肯定是异步了