前言
HDFS的心跳机制是如何设计的?如果我们自己来做又是如果判断一个服务是否有效?
假设不是一个分布式程序,而是一个多线程程序。有10个线程,一个master线程,9个slave线程。
你需要知道这9个slave线程是否还是活跃有效的。
那么,在本文最后会给出一些不错的文章链接。
源码分析
那么到底是谁给谁发送心跳呢?一般来说是DataNode向NameNode发送心跳,然后判断DataNode是否已经失效了。那么DataNode是如何发送心跳的呢?
DataNode.java
好, 接下来看一下NameNode是如何处理的?
|
|
|
|
样例
例1
样例2:抽取出心跳监控代码
结束语
到这里, 我们结束了整个流程,由DataNode向NameNode发送心跳。
NameNode判断当前节点是否超时,如果是则进行对应的操作,否则一直持续相关操作。
最后在分享一些心跳监控的设计资源链接:
http://liaojieliang.com/heartbeat-protocal-design/
http://blog.csdn.net/baidu20008/article/details/45022461
http://www.raychase.net/3758