b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

java分布式文件系统_分布式小文件系统 开源_分布式文件系统有哪些(6)

电脑杂谈  发布时间:2017-04-08 00:11:46  来源:网络整理

租约,顾名思义,就是当客户端需要占用某文件的时候,与主控服务器签订的一个短期合同。这个合同有一个期限,在这个期限内,客户端可以延长合同期限,一旦超过期限,主控服务器会强行终止此租约,将这个文件的享用权,分配给他人。。。

在打开或创建一个文件,准备追加写之前,会调用LeaseManager的addLease方法,在指定的路径下与此客户端签订一份租约。客户端会启动DFSClient.LeaseChecker线程,定时轮询调用ClientProtocol的renewLease方法,续签租约。在主控服务器一端,有一个LeaseManager.Monitor线程,始终在轮询检查所有租约,查看是否有到期未续的租约。如果一切正常,该客户端完成写操作,会关闭文件,停止租约,一旦有所意外,比如文件被删除了,客户端牺牲了,主控服务器都会剥夺此租约,如此,来避免由于客户端停机带来的资源被长期霸占的问题。。。

b. 数据服务器

当然,会挂的不只是客户端,海量的数据服务器是一个更不稳定的因素。一旦某数据服务器牺牲了,并且主控服务器被蒙在鼓中,主控服务器就会变相的欺骗客户端,给它们无法连接的读写服务器列表,导致它们处处碰壁无法工作。因此,为了整个系统的稳定,数据服务器必须时刻向主控服务器汇报,保持主控服务器对其的完全了解,这个机制,就是心跳消息。在HDFS中,主控服务器NameNode实现了DatanodeProtocol接口,数据服务器DataNode会在主循环中,不停的调用该协议中的sendHeartbeat方法,向NameNode汇报状况。在此调用中,DataNode会将其整体运行状况告知NameNode,比如:有多少可用空间、用了多大的空间,等等之类。NameNode会记住此DataNode的运行状况,作为新的数据块分配或是负载均衡的依据。当NameNode处理完成此消息后,会将相关的指令封装成一个DatanodeCommand对象,交还给DataNode,告诉数据服务器什么数据块要删除什么数据块要新增等等之类,数据服务器以此为自己的行动依据。。。

但是,sendHeartbeat并没有提供本地的数据块信息给NameNode,那么主控服务器就无法知道此数据服务器应该分配什么数据块应该删除什么数据块,那么它是如何决定的呢?答案就是DatanodeProtocol定义的另一个方法,blockReport。DataNode也是在主循环中定时调用此方法,只是,其周期通常比调用sendHeartbeat的更长。它会提交本地的所有数据块状况给NameNode,NameNode会和本地保存的数据块信息比较,决定什么该删除什么该新增,并将相关结果缓存在本地对应的数据结构中,等待此服务器再发送sendHeartbeat消息过来的时候,依照这些数据结构中的内容,做出相应的DatanodeCommand指令。blockReport方法同样也会返回一个DatanodeCommand给DataNode,但通常,只是为空(只有出错的时候不为空),我想,增加缓存,也许是为了确保每个指令都可以重复发送并确定被执行。。。

c. 主控服务器

当然,作为整个系统的核心和单点,含辛茹苦的主控服务器含泪西去,整个分布式文件服务集群将彻底瘫痪。如何在主控服务器牺牲后,提拔新的主控服务器并迅速使其进入工作角色,就成了系统必须考虑的问题。解决策略就是:日志。。。

其实这并不是啥新鲜东西,一看就知道是从那儿偷师而来的。在主控服务器上,所有对文件目录操作的关键步骤(具体文件内容所处的数据服务器,是不会被写入日志的,因为这些内容是动态建立的...),都会被写入日志。另外,主控服务器会在某些时刻,将当下的文件目录完整的序列化到本地,这称为镜像。一旦存有镜像,镜像前期所写的日志和其他镜像,都纯属冗余,其历史使命已经完成,可以报废删除了。在主控服务器不幸牺牲,或者是战略性的停机修整结束,并重新启动后,主控服务器会根据最近的镜像 镜像之后的所有日志,重建整个文件目录,迅速将服务能力恢复到牺牲前的水准。。。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-40093-6.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 陈峰
      陈峰

      欧美发达国际同居制度正在取代婚姻制度

    热点图片
    拼命载入中...