Advertisement

ETCD lease (二) ETCD 源码学习--lease(二)

阅读量:

针对 ETCD 源码的学习过程而言,在深入探讨众多复杂的源代码之前,默认会重点介绍相关的实现机制。如需深入了解源码细节的用户,请参考文章中提供的相关提示信息,并通过这些提示信息找到相应的源代码进行深入研究。

本文主要介绍 lessor 如果发现过期键,server 如何处理过期键的过程。

过期 lease 发现

lessor goroutine

复制代码
 func (le *lessor) runLoop() {

    
 	defer close(le.doneC)
    
 	for {
    
 		le.revokeExpiredLeases()
    
 		le.checkpointScheduledLeases()
    
     ...
    
 	}
    
 }

在运行循环时(runLoop),我们会执行reviveExpiredLeases以检测已过期的lease记录,并将它们被推送到expiredC中去处理。

复制代码
 func (le *lessor) revokeExpiredLeases() {

    
 	var ls []*Lease
    
 	//最大过期元素数量
    
 	revokeLimit := leaseRevokeRate / 2 
    
  
    
 	le.mu.R

全部评论 (0)

还没有任何评论哟~