etcd中的"IS LEARNER"是指在etcd叢集中新引入的一種節點角色——學習者(Learner)。這個概念最早出現在etcd的3.4版本中。在介紹學習者角色之前,先簡單瞭解一下etcd叢集的背景:
etcd是一個分散式鍵值儲存系統,常用於服務發現、配置管理和分散式鎖等場景。它內部使用Raft演算法來保證資料的一致性。在etcd叢集中,通常有三種型別的節點:Leader、Follower和Candidate。Leader負責處理所有的寫請求,Follower是Leader的備份,而Candidate則是Follower在特定條件下嘗試成為Leader的狀態。
在etcd 3.4版本之前,當新增一個新的節點到叢集中時,這個新節點會立即成為Follower,開始參與Raft演算法的投票過程,這可能會對叢集的穩定性造成影響。特別是在網路分割槽或配置錯誤的情況下,新節點的加入可能會導致叢集不可用。
為了解決這個問題,etcd 3.4版本引入了Learner角色。Learner節點在加入叢集時不會立即參與投票,而是以非投票成員的身份加入,它不計入Raft演算法的法定人數(Quorum),因此不會影響叢集的可用性。Learner節點會從Leader節點同步資料,直到它的資料與Leader節點完全一致。一旦Learner節點的資料同步完成,它就可以被提升為正式的Follower節點,參與到Raft演算法的投票過程中。