你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
Charele - Cisco4321
赞同来自: maodedongfang
[已注销]
赞同来自:
要回复问题请先登录或注册
Cisco4321
9 个回复
Charele - Cisco4321
赞同来自: maodedongfang
上面讲了在主分片上的清理过程,下面是后续,
注意:两个地方的不同
主分片上只是持久化
副分片上会update租约信息(就是直接替换掉大租约对像),和主分片保持一致。
然后持久化。
[已注销]
赞同来自:
Charele - Cisco4321
赞同来自:
上面那个类叫RetentionLeases(带s),不妨叫大租约(只是一个称呼)
还有一个叫RetentionLease(不带s),叫小租约,
注意大租约和小租约的区别
小租约包含在大租约里面,
大租约对像就是存在于左边的这个ReplicationTracker里的。
Charele - Cisco4321
赞同来自:
主分片的情况:
1> 当你新建一个主分片时,它会写一个空租约文件(新分片啥都没有)。
老分片就不写了,因为已经存在了
2> 然后会读入租约文件(新老分片都会读),并设置相关内存变量
注意:方法名里的"OnReplica",并不指副分片,而是副模式
3> 在随后,这个主分片在激话为主模式时,会把“主分片本机”形成一个小租约,加到大租约里面去。
如果是老分片,可能读出来的租约里面有本机了,就不会加
主模式,副模式,是ES的一个内部概念,对用户并不可见。(重要一点:主分片可以在任意模式,副分片只能在副模式)
这是主分片的初始化,下面说说副分片中关于租约的初始化
Charele - Cisco4321
赞同来自:
说起副分片,必然要说起副分片恢复。
这儿不详谈,网上有相关文章可以看看。
前提:开启softDelete(关闭的情况不讨论,因为罗辑会有不同)
副分片恢复时,分为两种类型:file-base,seqNo-base。
seqNo-base这种比较省时,因为它无须执行phase1过程,节省了许多时间,
但要seqNo-base,是有许多条件的,其中之一就是检查你的租约:
这里检查的要求是:
1 在主分片这边,必须有这个副分片的租约存在
2 且这个租约的保留号,必须 <= 请求恢复点(这个请求恢复点是由副分片发过来的)
Charele - Cisco4321
赞同来自:
继续说副分片是如何建立租约的
在file-base的情况下:在执行phase1时,主分片这边会建立“副分片节点”的小租约
注意:在seqNo-base时,无须这步,因为“有租约”,是执行seqNo-base的前提,见上楼。
最后,在执行phase2的时候,主分片会把自己的大租约传给副分片。副分片在后面会把这个租约持久化
这样,副分片就有了和主分片一模一样的信息
Charele - Cisco4321
赞同来自:
上说的是分片如何初始化租约(主分片和副分不同)
下面说租约的作用和变化情况
这是ES里面创建merge策略的地方,看这两个红框处,
就是指定要保留的文档,以免被"merge 掉“。
Charele - Cisco4321
赞同来自:
大于这个序号的文档,都要留着,有用(比如softDelete时)。
如何找到这个“最小序号”呢,
这就有租约的参与了。(不是唯一要素,但是是其中之一)
只说要点,不可能说得太具体。
Charele - Cisco4321
赞同来自:
下面说说租约的变化,大致分为两种类型
1> 前台,当租约发生改变(比如新副分片加入,小租约就会增加),
2> 后台,定时任务(ES会开启后台线程,每30秒对租约进行检查,如果需要,就清理)
这两种差不多。下面来讲大租约的“清理”
清理过程只发生在主分片上!是重要的一步,就是看看小租约里有没有过期的,有没有失效的。如果有就清理,保证租约的正确性。
红,蓝框,分别是上面说的两种需要清理的条件,
a> 每个小租约都有个有效时间(缺省12小时),过了这个时间,就认为失效了
(程序的判断是一半,就是6小时后就认为过时了。为什么这么做,没明白为什么)
b> 小租约的保留号失效了(就是拿保留号跟“某个值”比一下。这个比较值,是一个“针对某个分片的“全局检查点, 这个值如何来的,以后谈)
清理就是替换掉小租约,新建新的有效的,这没啥好说的。