Day 10 - TiFlash架构(下)

https://ithelp.ithome.com.tw/upload/images/20210904/20113220QGMp428W6E.png

引用https://book.tidb.io/ TiFlash架构图

登愣,看到这张图是不是就已经想关掉网页了,没错!他看起来就是这样的让人感到厌世...

究竟TiFlash要怎麽让自己长出资料来?首先安排了一个心腹Replica Manager负责监听TiDB的内线消息,只要听到有关於TiFlash的DDL操作,就通知PD转告TiKV分裂出region。
这个时候的region是learner角色,然後会被放置到TiFlash所在的store。Replica Manager也会将TiFlash资料同步进度回报给TiDB。
而TiKV收到通知後,便将异动的资讯透过raft command丢给Raft Learner Proxy,最後将资料结构从row转换成column写到disk。

而当client发起了一个select request到tidb,首先tidb将要读取的region以及schema版本转发给Coprocessor,然後Coprocessor会先向Schema Syncer确认schema版本是否有落差需要更新。
这里的Schema Syncer会持续不断的同步schema异动信息。接着比对raft leader的index和learner的apply index,确认资料是否跟上。依据从PD的TSO取得的时间决定snapshot read的版本,最後完成语法的计算再回传给TiDB。


<<:  【Day 04】 Data Analytics Pipeline 对应於 AWS 中的服务 ( 2 )

>>:  [Day 4] Reactive Programming - 观察者模式Observer Pattern

day13: 模组化好的写法 -单一功能原则(1)

在程序码中,我们常常因为需要在一个功能当中触发不同的 side effect,会导致一段 funct...

JS Library 学习笔记:嘿!有听过 GSAP 吗? (三)

前两篇介绍了Tween,可以藉此建立出动态效果,但动画不单单是元件本身的动态,以整个专案的视角来看,...

Day 29 RSpec 里的 Factories 和 Fixtures

该文章同步发布於:我的部落格 测试有一个必要的条件就是要有资料来做测试,有三种方法可以 Rails...

[Day 16] 我的资料哪有这麽平衡!第一季 (data augmentation)

前言 走过了资料分析、演算法选择後, 我们得知了有些可以改善模型的方向: 解决资料不平衡 学习率的设...

[21] [Discord 机器人] 01.建立基本机器人

新增 Discord Application 到 Discord Developers Applic...