00:00
其实本身呢,咱们这个飞片集群呢,这块如果你要实现的话,这个东西呢,不复杂对吧,就包括咱们用买circle对吧,你要想实现一个什么切片对吧?这个东西呢也没问题对吧,也没问题,比如买S它有集群,然后呢,我也可以对咱们表来进行一个我们的切片,注意啊,它切片针对于谁,针对某张表了,对吧,我现在这个表这一在在咱们一台机器上,在咱们一台机器上,那我搞不定,那可以怎么办呢?对吧,我可以把它放在咱们多个机器上,对吧,你把一张表切开对吧,切开咱们这多个分片,然后分布在多台机器上对吧,其实我现在买SQ如果机器的话,它实现这个东西也不难,但是到如果买SQ这个这个机器实现它的话,对吧,一个比较痛苦的这个地方叫什么呢?叫多数据源的配置。啊,就假如说我现在呢,我想对去连接我们这个买circleq对吧,那么最初的时候呀,我现在买circleq就一台数据库,比如说101啊,这一台数据就可以搞定了,结果后来呢,你们说101这个东西啊,他顶不住了,然后你们对我这个这个这个数据库呢,做一个切片,你能给我整了三台服务器了,102 103和104,那你说我在连接的时候,我连谁呀?我我我现在这个程序,你说我的程序我在连接的时候,我连谁呢?102 103还是104呢,而且咱们现在这个数据啊,同学们它是怎么切的呢?它是比如说我现在有一个什么,我现在有个用户表,这个用户表呢,假如说我现在呢,有1000万条数据,那么其中啊,这个1000万条数据有300万对吧?在哪呢?300万在102上,有300万在我们103上,还有300万在104上,对,还有400万在104上,到400万在104上,那你说我现在要想查询咱用户信息。
01:44
同学们,那你说我是不是得从102103104,把这些东西是不是得都查出来呀,对吧?那就意味着我在程序里边,那么得去连接或者操作多个数据源对吧,那是比较痛苦的,后来阿里啊,他出了一个我们这个产品对吧,出了一个中间建对吧,这个中间键呢,专门是干什么的,相当于我们这个代理有点类似NG意思的角色对吧,你不要查询吗?你别去一个个连了对吧,你连我就行,我来帮你把这东西都查过来对吧,你得保存吗?对吧,你要操作吗?对吧,你不用去连这说1021314了对吧,你就连我就行,这西叫什么呢?这东西叫my cat啊,这东西叫my cat对吧?那么咱们现在呢,在开发的时候,哎,我可能会用到我的my cat,对,用my cat,然后呢,程序如果连接的话,直接连接MYK就可以,然后进下了MYK,它去操作咱们现在不同的我们的数据节点,对吧,那么其实我们现在整个clean house呀,再进行我们的分片继。
02:44
你的手,那么它的一个处理思路,其实呢,和我现在这套处理思路呢,是差不多的,那么具体怎么回事,咱们来看对吧,咱们来看对吧,呃,来到我们这里对吧,来到这里。我们啊来看一下,说要解决数据库水平切分的问题,就是说你现在先把一张表给它切分一下,对吧,放到不同的节点上,放到不同节点上对吧?那么这个时候呢,咱们隔号是可以的,但是呢,你为了操作方便,它需要什么呢?它需要通过一个叫这trip的表引擎把它数据呢给拼接起来,也就说这个东西点它有点类似于谁,它是不是等价于我们买soq里面的MY呀,对吧?它是干什么呢?它是把你切分的这些数据一个个拼起来的,对吧?但是注意啊,这个东西它本身不存储数据啊,它本身叫麦CA也一样,它本身不存储数据,它只是一个空间商,它只是一个中介,对吧?它只起了一个代理作用,对吧,你连我我帮你去查,不用你去写了啊,不用你去写了对吧,那么咱们现在的在做的时候,他会通过分布式的逻辑来什么写入啊,分发呀,短路由等等去操作我们现在不同节点对吧,那咱们这块呢,大家注意啊,关于我们的集群对吧。
03:58
那么因为本来嘛,目前啊,目前咱们a elect这个clean house,他是不是好多企业是不是都在咱们这个试用阶段,对吧,就是现在这些大厂对吧,就是一些大公司他现在呢,来用我们的clean house对吧,能用clean house对吧,但一些小公司呢,这个东西他可能呢,还没有对这技术发展这么快,对吧?那么咱们现在呢,在一些企业用的时候呢,大部分什么呀,大部分同讯用法也是没有配齐群啊,没有配群,因为因为它本身如果单节点的话,它是不是这处理大数据能力是不是也比较强啊,就本身我现在我这个格林耗,它本身就处理海量数据的,对吧,我现在单节点处理能力其实也还好,对也还好,所以说呢,咱们一般在使用的企业里边,大部分啊,这是我跟咱们那个毕业学生聊的,对吧,大们分他们企业的好几个对吧,都是如果用的话,他们都是用什么呢?做了高考用了,就说咱们现在这有副本了,对吧,但是集群呢,对吧,就没有,为什么呢?之所以这么做,其实大家想一想,我现在如果说要不做集群的话,我所有数据都在那儿,是不是都在202上。
04:58
如果202能扛得住的话,然后咱们再做一个副本,还能保证数据不丢的话,你说我做集群凯杀,如果说做集群的话,我这本身是一个比优的表,结果数据呢,在二零二一部分在203,还有一部分你要查询的话,你是不是得从这两种来查,对吧?这个查询性能势必会降低对吧?势必会降低,所以说呢,咱们现在大部分企业里边,它好多都是做什么呀,高考用友了,但是呢,它没有做我们这分片啊,就是为了避免咱们的查询性能的一个降低,对吧?好了,那么咱们现在呢,来把咱们得这个虽然说没用啊,但如果说你去了是吧,随便把这集群给搭出来,那还是比较不错的,对吧?那么咱们现在呢,在这里如果说我要是使用集群的话,大概的一个流程什么样的呢?对吧?那么咱来看一看这个东西啊,注意我们现在呢,这两个我们不能给大家搭,但是呢,我们可以把这个啊,这个六个节点的集群呢,给大家呢,对吧?这个讲解明白对吧?比如说我现在有六台机器啊,有六个节点,对吧?那么这六个节点呢,怎么分配。
05:58
的,那大家可以看一看,六节点应该是S1S2S3:3个分片呗,就相当于我现在要把这表数据拆分成三份对吧?三个分片,然后呢,为了保证咱们高可用性,同学们,那每一个分片S1S1对吧,每一分片都对应于什么呢?有一个副本,所以说咱们现在的S1S1它俩同一分片的R1和R2是同一个分片的两个不同的副本啊,是同一个分片,两个不同两个副本,然后这个呢,它俩是一个分片了,然后这个是它的副本,这子副本,然后这个呢,是第三个分片,然后这个呢是它的个副本,对吧?所以说现在呢,一共是我们这个六个节点对吧?六个节点其实除了这个之外呢,其实啊,这里还应该有节点,这个节点是干什么的?咱们说是不相当于一个代理啊,对吧,相应一个代理对吧,这个呢,他来帮助我接收请求对吧?来请求我现在这个集群对吧?那么如果我现在想往咱们现在啊这可利号写数据的话,那么大概是怎么写的呢?对吧。
06:58
首先客户端发送写的请求给谁了?给我们这个distribute,给这台节节节点了啊给这台节点了,那么这台节点呢?接到请求之后,同学们这里有一个属性的配置,属性配置呢,叫internal replication,对吧?那么它有两个取值是不少人型的,一个是true,一个false,如果你要选择true的话,同学们它走这条绿线,也就是说假如说我在写入的时候,那么你这个属性设置为true,那么这个时候你只需要把咱们数据啊,写到我们这个第一个分片的第一副本里就行了,然后再往咱们这里同步的操作由谁做呢?由他来做对,由咱们第一分片一个副本把数据同步到我们现在第一个分片的第二副本里面去,由他来帮你同步啊,由他来帮你同步对吧?那如果我们去false的话,那这个事谁来做呢?对吧,他呀会把这个请求拿到,拿到请求之后呢,他把这数据发送给第一个分片的第一副一。
07:58
份,然后还是他来做这事儿,对吧?给谁呢?给第一个封面呢,第二副本这一份对吧,他两个啊,就你现有两个副本,那这两个副本数据都谁来发呢?都是他来发的啊,都是他来发的,对吧?那么咱们现在呢,在这里,那你看一看都给你的一个实际情况,对,如果说我当前这个处理能力还好的话,那你可以用这种方式,对吧?如果说你处理能力还好的话,用这种方式吧,但如果说处理能力一般,那咱们现在呢,要用内部发送啊,内部发送啊这是第一个,那如果说我现在呢,要这里写的话,那一样道理对,一样道理对吧,如果说我现在诶这个选择是我们这个处,那这个时候呢,把它发给它,然后内部把这数据发过去,如果说false话,那我先发给他一份,然后再发给我这一份啊,这也是一样的啊,这一样的,这什么呢?这是我们写入的流程对吧,然后接下来,那么如果说要读的流程的话,那么这个怎么读呢?对吧,其实和写差不多对吧,那么读的时候他要考虑什么呀?他考虑大家想一想我现在这一份数据,我其实是不是。
08:59
保存了两份啊,就一个数据,我其实现在是不是是在我这个整个机器里边是不是存了两份啊,同学们,为什么?因为是不是有个副本的,就比如说你看在咱们这里边,我这里边这是不是有副本,然后这里是不是有副本,那也就是我现在真的数据啊,同样这个分销数据我其实存了几份呢?我存了两份啊,我存了两份对吧?那么如果存两份的话,我从哪拿呢?
09:21
我从哪拿的对吧?那咱们就像这个选班长一样对吧,那肯定是孙老师吃饭吃的好的对吧,吃的多的对吧,那么咱们把它选一下对吧,那么它有一个标准,咱们现在这也一样,对吧,那么他会记什么呢?他在这里啊,他会记录一下每一个我们当前这个节点,它的一个犯错数对吧,就像如果说如果说再选班长的话,估计你肯定没戏了,这一天对,就是天天就没事的时候往把手机往往里面放了是吧,那肯定扣分扣多的肯定没戏了,对吧,所以说呢,咱们现在这里其实也是一样的同学们对吧,什么呢?说我现在在这里对吧,他优先选择一个as count小的一副本,就它本身啊,我现在再去读数据的时候,他呢会记录一下对吧,这些副本里边对吧,谁犯错数最少对吧,如果说我犯下犯错,他在这里呢,给你记上,他有小本子,对,要给你记录下对吧,你先拿过来对吧,我给你记住下,其实得有一个类似于原数据管理的东西。
10:21
啊有粒子元素与管理东西对吧,然后接下来,那么如果说大家表现都很好对吧,那这个时候怎么办呢?这个时候对吧,那它就按照什么呢?随机顺序对吧,然后随机优选第一顺位对吧,然后后头名称接近等四种选择方式对吧,就假如说我现在呢,再去数取数据的时候对吧,那第一个我可以随机选,那第二个我可以什么呢?我可以按照它顺序选对吧,然后记起来,那我现在呢,可以看诶我现在随机选谁啊,先选这个按照我这个顺序排第一的对这个选对吧,那如果说我像这些呢,都差不多,那怎么办呢?对吧,还有咱们的host名称的对吧,选这些啊选这些对吧,那么我现在从这里边拿的一些我数据对吧,拿一些数据,然后呢,而是我现在一共是三个分片,三个分片呢,那我肯定得从这个这个这三个节点上拿,对吧,从这三个节点的某一个机器上拿过去,然后组成一个数据,然后给客户端返过去,对吧?这个事儿呢,不用咱们做,他得帮助咱们组合了。
11:21
啊。啊,塔利巴组合了对吧,那大家想一想说老师我现在配集群的话,你说我这副本还用配吗。啊。我集群,我如果集群的话,这个副本还需不需要了,你家集群自己是不是本身就有副本了对吧?集群本身也就副本对吧,就和你那个就没关系了,同学们你要单独配副本这一块,然后你要配集群的话,你这里边你看是不是也可以指定副本了,对吧?所以说呢,其实它俩是分开的啊分开的好了,那接下来咱们现在来看一看对吧?那么如果说我现在刚才讲解呢,三个分面两个副本,然后一共六节点,这种情况,咱们怎么来的这个配置呢?供参考,如果说以后你们在做的时候,对吧,你们有这个比你这个现在10113要多的机器的情况下,你们参考这个啊,你们参考这个对吧,那具体大概做的呢,也是对吧,在咱刚才对吧,这个什么呢?刚才我们自己配置,自己创建一个配置文件呀,对吧,在咱们这个推卡这个下边,然后接下来大家看啊,这里和刚才不太一样了,刚才咱们配完配这个在压这个压袋里边,直接是不是我们这个组keep一个service来到现在不是了,现在什么它是一个集群的名称就在这里啊,他们配咱们集群到这。
12:30
这机器叫什么?注意这个节点,这个点不是固定的对吧,这个键就不是固定的,你有可能叫ABC对吧,但是呢,这个叫你们机器名称对吧?那你需要注意一下,他说我现在再去创建表的时候,那你要把它放哪个机器里边对吧?那你要注意对吧,因为咱们现在呢在这里。它有一个什么呢?就是本身啊,我们现在在我们这个创建的时候,对吧,这个集群呢,它是的针对表的,它并不是针对咱们这个所有的数据库,对吧?其实只是针对某张表,对,只针对每张表,所以说呢,那你在这里把这集群配置好之后,你在创建表的时候,我指定我这个表啊,要使用我这个分片集群,别的表我不用啊,别的表不用对吧?所以说这块呢,你要把这集群名称给我配好,然后集群名称配完之后呢,那么再往下这里这个属性应该熟悉吧。
13:19
像internal replication这干啥的来呢?如果它等于true的话,咱们怎么传数据,Tri接入到数据之后,然后是不是给咱们这个分片中的一个副本,然后呢,这个数据是不是由当前这个副本给下一个副本同步过去了,对吧?如果等于false的话,它是怎么传播传的呢?是不是应该是由tribut分别把这个数据发给副本一和副给副本二了,对吧?这块注意咱们刚才上面给大家说过,对吧?然后接下来,那么再往下走的话,这里有一个什么呢?说我现在呢,在咱们这里边对吧,你得配置一下呀,配什么呢?你看一看咱当前这里对吧?三个分片对吧?三个分片,然后每一个分片呢,那这里是不是两个副本呀,对,两个副本,那咱们看一看机器对这个幺二对吧,这两台机器是同一个分片的,三四同一分片的对吧?然后五六是同一分片两个部本,那咱们来看一下,说我现在呢,那就配分片了,对吧,那这个分片呢是谁对吧?你可以看到在当前我配了一个S2的对吧,这个机器的第一分片,那么这第一分片呢,是我一和二这两台机器对吧?一是一个副本,二呢是一个副本,那么端口号,咱们曾经看见过它的一个端口号9000是不是它的一个TCP通讯的一个端口号对吧?TCP通讯端口号对吧,这是第一副本,那一共有三个对吧,分片,那这里那第二分片它的应该是我们三和四对吧,然后现在第三个分片,那这个呢,是我们这个五和六啊对五和六。
14:48
对吧,应该是五和六对吧,这个呢是我们这个第三个分片,那么每一个分片里面呢,都有两个副本,其实这个配置呢,也非常简单,其实这个配置呢也非常简单,好了,这是关于我们现在的这个分片呢,大概的一个读取和写入的一个过程,对吧,来说停一下。
我来说两句