在前一段时间考虑云服务的时候,大致整理了一个系统架构。只是业余工作,和公司工作无关。
借用了一下云服务的概念,目前通过服务端的程序为用户提供对应的数据服务。而整个架构是在满足工程计算方面的实际需求,而不进行过度设计。
1. 整体特点
UcoCloud架构如下图所示,主要包括web前端、Master主控服务以及一系列的Worker工作机。
UcoCloud以Master服务为核心,负责任务队列、调度以及Worker的管理,不涉及具体业务。这里的Master服务不同与Gate服务,如果后来业务需要可以增加Gate服务,从而支持多个Master。
Worker承担具体业务,可以不同类型,可以随时增加更多worker来增强计算能力。
Web前端只是一个Master服务交互的界面,与用户进行交互。
必要时可以增加专门的File Server。
2. Master服务
Master服务主要功能有3个,维护Task队列和Worker在线列表,同时负责Task的调度。Master采用简单授权,以JSON格式数据交换;Master建议用Python开发,为有状态服务。
任务队列 /Task 包括以下接口服务:
•Add: 增加任务 (ROLE_USER)
•View: 查看任务 (ROLE_USER)
•Delete: 删除任务 (ROLE_USER)
•List: 任务列表(ROLE_USER)
•Result: 任务结果(ROLE_USER)
•Get: 获取任务(ROLE_WORKER)
•Update: 更新任务(ROLE_WORKER)
Worker列表 /Worker 包括以下接口服务:
•Register : 注册worker(ROLE_WORKER)
•Exit : 退出worker(ROLE_WORKER)
•Check : 心跳消息,获取任务列表
•调度器 /Scheduler
•Update : 调度器更新(如果是有状态服务,应该自起线程自动维护)
关于调度机制:
(主要涉及调度任务的分配、已分配任务的检测和重新分配等,待补充完善)
3. web前端
Web前端为Master服务的前端,Web前端不维护具体数据。Web前端从Master服务获取信息;Web与Master之间使用JSON数据交流。
建议用php开发,但不限制。
对于普通用户,提供以下交互界面:
对于管理员用户:
4. Worker工作机
worker工作机负责具体任务的执行。但是这里的worker只负责与Master的数据沟通和通讯,具体的业务处理由worker调用相关程序执行。
5. 关于Task任务
Task具有以下属性;
工作流程不画图了,简要如下:
6. 关于开发环境
7. 其他
关于授权/Email通知/Log及报表等略.