zoukankan      html  css  js  c++  java
  • 分布式ACM Online Judge 架构设计

    分布式ACM Online Judge 架构设计

     

    服务器职责:

             Web Server:提供用户界面,获取用户提交的代码,通知Judge Server评测编号,为Judge Client提供获取评测数据和提交评测结果的接口;

             Judge Server:维护评测队列,维护Judge Client的状态,维持与Judge Client的连接,监听Web Server的通知,将评测任务分派给Judge Client;

             Judge Client:接收Judge Server传来的评测编号,通过Web Server获取评测数据和提交评测结果。

    流程说明:

    1、  用户提交代码给Web Server;

    2、  Web Server将代码存入DB Server,通知Judge Server此次评测的编号(数据库中的ID);

    3、  Judge Server将编号加入评测队列,检查有无空闲的Judge Client,有则将此评测编号通知此Judge Client,无则等待Judge Client;

    4、  Judge Client接到来自Judge Server的通知后请求Web Server提供的评测数据接口获取评测数据(代码、测试数据)(每个Judge Client应有一对密钥进行身份验证);

    5、  Judge Client进行编译、运行、评测;

    6、  Judge Client请求Web Server提供的提交评测结果接口,提交评测结果(每个Judge Client应有一对密钥进行身份验证);

    7、  Judge Client通知Judge Server自己已经评测结束,将自己的状态改为空闲。

    架构优点:

    1、  根据情况可以轻松的增加减少Judge Client:

    比如比赛时可以多增加几个Judge Client增加评测速度,平时空闲时可保持一台Judge Client正常工作即可;

    2、  Judge Client可以处在内网环境中,无需具有公网IP:

    将Web Server与Judge Server至于公网环境即可;

    3、  安全性与稳定性好:Judge Client无需直接与数据库进行交互,保证了安全性。

     http://www.cnblogs.com/CrazyProgram/archive/2013/04/12/ACM_Online_Judge.html

    初步设计,欢迎大牛拍砖。。。

     
     
    分类: 架构设计
  • 相关阅读:
    宏定义define和const的区别
    C++11新特性(1)
    TCP协议
    sql查询 不等于的坑null
    To B市场品牌实战课 用产品故事引爆市场
    Tomcat在windows服务器下,将tomcat控制台日志记录到日志文件中
    极客时间返现小程序,全网最优惠返现最多
    分布式数据库,从功能特性到运行机制,讲透本质
    生财有术知识星球整理
    ff
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3017955.html
Copyright © 2011-2022 走看看