毕业设计选的就是关于分布式运算,也不清楚算不算先这么写。
选的算法是N女皇算法,随着阶层上升运算量急剧上升,是个比较不错的的算法。
开始正题
项目的结构为服务器端,运算节点端,管理端。大致如下图
运作方式:客户端上传任务->服务器对任务进行分解->服务器检索空闲计算节点并分发任务、
计算节点:
接受分解过的任务,进行运算得出结果并返回给服务器。
个人觉得计算节点这块难度可能就是如何使分解后的任务进行位运算。
服务器:
对任务进行分解,我的想法就是利用树进行分解,最后提取任务的时候直接子节点到根节点的路径就是分解后的任务.
对计算节点进行负载均衡,开辟了几个线程用来运行socket的接受数据,防止主线程卡死之类的.
服务器启动时会对SQL进行任务读取,将未完成的任务读取到内存中并开始计算任务
当计算节点掉线时,服务器端会对相应的任务进行重置,分配给空闲计算节点
当计算节点计算完毕返回结果,服务器会储存到数据库中,当然使用事务提交方式,几秒提交一次.
客户端:
客户端就是查看一下目前在线的计算节点情况,查看任务进度,提交任务
因为毕业设计还没答辩,因此不放源码了。
以下是效果图:
客户端
服务器端
:
计算节点端:
经过测试,21阶女皇使用8台电脑经过四小时计算结果为314666222712 与实际答案一致