【负载均衡在线OJ项目日记】项目简介

目录

前言

什么是负载均衡

所用的技术和开发环境

所用技术

开发环境

项目的宏观结构

[leetcode 结构](#leetcode 结构)

结构

编写思路


前言

从C语言的文章到现在Linux网络部分,我已经涉猎了很多知识;终于在今天我要开始搞项目了,通过项目我也可以开始慢慢复习前面已将遗忘的知识点;给大家带来的第一个项目是负载均衡在线OJ,就类似于Leetcode、牛客一样的在线判题功能。我们只是简单仿写它们的答题模块,至于其他的模块,也没有能力。

什么是负载均衡

其实博主一句两句也说不清楚,容易误导大家;这里给大家AI的回答。

负载均衡是一种在计算机网络或服务器系统中分配工作负载的技术。它的目标是确保所有的资源被充分利用,同时避免某些资源过载而导致系统性能下降或崩溃。

简单来说,负载均衡将请求或任务分配给多个服务器或资源,以确保它们能够有效地处理。这通常通过一系列算法和策略来实现,包括基于轮询、基于权重、基于响应时间等。负载均衡器通常位于网络中的一个集中点,它监视服务器的负载状况,并根据预设的规则来分发请求,以实现最佳的性能和可用性。

在大型网站、应用程序或服务中,负载均衡是至关重要的,因为它能够有效地管理流量,防止单个服务器过载,并提高整个系统的可伸缩性和稳定性。

简单来说就像LeetCode,每时每刻都有人会访问进行提交代码测评;我们要将这些提交均衡的分配到每个后端的服务器。

所用的技术和开发环境

所用技术

  • C++ STL 标准库
  • Boost 准标准库(字符串切割)
  • cpp-httplib 第三方开源网络库
  • ctemplate 第三方开源前端网页渲染库
  • jsoncpp 第三方开源序列化、反序列化库
  • 负载均衡设计
  • 多进程、多线程
  • MySQL C connect
  • Ace前端在线编辑器(了解)
  • html/css/js/jquery/ajax (了解)

开发环境

  • Centos 7 云服务器
  • vscode
  • Mysql Workbench

项目的宏观结构

我们的项目核心是三个模块

  1. comm : 公共模块 一般会将多次使用的一些小功能放在这里;就像提供一些文件操作、字符串处理、网络请求等等;

  2. compile_server : 编译与运行模块,用户将代码提交在我们的服务其后形成临时文件,编译与运行服务器请进行编译与运行得到运行结果;

  3. oj_server : 获取题目列表,查看题目编写题目界面,负载均衡,等其他功能;采用MVC设计模式,调用后端编译模块,访问文件或者数据库将题目列表和编辑信息提供给用户;

项目编译成功后形成两个模块:编译服务器、在线OJ服务器;两个服务器采用网络套接字进行通信,OJ服务器将编译模块部署在服务器的多台机器上,OJ服务器只有一台;这样的话,我们的OJ服务器负载均衡的选择后端编译服务器,来让我能够以集群处理能力的方式对外输出在线OJ服务,所以这是一个可扩展的项目。

leetcode 结构

只实现类似 leetcode 的题目列表+在线编程功能

结构

编写思路

  1. 先编写 compile_server

  2. oj_server

  3. version1:基于文件版的在线OJ

  4. 前端的页面设计

  5. version2:基于 MySQL 版的在线O


今天对项目的简介和结构的分享到这就结束了,希望大家读完后有很大的收获,也可以在评论区点评文章中的内容和分享自己的看法;个人主页还有很多精彩的内容。您三连的支持就是我前进的动力,感谢大家的支持!!!

相关推荐
斯普信专业组10 分钟前
Ceph异地数据同步之-RBD异地同步复制(下)
linux·服务器·ceph
电星托马斯17 分钟前
Linux系统CentOS 6.3安装图文详解
linux·运维·服务器·程序人生·centos
啞謎专家19 分钟前
CentOS中挂载新盘LVM指南:轻松扩展存储空间,解决磁盘容量不足问题
linux·运维·服务器
s_little_monster32 分钟前
【Linux】进程信号的捕捉处理
linux·运维·服务器·经验分享·笔记·学习·学习方法
一大Cpp43 分钟前
Ubuntu与本地用户交流是两种小方法
linux·运维·ubuntu
小王不会写code1 小时前
CentOS 7 镜像源失效解决方案(2025年)
linux·运维·centos
zyplanke1 小时前
CentOS Linux升级内核kernel方法
linux·运维·centos
melck1 小时前
liunx日志查询常用命令总结
java·服务器·网络
ghostwritten2 小时前
Docker Registry Clean
运维·docker·容器
niuniu_6662 小时前
简单的自动化场景(以 Chrome 浏览器 为例)
运维·chrome·python·selenium·测试工具·自动化·安全性测试