青训营大项目NN笔记|青训营笔记

107 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第7天 image.png

1. 为了能够方便开启 多线程和定时任务 需要设计一个 调度器 (Common包内容)

  • 1.1 任务执行一次,或延迟执行一次
  • 1.2 任务周期执行,或延迟周期执行
  • 1.3 线程关闭

2. 用户管理

用户信息存放在磁盘:E:\srv\ruyuan-dfs\namenode\auth.meta,设计登入登出,增加修改查看用户信息。

  • 2.1 用户登录认证
  • 2.2 用户登出
  • 2.3 Token

3. 磁盘文件系统管理

这里涉及到 editlog 和 文件树 操作。

  • 4.1 创建文件夹
  • 4.2 创建文件
  • 4.3 删除文件

4. NameNode集群管理

PeerNameNodes、ControllerManager、ShardingManager(简单化-单节点)

5. NameNode网络请求接口处理器

NameNodeApis 主要实现NameNodeServer中的方法

6. NameNodeServer

内部端口:主要用于对其他组件(client,datanode,dackupNode)提供服务 client:client端是安装在客户端,给用户使用的部分,主要涉及文件的增删改查。项目提供了可视化方式与命令行方式进行操作,这里介绍命令行方式

datanode:##### DataNodeApis

DataNodeApis继承了AbstractChannelHandler抽象类,重写了interestPackageTypes()和handlePackage()方法,可以根据不同NettyPackage的类型选择不同的处理方式

DataNodeServer

DataNodeServer类是DataNode提供服务的实体,它有私有的DataNodeApis、StorageManager、NetServer、DataNodeConfig、PeerDataNodes。start()和shutdown方法则是调用其私有属性的对应start()和shutdown(),

DefaultFileTransportCallback

DefaultFileTransportCallback类负责检测文件传输,可以获得文件路径,在文件传输过程中,或是传输完成时输出传输速率,记录收到的文件,它是接口FileTransportCallback的实现类

MultiPortChannelInitializer

MultiPortChannelInitializer继承自BaseChannelInitializer,用于建立连接时添加初始化channel,除了构造函数外,它只重写了initChannel()方法

StorageInfo

StorageInfo是一个记录存储信息的类,用于保存存储数据

StorageManager

StorageManager类用于管理一个DataNode上存储的文件

\