分布式文件系统介绍(2)

在复杂纷繁的分布式环境中,我们坚定的相信,万事皆有可能。哪怕各个服务器都在认认真真工作,也可能有各种各样的情况导致网络传输中的数据丢失或者错误。并且在分布式文件系统中,同一份文件的数据,是存在大量冗余备份的,系统必须要维护所有的数据块内容完全同步,否则,不同客户端读同一个文件读出不同数据,用户非得疯了不可。

事实上,在没有用分布式系统之前,我们的系统就出现过多次数据不一致的情况,严重的时候公司领导都亲自关注,但是尘归尘,土归土,该怎样还怎么样,不从整体的视野上权衡,问题就不能彻底解决….

为了保证数据的正确性和同一份数据的一致性,分布式文件系统必须要做大量的工作。首先,每一个数据块,都有一个版本标识,一旦数据块上的数据有所变化,此版本号将向前增加。在主控服务器上,保存有此时每个数据块的版本,一旦出现数据服务器上相关数据块版本与其不一致,将会触发相关的恢复流程。这样的机制保证了各个数据服务器器上的数据块,在基本大方向上都是一致的。但是,由于网络的复杂性,简单的版本信息无法保证具体内容的一致性(因为此版本信息与内容无关,可能会出现版本相同,但内容不同的状况)。因此,为了保证数据内容上的一致,必须要依照内容,作出签名。。。

当客户端向数据服务器追加写入数据包时,每一个数据包的数据,都会切分成段,作为签名验证的基本单位,当数据包传输到流水线的最后一级,数据服务器会对其进行验证,一旦发现当前的传输块签名与在客户端中的签名不一致,整个数据包的写入被视为无效,整个流程需要重来;

3、分布式文件系统的内部负载均衡

这里说的负载均衡,是宽泛意义上的均衡过程,主要涵盖两个阶段的事务,一个是在任务初始分配的时候尽可能合理分配,另一个是在事后时刻监督及时调整

负载均衡,是分布式系统中一个永恒的话题,要让大家各尽其力齐心干活,发挥各自独特的优势,不能忙得忙死闲得闲死,影响战斗力。而且,负载均衡也是一个复杂的问题,什么是均衡,是一个很模糊的概念。比如,在分布式文件系统中,总共三百个数据块,平均分配到十个数据服务器上,就算均衡了么?其实不一定,因为每一个数据块需要若干个备份,各个备份的分布应该充分考虑到机架的位置,同一个机架的服务器间通信速度更快,而分布在不同机架让安全性有了进一步提升;而分布在不同机房的服务器,安全性更加高,但是响应速度,更加难以控制。

4、垃圾回收

丢垃圾,丢是一件简单的事情,但是什么东西能丢,不是一件容易的事情。我在家搞卫生的时候,总有很多的东西感觉从此以后不再使用,但是我和我媳妇(主控服务器)并不是每次都能达成一致,很多东西我想丢,我媳妇说要放一放,等几天看看,很多的时候,几天的几天又过去了,也许就这样放了几年,只能等下次大扫除或者家里没地方放东西了才行。

在分布式文件系统而言,没有利用价值的数据块备份,就是垃圾。基本上,所有的垃圾都可以视为两类,一类是由系统正常逻辑产生的,比如某个文件被删除了,所有相关的数据块都沦为垃圾了,某个数据块被负载均衡器移动了,原始数据块也不幸成了垃圾了。此类垃圾最大的特点,就是主控服务器是生成垃圾的罪魁祸首,也就是说主控服务器完全了解有哪些垃圾需要处理。另外还有一类垃圾,是由于系统的一些异常症状产生的,比如某个文件服务器停机了一段,重启之后发现其上的某个数据块已经在其他服务器上重新增加了此数据块的备份,它上面的那个备份过期了失去价值了,需要被当作垃圾来处理了。此类垃圾的特点恰恰相反,主控服务器无法直接了解到垃圾状况,这个时候就需要一些额外的策略来进行处理,比如将出现故障的文件服务器的数据都作为垃圾进行处理,然后按照规则同步这台文件服务器的全部数据。有可以先缓存起来,过几天没人想恢复它了再删除。

4.、总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0906fb17efb5248eb7c4979e4de443c5.html