00:00
接下来我们给大家演示一个写的流程,好吧,来咱们拷贝,拷贝以后把这个节点啊集群的信息呢,给它拷贝过来,拷贝过来以后这个数据我不要了,张三张三不要了,咱们这个分区啊,它这个分片啊有点太多了,咱们少点啊来去掉咱们这个地方,他留下来,咱们这个呢,它留下来这个不要了。咱们现在呢,就模仿了一个三个组分片,然后呢,每个分片有一个我们副本的概念是吧,这就可以了,那好,那么我们现在呢,来看一看,比方说我们有个客户端,客户端呢想添加一条数据,这个数据可能啊就是张三,诶他比方说就是张三,他如果是张三的话,那么这个时候他的请求就会发过来,你发过来的话,这个流程是什么样子的,是我们接下来要给大家讲的。那么你的请求过来以后,那你说老师啊,我连接哪台机器呢?首先你是不知道你应该连接哪一个的,为什么?因为你不知道是在P0还是P1还是P2吗?哎,老师我知道啊,记住你是到了我们的集群之后你才知道的,你之前确实是不知道的,所以这个是我们ES集群,记住啊,诶这是我们的ES集群放过来,我们这个颜色呢,给它稍微的咱们换一换啊,换一个我们的这个颜色好不好,诶这个我们写上啊,咱们写上叫ES集群。
01:20
所以说我们之前讲过一个叫路由的一个计算,那个路呢,是你到达了咱们的这个集群里面所做的一个计算,那好了,那么你到了这儿以后,那么我们算出来你的ID啊,算出来你的那个哈希值,以及我们取余运算之后你的那个位置啊,发现是什么呢?哎,是我们的一。所以这个时候记住了同学们,你可能你连的时候啊,就你连集群的时候,你连集群的时候,你连的是这个叫1002,但是我计算出来以后干嘛呢?我发现哎哟,我的张三应该去什么呢?P0里面去,就意味着我需要把咱们的数据给它发送到我们的P0当中去,所以啊,这是我们的它记住我们把这个箭头呢写上这是我们的D0。
02:03
啊,会叫第一步,这个呢,是我们的第二步啊,咱们的第二步,哎,好了,那么我们第二步呢,就往里面写数据了,可是你要记住同学们,你的第二步写数据没有任何的问题,可是你当你写完以后,你的副本怎么办?他是不是也要更新数据啊,所以这个时候我们要向他发请求,给他写数据。然后呢,你发请求以后,他一旦写完之后会告诉你我写完了,然后呢,他在告诉我们的客户端说我写完了,所以啊,它的流程应该是一个诶返回的过程。好了,那我们现在呢,把文字上的东西啊,咱们协商一下来,咱们协商一下来,首先我们在这个位置给它添加上,嗯,放过来,首先我们的第一步啊,第一步干嘛呢?我们的客户端,嗯,咱们的客户端啊,我们叫做请求我们的集群节点啊,集群节点,这个集群节点是任意的,什么叫任意的,哪个都行,为什么呢?因为我只要算出你在哪就行了,所以呢,来写上我们的节点啊,咱们这个节点呢,我们就称之为什么呢?叫协调节点啊,它是有起到一个协调的作用,叫协调节点。
03:11
那么我们的协调啊,我们的节点干嘛呢?他将我们的请求转发到我们指定的节点,就是你的数据在哪个节点,我要去发过去,那么你发过去以后,咱们写上咱们的主分片,咱们的主分片它需要将数据保存对吧?好,那么第四步。那么我们的组分片啊,组分片嗯,组分片它需要将我们的什么数据发送给,发送给我们的副本好了,然后呢,我们的副本啊,副本进行我们诶副本保存后,它进行反馈对吧?然后呢,我们的六我们的主分片,咱们的主分片咱们叫做进行反馈,反馈你反馈完成以后,那么我们的客户端得到反馈啊客户客户端他获取反馈,那么这个时候我们的保存就算是完毕了。
04:10
所以大家可以看到我们现在给大家画的图,以及我们当前的这个流程,其实就是这个样子的,你首先就要明白我们为什么这么做了,第一个我要找到主分片,对吧?第二个不能让数据丢失嘛,得放在副本当中,然后呢,我成功了,我告诉你,你成功了告诉他,那最终我们就知道哦,保存成功了,保存成功你不就可以查询了吗?对吧?这就是一个最基本的一个保存的流程,好吧,课件上告诉你了,我们在客户端获取成功响应之后,文档变更啊,已经在主分片和所有的副本分片中执行完毕,变更是安全的,但是呢,有一些可选的请求参数可以影响这个过程,就意味着我们刚才的执行过程当中啊,可以通过参数进行调整。那这样的话可以提升一些我们的性能,哎,老师这是啥意思啊,咱们举个例子,我们的组分片里面有数据,我就问同学们能不能查询,就意味着它里面有数据能不能查询,可以吧,那你们真的是没有必要非得等着他往里面插入之后,我们这边才能去查,没有这个必要吧,所以在某些情况下,你非得等待他执行完毕你再去查询,就有点慢了,所以我认为呢,在某些情况下,我可以让这个P0主分片,他执行成功就可以查询,你这个慢慢去什么呢?做备份不就完了吗?所以啊,有些参数其实是可以调整的,好吧,那我们这里就说了,它这里面有一个叫一致性操作。
05:36
这个一致性的说了,默认情况下,我们需要保证的什么,我们绝大部分的分片的数据都已经保存成功了,我们才可以继续让他去查询,否则是不能让用户去查的,但是那个一致性的这个参数啊,它的曲子是不一样,有弯。有这个叫or对吧,还有这个,那么这个one是什么意思呢?它表述的是只要主分片它成功了,那我们就可以什么去查询了,你其他的副本呢,慢慢去更新就完了,还有一种情况叫二,所有的组分片和他的副本要全部都更新成功,我们才能让他查询,所以啊,这种方式就意味着我告诉我们的客户端,我们是什么样的一种情况啊,什么情况,还有一个就是默认值了,这个默认值就意味着呀,他不是说只有一个,也不是全部,是绝大部分啊,超出半数嘛,超出半数的分片它有数据了都可以,所以是这样的一个规则啊,所以呢,我们这边呢,需要考虑清楚它是怎么计算出来的,它的一个计算规则呢,就是这样的。
06:36
但是这个计算规则有点不太好,为什么呢?单点嗯,操作时候啊,你这个是不起作用的,为什么呢?因为你单点操作的话,很多副本是什么出不来的嘛,这个呢,我们需要同学们稍微注意一下好,还有呢,我们的这个位置又叫timeout,这个timeout叫超时啊,也就意味着当我们没有足够的副本来进行我们的什么哎,数据更新的时候,那么他就会等待,那么这个等待的过程当中,如果时间太长不会很合适,所以呢,我们可以加上一个超时时间,让他等待的时间变短一些。
07:07
这个地方有一个叫等待一分钟,哎,咱们可以变成什么呢?多少毫秒啊,多少秒啊,其实都是可以的好不好,同学们啊,这就是我们的一个写的流程操作啊。
我来说两句