# course_project **Repository Path**: linloir/course_project ## Basic Information - **Project Name**: course_project - **Description**: 并行与分布计算课程大作业 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-31 - **Last Updated**: 2023-12-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 并行与分布计算课程大作业 20303042 张翀宇 ## 1. 项目说明 本项目是一个公司实习时完成的项目的 Demo 版本,其展示了如何通过 python 搭建起一个多节点的分布式计算集群,并通过该集群并行地完成不同任务类型数据的处理。 ## 2. 项目架构 项目包括了一个 server 和一个 client,server 用于接收 client 发来的心跳请求,并且在连续收到 1 次心跳后将节点标记为活跃,或是在连续 3 次未收到心跳后将节点标记为丢失。同时,server 还会跟踪 task 类型的变更,当 task 类型发生变更或是 client 列表发生变更时,server 会重新分配 task 类型到不同的节点上,以保证不同的任务可以在不同的节点上并行执行。 client 和 server 之间的通信使用了 RabbitMQ 作为桥梁,并且使用了 RabbitMQ 作为 task 数据的缓冲队列。 ![image1](image.png) ![image2](image-1.png) ## 3. 项目运行 项目依赖于本地 RabbitMQ 服务才能运行,需要先在本地 5672 端口启动 RabbitMQ 服务。之后,分别启动一个 server 服务和多个 client 服务,并且在 server 的 console 界面通过命令控制 task 的增删可以看到不同 client 处任务的动态分配结果。 ## 4. 注 关于本次大作业采用 Demo 形式提交,是由于本人在 9-10 月时在公司实习无法返校,10-12 月在准备考研,实在时间短暂难以将公司的代码完整复现,因此只能在考研后简单地将项目的核心代码抽取出来以 Demo 的形式提交,关于本项目的详情则可以参考附件中的 PPT,对此也已经和老师沟通过了,由于时间实在短暂,对于代码中的不完善之处,还请老师多多包涵!