开发者学堂课程【NoSQL 数据库 Kudu 教程:Kudu 架构—tablet 的冗余存储机制】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/723/detail/12900
Kudu 架构—tablet 的冗余存储机制
内容介绍:
一、tablet
二、tablet server
一、Tablet
tablet 当中的冗余存储机制的概念,tablet 是表当中水平分区的一部分,一个表有多个 tablet 组成,如果说直接把tablet 放在的服务器上面,没有什么问题,但是可能会产生所谓的单点故障,比如说一个表被分成1、2、3、4个台播器,如果当中一个台播器挂掉了,那是不是整个表的数据就不完整了,在底层层面 Kudu 针对每一个 tablet 都做一个冗余存储。
这里有两个 tablet, tablet1,除了在这台服务器上存放一份,这台服务器也存放一份,另一台服务器也存放一份,这样就形成一种冗余机制,非常类似于 HDi 当中的一个快存储的机制,这三个 tablet1之间,以这个绿色中为例,这三个 tablet1之间,之间有一个关系,在任意给定的时刻当中,一个称之为 leader,另外成为 follow,所以为什么会做一个划分因为当中还要把数据负责,对外提供读写能力,这当中不管什么操作,读和写可以什么叫做事务请求和非事务请求,如果都是来读数据,不涉及到数据的修改,这个没有任何关系,从这里读也可以,从这里读也可以,从这里也可以,但是一旦发展到或者涉及到数据的修改,就是事务性操作就有问题。
二、tablet server
比如有一个客户端,知道最终对客户端提供读写能力的,就是的 tablet server,如下图
左边这里有一个叫做 Kudu Client a,在右边这里又有一个客户端,叫做 client b。这两个客户端访问的 Kudu 集群,概括起来要么读,要么写,事务是事务,如果两个同时去对的 tablet1进行一个修改,而且去修改同一条记录数据会怎么样,数据之间可能会产生一种冲突,两个都要修改到底俩谁先修改,这两个会产生事物上冲突,所以为了解决这种冲突,虽然都叫冗余,但是在任意给定的时刻,针对 tab 而言,叫做 leader,简单给标个颜色,另外两个,就叫做follow,所以说针对的冗余,也做了一个 leader,follow 区分,相当于这三个 tablet1,本质上是不一样的,这么区分的关系很重要,Leader 简单描述下,对外提供数据的读写服务,注意除了支持读还是写,但是要注意两个 follow,只支持数据的读服,要去修改数据,知道要操作的叫 tablet1,必须找 leader,之所以在 tablet 的冗余中,一些划分所谓的 leader,follow 主要是为了保证数据的一致性,是为了保证数据的一致性,因为不仅要进行访问能力分析数据,还可能涉及到一个随机的修改,尤其修改就容易产生冲突,所以就明白了,在的讲义上所描述的 Tablet 当中,在任何给定的时刻,一个副本叫做 leader tablet,其他的就叫 follow ,leader 主要是负责的读和写,所以写很重要。leader 只负责的读服,这样就避免了一种冲突。tablet 和的 tablet server 应该是一个多对多的关系,首先第一点明确一个 tablet 可以存放在多个 tablet 服务器上面,如下图的右边与的服务器。
W 有服务器,X有 服务器,Y 有服务器 Z,一个 tablet1可以放在多个 tablet 服务器上面,相当于一个冗余,另外一个,一个服务器上面可以存放多个 tablet,这里存 tablet1,也可以存放的 tablet2,这一点非常类似于的 detnod,一个数据块 block,可以放在多个机器上,然后,一个机器上 table 可以多放存放不同的数据块,所以 tablet 和tablet 社会有什么关系,是一种多对多的关系,主要还是底层,考虑到数据的一个安全性,又考虑数据,一个读写能力,做了一种架构设计,以上就是整体步骤当中一个大致的架构和一些局部的一个细节,对比理解的 HBase 和 HPDS会更加的有帮助。