邮箱:oxwangfeng@qq.com
分类: 架构设计与优化
2016-01-21 16:14:48
选举leader:
1.从jimdb中get key= TOSCANINI_ELECT_PREFIX的值;
2.如果jimdb中key不存在,表示可能是过期的;也可能是本来就不存在;如果key不存在,则通过jimdb. SetExNx(TOSCANINI_ELECT_PREFIX,nowTimestamp, electtimeout);第二个是当前的时间戳,第三个参数是过期时间;并且设置electLock.Leader = true;
3.如果jimdb的key存在,则检查上次本server是否是leader,如果是leader,则这次继续当leader,如果不是leader,则继续下次循环;
也就是说只要机器不down,只要第一次是leader,本server一直是leader;除非这个server down了,并且过期了,其他server才能继续当leader;