WHY Tablet

为什么需要Tablet和为什么DML需要经过Tablet是两个问题

首先说为什么需要Tablet,换句话说TabletVitess的架构中的主要作用是什么?

Vitess是一个分布式数据库,在后端的一个存储节点不仅仅需要存储数据,存储节点还是分布式数据库的一个组件,存储组件要服从集群控制中心的指令,支持控制中心对存储节点进行多维度的全方面的控制,此外,存储节点还需要尽可能的分担集群的工作,具体一点:

  1. 存储节点需要提供基础的增删改查服务。
  2. 作为分布式数据库的一个组件,存储节点能够接受备份到云存储从云存储恢复设置只读停止服务限流认某某节点为主库这样的控制指令。
  3. 作为分布式数据库的一个组件,存储节点要有担当、要能够为集群分忧,比如有其他组件想要一份该存储节点的快照数据、想要一段该节点的某个时间段的binlog,这些功能可以通过查询MySQL获得、解析binlog来实现(注意一次查询数据量别太大,最好能并发拷贝、解析binlog要处理好各种类型、各种格式......好繁琐),作为一个有担当的存储节点是不是可以给其他组件提供一个更简单的接口获取快照数据创建数据镜像
  4. 存储节点有自我保护意识,能够主动暴露自己内部运行状态指标,有问题能够及时被管理员发现,如果延迟过大、MySQL服务过载可以拒绝更多服务请求,更优雅的方式是通知其他节点📢我的健康状况出问题了,不要再给我发请求了

Tablet做了哪些工作:

  1. 集群管理(MySQL管理、主从切换、状态上报、备份恢复)
    节点初始化阶段会生成一个独特的唯一标识,比如hta-123456,然后将标识注册到元数据中心,hta-123456就是这个节点的别名,Vitess管理工具vtctl工具就可以通过别名来发送指令给该节点,比如执行vtctl SetReadOnly hta-123456就会发送一个rpc请求到该节点,Tablet收到指令后就会在MySQL执行设置只读的指令。
    类似的通过vttablet可以完成MySQL的主从初始化、主从切换,备份恢复等等。
  2. 集群保护(连接管理、流量控制、查询合并、超时控制、拒绝服务)
    连接管理:Tablet维护了到MySQL的连接池,Tablet对外(对网关)暴露的就是gRPC查询服务接口,应用可以建立很多很多连接到网关集群,当连接真正执行查询请求的时候发送一个gRPC请求到Tablet,Tablet从连接池拿一个连接执行SQL然后将结果返回给客户端
    ①从连接池拿一个MySQL连接
    ②通过连接执行SQL
    ③拿到SQL执行结果
    ④回收连接到连接池
    ⑥通过gRPC返回结果到网关

这一个请求占用MySQL连接时间在步骤1~4,请求执行完成后马上被释放回连接池,中间没有网络交互,这样一个MySQL连接可以被很多客户端连接复用。在交易场景中也是类似的方式,如果有几千个结算页的应用节点,几千个节点不会都去访问库存数据,而是将对库存的操作做成200个节点的库存服务,库存服务实现添加库存、减少库存、预占库存功能并通过service形式暴露给结算服务,只需要200个库存服务节点去访问数据库,不需要几千个结算页节点去访问库存。
流量控制:如果流量过高、MySQL服务过载,Tablet会直接拒绝更多的服务请求,将自己服务状态设置成NotServing并将服务状态告知网关集群不要再给我发送查询请求了
查询合并:多个查询同时发送到Tablet时候,Tablet只去MySQL查询一次,其他的并发请求等待第一个请求返回结果即可。
超时控制:对于超过某个阈值没有执行完成的查询、某个事务超过30秒没有提交,Tablet可以kill掉这样的查询、回滚这个事务,避免单个查询、单个事务影响整个节点的服务质量。
拒绝服务:如果MySQL过载、节点下线(拆分过程中旧的节点要下线)等,可以通过Tablet直接拒绝服务。

  1. 数据同步(VReplication、VStream、Resharding)
    Vitess在水平拆分物化视图(广播表)全局二级索引等重要功能都需要数据复制、数据拷贝、增量实时同步的工作,Vitess将数据拷贝、增量实时同步模块解耦出来,在Tablet内部实现了相关的逻辑VReplication,外部模块只需要发送给Tablet一个rpc请求,就可以得到全量数据和实时增量数据,将复杂的数据处理逻辑封装在Tablet内部,暴露给数据使用者简单的RPC接口。
  2. 多引擎支持(MySQL5.6、MySQL5.7、MySQL8.0、MariDB、MyRocks、Postgre)
    将存储引擎隐藏在Tablet后面,实现了存储引擎和Vitess其他组件(VTGate)的解耦,目前Vitess支持MySQL、MariaDB,后续还有可能支持Postgre,后端的存储引擎可以变,VTGate到Tablet的接口不需要改变。
  3. 监控采集(主从延迟、QPS、未提交事务、SQL指纹维度统计监控)
    Tablet会采集节点MySQL的一些状态数据,将该节点的一些状态信息上报给网关,比如主从延迟、节点是否处于服务状态、当前QPS、MySQL运行是否正常等等,网关可以通过收集到的Tablet健康状态决定是否发送请求给Tablet。
    此外Ttablet本身也会采集一些监控指标,比如SQL指纹维度的执行监控,执行次数、平均执行时间,在Tablet执行时间、在MySQL执行时间、当前执行的查询、当前执行的事务、当前节点参与的分布式事务等等。
  4. 分布式事务
    作为分布式事务参与者,对于本节点参与的超时未提交的分布式事务Tablet会发起Resolve,推动分布式事务提交或者回滚。

除了现在的工作,Tablet还可以做什么?

  1. 流量控制,可以通过Tablet精准控制某个schema的QPS,实现按照流量计费。
  2. 数据量控制,采集某个schema的数据量(或者数据行数),某个schema数据量(或者数据行数)超过某个阈值,禁止插入数据,实现按照数据行数、数据量计费。

哪些工作必须由Tablet完成

  1. 集群管理(主从切换、拒绝服务、场景禁写、状态上报、备份恢复)

为什么DML需要经过Tablet,非如此不可?

不是,我们很久之前就考虑过DML请求绕过Tablet,在今年上半年首先实现了不在事务中的SQL绕过Tablet,网关直接发送到MySQL。现在我们正在支持所有网关的DML请求都绕过Tablet这功能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容

  • 数据库系统设计概述 世界上只有两种开发人员,一种使用数据库系统的,一种开发数据库系统的。 数据是系统最重要的信息。...
    MageByte_青叶阅读 756评论 0 0
  • 1. MySQL 索引使用有哪些注意事项呢? 可以从三个维度回答这个问题:索引哪些情况会失效,索引不适合哪些场景,...
    寂水流深阅读 2,096评论 0 1
  • 13面试问题(2) 是否存在i+1<i的数 存在,int最大值 redis的五种数据类型是指 value的类型,k...
    saluch阅读 775评论 0 0
  • 后端架构师技术图谱 最后更新于20180502 数据结构队列集合链表、数组字典、关联数组栈树二叉树完全二叉树平衡二...
    01_小小鱼_01阅读 1,805评论 0 38
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,531评论 28 53