在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:自研分布式小文件存储系统开源软件地址:https://gitee.com/suzhou-mopdila-information/ruyuan-dfs开源软件介绍:介绍本项目是使用Java开发的一个分布式海量小文件存储系统,功能包括文件上传、文件下载、文件存储等,解决了海量小文件在存储和访问过程中遇到的各种性能问题。 加微信获取更多免费资料项目特性&设计
生产级技术架构网络升级小文件系统的网络部分原本实现比较杂乱,这是由于讲课的时候需要讲解各种技术的使用方式和演示最底层的开发是使用那些API。所以在课程中的网络分别使用了原生NIO和gRpc但是我们做技术选型的时候选择统一网络请求方式,统一采用Netty作为网络通讯框架,改造前后对比如图: 文件传输协议在集群中会有几种场景需要进行文件传输,比如上传、下载文件是客户端和DataNode之间进行文件传输,BackupNode和NameNode之间也要进行FsImage的文件传输。所以设计了一套文件传输的协议。文件传输的网络包包括包类型、文件元数据、文件内容二进制数据,如图: 分块传输设计如图所示,当发送一个请求的时候,假如服务端写回的响应较大(超过最大消息长度),此时可以根据请求是否支持分块传输来决定是否需要拆包传输,可以将1个包拆分为n个包,然后传输给NetClient, NetClient收到包的时候,会根据一定的机制判断整个包是否传输完整,当收到了所有的响应包之后,再将所有的响应包合并成一个包,然后返回给用户。 NameNode联邦架构为了解决大规模海量小文件带来的内存增长压力,开发了NameNode的联邦架构,简单来说,就是通过多个NameNode节点组成集群,每个NameNode节点保存整个内存目录树的一部分数据。 线上性能参数回放生产环境下的问题盘点
项目配套学习视频https://space.bilibili.com/478364560/channel/seriesdetail?sid=453116 版权声明本仓库存放的是儒猿【自研分布式小文件系统】,版权归儒猿技术窝所有,侵权将追究法律责任 官网编译&运行由于源码使用了protobuf作为序列化框架,所以下载代码之后需要执行以下命令,生成protobuf序列化文件 cd ruyuan-dfs/ruyuan-dfs-commonmvn protobuf:compile && mvn install
<properties> <os.detected.classifier>osx-x86_64</os.detected.classifier></properties>
<profile> <id>apple-silicon</id> <properties> <os.detected.classifier>osx-x86_64</os.detected.classifier> </properties></profile><activeProfiles> <activeProfile>default</activeProfile> <activeProfile>apple-silicon</activeProfile> ...你其他的profile </activeProfiles> 启动NameNode打开配置NameNode的配置文件,在项目根目录下conf目录存在一个namenode.properties文件,打开此文件,修改以下内容: base.dir=/srv/ruyuan-dfs/namenode # 修改为你本机的一个路径 启动类为ruyuan-dfs-namenode模块下的类:com.ruyuan.dfs.namenode.NameNode。我们可以运行他的main方法,但是通常第一次运行是不成功的,会提示异常。 我们需要对启动程序进行一些配置,点击IDEA右上角运行按钮左边的下拉框。 选择 Edit Configurations...,在弹出框中,我们需要配置几个参数: 主要看下面两个红框,需要配置一个JVM参数-Dlogback.configurationFile=conf/logback-namenode.xml 用于指定Logback的配置文件,接着添加一个Program arguments为 conf/namenode.properties 用于指定NameNode的配置文件,接着就可以运行起来了。 启动BackupNodeBackupNode机器已经和NameNode集成在同一个module中了,启动类为com.ruyuan.dfs.backup.BackupNode同样的,BackupNode也需要修改配置文件和启动参数: 同样需要修改base.dir属性为你本机的一个路径,其他属性不变即可。启动参数配置如下: 启动DataNode修改conf/datanode.properties文件中的base.dir参数值为你本机电脑的一个路径
127.0.0.1 datanode01127.0.0.1 datanode02127.0.0.1 datanode03 配置启动参数: 运行客户端单元测试如果上面几个节点都启动了,则可以开始进行单元测试看看效果了,但是在进行单元测试之前,需要先创建一个用户。 运行以下命令创建用户: curl -H "Content-Type: application/json" -X POST -d '{"username": "admin","secret": "admin"}' "http://localhost:8081/api/user" 运行单元测试接着就可以运行单元测试,打开ruyuan-dfs-client模块的test文件夹,查看测试类: com.ruyuan.dfs.client .FileSystemTest,直接执行: 通过这个按钮则会将所有流程都测试一遍,包括上传文件、下载文件、创建文件夹等场景。 |
请发表评论