分布式存储 透彻理解分布式存储系列 本系列,我主要讲解的是分布式文件系统,比如HDFS就是一类典型的分布式文件系统,客户端可以使用HDFS存储超大的文件(比如1TB),HDFS会自动把大文件分布式存储在各个机器上,每台机器上就存储几百MB的数据。分布式文件系统负责管理文件元数据和分散在各台机器上的文件,对于客户端来说,感觉就是像面向一个文件在操作。 2020-11-29 浏览(4,855) 评论(0) 阅读全文
透彻理解分布式存储(十八)——高性能架构:长连接与异步机制 本章主要对分布式文件系统客户端的长连接与异步请求机制进行了深入讲解,并给出了代码实现。基于Java NIO设计网络通信客户端时,需要考虑的点非常多,比如本章实现的长连接机制、请求排队机制、超时处理机制、回调机制、同步异步机制等等。 2020-12-22 浏览(2,914) 评论(0) 阅读全文
透彻理解分布式存储(十七)——高并发架构:Reactor模式 本章主要基于Reactor模式对DataNode的NIO Server进行了重写。在使用Reactor模式时,关键需要注意Processor线程对SocketChannel的处理模式。对于每一个客户端的请求来说,都由同一个Processor线程对请求和响应进行处理,并且只有当请求处理完后,才会处理响应。Reactor模式能够大幅提升系统的并发性能,许多分布式中间件都运用了该模式来处理请求。 2020-12-21 浏览(3,126) 评论(0) 阅读全文
透彻理解分布式存储(十六)——可扩展架构:Rebalance 本章主要对分布式文件系统的rebalance机制进行了讲解。Rebalance的核心是根据NameNode中保存的集群元数据信息确认好源datanode和目标datanode,然后创建文件复制任务和文件删除任务,最后复用高可用架构中的心跳下发模式完成rebalance流程。 2020-12-20 浏览(1,678) 评论(0) 阅读全文
透彻理解分布式存储(十五)——高可用架构:文件传输中断处理 本章主要对DataNode高可用的另一类异常——文件传输中断问题进行了讲解,如果DFS客户端在文件传输过程中,DataNode出现了异常,那么应当重新向NameNode申请可用DataNode,并重新进行文件上传或下载。整个处理思路是比较简单的,主要是异常状况下上送异常DataNode的信息,以及NameNode对正常DataNode的选取。 2020-12-19 浏览(2,597) 评论(0) 阅读全文
透彻理解分布式存储(十四)——高可用架构:文件副本重分配 本章主要对分布式文件系统的高可用架构进行了讲解,主要讲解了DataNode的高可用。DataNode在实现高可用时,最核心的就是它的文件副本重分配机制。 我们解决该问题的思路就是:NameNode对于异常DataNode节点,创建文件副本转移任务和文件副本删除任务,然后利用心跳,向DataNode下发这些任务,完成文件迁移和删除。 2020-12-18 浏览(2,296) 评论(0) 阅读全文
透彻理解分布式存储(十三)——文件存储:DataNode信息上报 本章主要对分布式文件系统的DataNode节点的信息上报功能进行了拆分讲解。至此,整个文件存储模块的功能就已经实现了。 2020-12-17 浏览(3,105) 评论(0) 阅读全文
透彻理解分布式存储(十二)——文件存储:NIO网络通信 本章对分布式文件系统的文件上传/下载的功能基于Java NIO进行了实现。Java NIO本身的使用并不困难,难点在于对粘包和拆包问题的处理。本章,我对粘包处理的实现并不完善,后续专栏,我可能会对Netty进行讲解,Netty对于粘包和拆包问题具有一整套完善的解决机制。 2020-12-16 浏览(2,224) 评论(0) 阅读全文
透彻理解分布式存储(十一)——文件存储:整体架构 本章对分布式文件系统的存储架构进行了讲解。我们在设计文件上传和下载功能时,需要考虑元数据管理、DataNode的可用性、数据传输方式、DataNode节点选取策略等各方面的内容。下一章对DataNode如何基于Java NIO完成文件的上传和下载进行讲解。 2020-12-15 浏览(2,313) 评论(0) 阅读全文
透彻理解分布式存储(十)——BackupNode宕机恢复 本章主要对BackupNode宕机恢复机制进行了讲解,实现思路与NameNode的元数据恢复机制相似。至此,我们的分布式文件系统的元数据管理功能就基本全部实现了,主要包括了以下内容: 基于纯内存的元数据信息维护;editslog机制;backup备份机制;元数据恢复机制。 2020-12-14 浏览(2,313) 评论(0) 阅读全文