松江区网站建设公司,网络文化经营许可证价格,徐州网站设计价位,织梦官网模板目录
一、项目介绍
二、开发环境以及技术
三、概要设计
四、关键算法
五、项目演示
六、代码实现 一、项目介绍
该项目是基于负载均衡的在线oj#xff0c;模拟平时刷题网站#xff08;leetcode和牛客#xff09;写的一个在线判题系统
项目主要分为五个模块#xff…目录
一、项目介绍
二、开发环境以及技术
三、概要设计
四、关键算法
五、项目演示
六、代码实现 一、项目介绍
该项目是基于负载均衡的在线oj模拟平时刷题网站leetcode和牛客写的一个在线判题系统
项目主要分为五个模块
编译运行模块基于httplib库搭建的代码处理服务器对用户提交的代码进行测试业务逻辑模块基于httplib库并结合MVC模式框架搭建oj服务器负责题目获取网页渲染以及负载均衡地将用户提交代码发送给代码处理服务器进行处理数据管理模块基于MySQL数据库对用户的数据、题目数据进行管理会话模块基于cookie和session针对登录用户创建唯一的会话ID通过cookie返回给浏览器公共模块包含整个项目需要用到的第三方库以及自行编写的工具类的函数 二、开发环境以及技术
开发环境
轻量应用服务器CentOS7.6、gcc/g、VsCode、MySQL Workbench、Postman、Xshell 7
主要技术
C STL标准库C Boost准标准库cpp-httplib第三方开源网络库jsoncpp第三方开源序列化、反序列化库ctemplate第三方开源前端网页渲染库MVC模式框架负载均衡设计html、css、js、jquery、ajaxMySQL C Connect 三、概要设计
本项目将代码处理功能与主体功能进行解耦分别实现了代码处理服务器与主服务器从而减小各个服务器压力。服务器集群与浏览器之间属于BS架构以剖析的角度看待代码处理服务器集群与主服务器之间则属于CS架构可将主服务器看作为代码处理服务器的客户端 主服务器功能较为复杂采用MVC模式框架Model模型层负责与数据库层进行交互View视图层处理对网页资源的渲染Controler控制器负责各个模块之间统筹交互。主服务器并非反向代理服务器(还具有分发外的其他功能)但起到反向代理的功能通过负载均衡模块与代码处理服务器集群进行网络交互 代码处理服务器相较于主服务器更加轻量主要有编译、运行两大功能不与浏览器进行直接交互将编译、运行过程中产生的所有数据交付主服务器进行处理 四、关键算法 主服务器向代码处理服务器发送请求时采用最小连接数法 最小连接数算法较为灵活和智能由于后端服务器的配置不尽相同对于请求的处理有快有慢该算法根据后端服务器当前的连接情况动态地选取其中当前负载连接数最少的一台服务器来处理当前的请求尽可能地提高后端服务的利用效率将负责合理地分流到每一台服务器 用户登录后采用MD5算法形成SessionID从而实现免登录功能 无论多长的字符串计算出的MD5值都是固定长度16字节版本或者32字节版本。源字符串只要改变一点最终得到的MD5值会差别很大。通过源字符串生成MD5很容易但是通过MD5还原成原串理论上是不可能的使得私密性更强 五、项目演示 普通用户登录界面 登录成功后获得主界面 服务器返回的Session Id保存在浏览器的Cookie文件中 题目列表 单个题目 提交代码会发生的情况 求职列表 单个职位 管理员账号登录界面 登录成功后进入管理员界面 进入录题模块进行题目录入 进入岗位模块进行岗位录入 六、代码实现
GG-Bruse/Load_balancing_OJ: This is a load balanced online programming evaluation platform project written in C language (github.com)https://github.com/GG-Bruse/Load_balancing_OJ