10月 222020
 

Raft基础

在raft中,服务器节点共有3种状态(或者说角色):

  • leader

    • 负责client交互和log复制,同一时刻系统中最多存在1个。

  • follower

    • 节点的初始状态就是follower,follower只能被动响应请求RPC,从不主动发起请求RPC。

    • 如果follower在一定时间范围(后面会讲,这个叫election timeout)内没有收到leader的请求,则follower可以转变成candidate(If followers don’t hear from a leader then they can become a candidate.)

  • candidate

    • 一个临时的状态,只存在于选举leader阶段。一个节点想要变成leader,那么就发起投票请求,同时自己变成candidate。如果选举成功,则变为candidate,否则退回为follower。其他节点根据当前状态回复是否,如果已经投票给其他candidate,则不会再投票给这个candidate(一个节点只有一票)。

    • 获得多数选票的candidate(n/2+1)将会变成leader。

Continue reading »

12月 262016
 

最近开始看jdk源代码,先分享一个挺好的博客:http://blog.csdn.net/chenssy  chenssy 有关JDK源码的博文写的很细,我就参考他的博文写写其他的内容,已经被chenssy写过的内容我就不再重复啦,估计也没他写的细。另外,如果网上已有相关分析,我可能直接给出链接、做做补充,毕竟本系列属于读书笔记性质,留下个记录免得自己忘记,并不打算写的特别全或是全部原创。下面就开始【源码分析】系列的第一篇:ConcurrentSkipListMap
声明:本博客内容一般采集自互联网,若引用了其他文章或是博客的内容,我会尽量注明出处。如果有转载、未注明出处,或是有侵权的情况,请及时与我沟通(evasnowind@sina.com),我会及时删除。转载请注明本文出处,谢谢。
在java中,
如果我们需要快速存取键值对,可以用HashMap; Continue reading »

12月 032015
 

有这么一道java题目,让人觉得很费解:

int i = 0;
i = i++;
System.out.println(i);

i打印出的结果是0!!相同的表达式在C中则是我们所想象的1!!这个问题从字节码角度考虑就比较容易理解了。下面给出我搜到的一个分析的比较清楚的帖子,给大家看看:
原帖地址:http://piaoboqiu.blog.163.com/blog/static/123127827200910192122472/
具体测试一下以说明问题: Continue reading »