# Resource-Controller **Repository Path**: iabf/Resource-Controller ## Basic Information - **Project Name**: Resource-Controller - **Description**: 基于 Raft 协议的分布式计算资源管理系统 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-16 - **Last Updated**: 2023-04-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于 Raft 协议的分布式计算资源管理系统 *** ## 项目描述 运行在多个异构设备上的分布式计算资源管理系统,通过 Raft 协议保证各节点上的数据一致性。 在每个设备(假设这个设备的 IP 地址为 a.b.c.d)上运行: * Node 线程:Raft Server,与其余设备上的 Node 线程交互运行 Raft 协议,保证数据一致性。(a.b.c.d: **10001**) * Watcher 线程:监控本设备上的部分资源信息,并发送资源信息给 Node 线程。 * Receiver 线程:接收 Leader 发来的信息,并与文件系统交互存储相应信息。(a.b.c.d: **10000**) ## 多机部署 部署代码在 application 目录下。 * register.py 用于注册本设备,仅第一次使用时需要运行。 ```shell python3 register.py ``` * refresh.py 用于清除 log 信息。 * launch_node.py 用于运行 Node 线程, 需要指定四个参数(heartbeat 时间间隔下限,heartbeat 时间间隔上限,leader 选举时间间隔下限,leader 选举时间间隔上限), 如参数小于 4 个,则采用默认值 (10ms, 20ms, 1500ms, 3000ms)。 * launch_watcher.py 用于运行 Watcher 和 Receiver 线程, 需要指定一个数字参数作为资源监测的时间间隔(单位为秒),如不指定,则默认为 10 秒。 ```shell python3 refresh.py python3 launch_node.py '10' '20' '6000' '15000'> /dev/null 2>&1 & python3 launch_watcher.py '1'> /dev/null 2>&1 & ``` * monitor.py 是一个简单的监控器,可以访问文件系统查看某设备或所有已知设备的信息。 ```shell python3 monitor.py ``` 需要至少三台设备进行实验,初始加入的三台设备的信息需要手动填入 application/data/device.json 中,用于静态注册,第四台以后的设备可以直接注册,此时进行动态注册。 ## 单机部署 单机部署时伪造几个地址当做结点。 ```shell python3 SINGLENODE_launch_node.py '02' python3 SINGLENODE_launch_node.py '03' python3 SINGLENODE_launch_node.py '04' ```