00:00
同学们,我们现在假设呢,我们的集群是正常的三个节点,那好我画一下来,我现在呢,有第一个节点,然后呢,拷贝我们的三个节点,三个节点当中其中的第一个我们称之为叫主节点,所以咱们用一个红色来表示,这两个呢,我们就用蓝色来表示普通节点啊,然后呢,接下来呢,我们三个节点当中,它里面都会有我们的分片啊,那么分片的话,我们这里呢,给大家准备一下放这边。好了,放过来以后呢,我们这个呢,咱们就给大家去写一写啊,比方说我们这个叫做嗯,我们叫绿色吧,来这个绿色呢,我们写上一个叫P0,这个P呢,就是我们分片啊P0,然后呢,我们再来一个绿色表示叫主分片,那这个呢,我们叫做P1,好了,然后呢,这个呢,我们写上啊来我们写上咱们叫做P2,哎,咱们叫做P2可以了。好,这是我们的三个分片,然后呢,每个分片会有两个副本,所以来我们写上这个呢,我们叫做二零啊,咱们叫二零,好,然后呢,把这个换一个颜色叫紫色,然后呢,这边呢,我们也给它来啊,放到这边,那这是我们的二零啊,或者你放这吧,这都行啊,然后呢,我们这边的什么呢?我们的二一,所以放这边来,它用紫色来表示紫色。
01:12
我们写上叫R1啊,咱们的副本呢,嗯,R一行,那这个R1呢,我们放到这边也是可以的,没问题,好,接下来我们再来我们的这个叫二二,往这边啊,咱们写上咱们叫二二,那这边呢,我们也是那个二二好了,这样的话呢,把我们的这个状态呢,简单的给大家模拟了一下,那我们现在要解决什么问题呢?比方说我现在有一条数据,有一个文档数据,杰森,我要往里面放,那这个时候。它会往哪放呢?举个例子,同学们看来啊,比方说现在我有条数据,这个数据呢,比方说就叫张三吧,咱们举个例子,那如果叫张三的话,那我怎么知道我这个数据应该放在哪呢?首先我们要明确一个概念,同学们,我们这里叫主分片,就意味着数据是往这里面存的。
02:01
我们这个叫副本,它是用来做备份的,所以说你插入一条数据,你首先要保证我们的主分片里面有数据,再去考虑副本上有数据,这个大家能不能明白,所以我们去保存数据,咱们应该先找到绿色的组分片,可是你怎么知道你的张三是放这个里面还是他里面还是他里面呢?你知道吗?你不知道。你根本就不清楚,大家看一下,这个是我们的note,咱们叫做1001。然后呢,这边呢,是我们的1002。这个呢,是我们的1003,他是我们的103,好了,那如果是这个样子的话,你怎么知道张三去哪啊,你不知道。老师,那简单随便给一个呗,你们觉得可以吗?如果大家想想,你要随便给一个,咱们举个例子,就给这个P2的随便给一个啊,那我就问你了,如果你要取数据,取这个张三,你该怎么办?那老师我取P0行不行,那不行啊,你把张三存到了P2,你取P0那行吗?那老师那简单取P2呗,可是你怎么知道我的数据在P2里面呢?你不是随便给的吗?你不知道啊。
03:09
所以在这种情况下,我们张三放进去,你可能还取不到,那就没有任何意义了,所以我们这个张三放哪一个组分片是应该有一个规则的,这个规则在我增加数据和查询数据的时候应该是统一的,对吗?所以这种规则我们称之为叫路由计算。大家来我们说一下,咱们叫做路由计算,说的很简单,计算你在什么位置,那么它的计算是怎么计算的呢?它有个小公式叫哈希,咱们叫哈希,哈希算法嘛,然后呢,把你的那个数据的组件啊,咱们叫ID拿过来,然后干嘛呢?给它模拟我们当前的主分片数量,咱们叫主分片数量。什么意思啊,你不是1233了吗?所以说你就是三了,大家想想,如果你是三的话,那么你前面值不管怎么做,你只有三种情况叫012,就你的计算结果呀,也就是什么呢?我们的012的。
04:11
你说到底是零呢,还是一呢,还是二呢?那就不一定了,对不对,但是不管它,因为只要按这个计算规则的话,你的张三如果方二的话,你的查询是不是也从二去找啊,哎,就这个意思,记住了同学们,就是我们的数据往哪放从哪取,都要靠这个路由计算。诶老师呀,那我们现在如果查询数据的话,你不说了吗?咱们这个查询数据不见得非得从主分片去查呀,我从副本里去查呀,那么你查数据的时候,我应该去找哪个节点呢。大家看啊,来咱们拷贝,刚才咱们说的是保存呢,那现在我们是查询数据,我们该怎么去考虑这个问题。我是查那个张三啊。记住啊,同学们,你要查张三的话,咱们这个他应该有对不对,他应该是有的,这个没问题啊,然后呢,他是不是也有啊。然后呢,它也有记住,一旦你保存成功了,你的副本中应该包含着你的什么,我们的备份,那这个时候我说过了,我现在想干嘛呢,我去查数据呀,你要想查数据的话,这个用户呢,他访问哪台机器。
05:13
老师,那随便访问的,还是那句话,你觉得随便访问好吗?其实是可以的,为什么?因为你会发现每台机器是不是都有这个张三啊,所以说我问你,你访问这个P2和这个R2有区别吗?没有区别,这就意味着你访问任何一个其实都是可以的,而且你访问任何一个,他们其实都知道当前的集群状态,就意味着你的数据在哪,它是肯定能知道的,他能知道的话,那你访问谁都不重要,没有说一定要访问这个主节点,也没有说一定要访问这个主分片,只要你能够找到它的数据,连接到任何节点都行,这个呢,我们就称之为什么呢,叫分片控制。大家看,记住我们写上,咱们叫分片控制,嗯。咱们叫分片控制什么意思?就是我要控制我到底去哪?懂我的意思吗?同学们,你我要控制我去哪啊,而这个控制去哪呢?其实很简单,就是我们访问啊,来写上我们的这个用户啊,用户可以访问任何一个节点啊,任何一个节点来获取我们的数据,为什么呢?因为规则一样,你的存放规则是一致的,那么你的查询规则也是一致的,对吧?就这么简单,那么既然你访问任何一个节点都能获取数据的话,那么我们的这个节点啊,这个节点我们称之为叫做什么呢?叫调节点啊,协调节点就是用来做调度协调的嘛,对吧,比方说诶,我们现在去访问你了,它起到了一个协调的作用,干嘛呢?可以让我们的请求呢到我们真正的数据节点。
06:47
那老师那我就在这不就完了吗?万一它的负载比较多,它的压力比较大怎么办?它是完全可以干嘛呀,哎,访问另外一个的,所以一般情况下,我们这个分片控制是什么呢?是轮巡。
07:00
就是说我们有三台机器吧,哎,我们第一回是他,第二回是他,第三回它,所以啊,它基本上是一种轮巡操作,能不能明白同学们。千万不要认为老师我访问你,你就给我就完了呗,不一定,因为我当前的节点可能比较很忙,他可能没有时间来不及给你,让你把这个请求呢,转发到另外一个节点上来获取请求不就快很多吗?对不对?哎,就这个意思啊。
我来说两句