1、leader選舉機制,就是從副本隊列中選擇一個副本作為leader。這里需要理解兩個概念,一個是副本隊列(ISR)這個隊列是一個動態隊列
對於這個隊列,它的特點是,隊列中的follower的offset和leader中offset值是一樣的(LEO),也就是完全同步。ISR中包括leader和follower,注意
這個隊列中的內容不能理解為真實副本,因為真實副本是broker。
2、當leader掛掉以后,需要從ISR中選擇一個副本出來當leader,但是ISR中不一樣有內容,所以就會根據unclean.leader.election.enable的值有
不同處理辦法:值為true的時候,如果ISR中有,我就選擇一個,如果沒有,我就從OSR隊列中選擇一個(就是不完全同步的隊列);值為false的時候,我必須
要從ISR中找到一個,如果沒有,不好意思,當前服務不可用,一直等,也就是一直等到原來掛掉的leader重啟起來,加入ISR中,重新成為leader。
3、說明一點就是,如果是設置的true,那么導致的后果就是數據可能丟失,如果是false,集群可能丟失可用性。這一塊感覺有點難理解,看了好幾篇博客,加自己理解才整明白。
參考:
https://zhuanlan.zhihu.com/p/65512721
https://segmentfault.com/a/1190000038756474