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

目录

前言

什么是负载均衡

所用的技术和开发环境

所用技术

开发环境

项目的宏观结构

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 


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/601198.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙OS NEXT的推出,不仅面向App端

华为官方公布6月份的版本为beta版,依然属于开发者测试版,但可以向普通用户开放了。这点和苹果iOS系统测试形式略微相似:6月份开放首个测试版,随后过渡到公测版,最后再和年度新机一起发布正式版系统。 如果按照这个进度…

DNS域名解析服务的部署及优化方案

实验要求: 1.配置2台服务器要求如下: a)服务器1: 主机名:dns-master.timinglee.org ip地址: 172.25.254.100 配置好软件仓库 b)服务器2: 主机名:dns-slave.timinglee.org ip地址&am…

fero - yolo - mamba:基于选择性状态空间的面部表情检测与分类

fero - yolo - mamba:基于选择性状态空间的面部表情检测与分类 摘要IntroductionRelated work FER-YOLO-Mamba: Facial Expression Detection and Classification Based on Selective State Space 摘要 面部表情识别(FER)在理解人类情绪线索方面起着关键…

S型曲线的几种设计(图像对比度调节)

一般来讲,图像调色模块都会提供“曲线”工具,这是一个极其灵活的功能,绝大部分的调色都可以通过该工具实现,但是曲线功能的交互相对而言比较复杂。出于简便性和效率方面的考量,调色模块往往还会提供一些具有很强的功能…

Angular中创建和使用服务

Angular中的服务 文章目录 Angular中的服务前言一、创建服务二、使用服务 前言 Angular 服务是 Angular 应用程序中用于封装可重用逻辑的类。服务在应用程序的多个组件之间共享数据和功能,而不依赖于应用程序的UI。服务可以用于诸如数据处理、与后端通信、用户身份…

电脑显示丢失mfc140u.dll怎么修复,总共有7个方法

mfc140u.dll 是一个动态链接库(Dynamic Link Library)文件,它是Microsoft Foundation Class (MFC)库的一部分,专为使用C编程语言开发Windows应用程序而设计。MFC库由微软提供,作为一个高级的应用程序框架,旨…

通过 Java 操作 redis -- 连接 redis

如果我们想在本地主机上访问 Linux 服务器上的 redis ,我们就需要通过 ssh 进行端口转发,推荐看 本地主机访问服务器的Redis -- 配置 ssh 端口转发 通过 Java 操作 redis 已经有大佬创建了很多第三方库,这里我们使用 jedis ,因为它…

N7552A是德科技N7552A电子校准件

181/2461/8938产品概述: 更小巧轻便的 2 端口模块,支持 3.5 mm 或 N 型 50 Ω 连接器,能够将校准时间缩短一半 特点 频率范围:直流至 9 GHz 使用 N 型或 3.5 mm 连接器 更小巧轻便的 2 端口电子校准件(ECal&#xff…

Linux:进程等待 进程替换

Linux:进程等待 & 进程替换 进程等待wait接口statuswaitpid接口 进程替换exec系列接口 当一个进程死亡后,会变成僵尸进程,此时进程的PCB被保留,等待父进程将该PCB回收。那么父进程要如何回收这个僵尸进程的PCB呢?父…

《Fundamentals of Power Electronics》——示例:Buck-Boost转换器模型变为正则形式

为了说明正则电路模型推导的步骤,让我们将buck-boost转换器的等效电路操作成规范形式。buck-boost转换器的一个小信号交流等效电路如下图所示。 为了将上图所示网络转换成正则形式,需要将所有独立源d(t)转换到左侧,而将所有电感转换到右侧与变…

PHP 匿名函数和闭包在数据结构中的应用

匿名函数和闭包在数据结构处理中的应用php 中的匿名函数和闭包可用于处理数组、链表和队列等数据结构。针对数组,匿名函数可用于过滤元素;针对链表,闭包可用于创建节点;针对队列,匿名函数和闭包可实现 fifo 队列操作。…

css 文字描边

又是抄样式的一天。这次是百度地图。实现了问题和图形描边的效果。 代码: .BMap_scaleTxt.dark {color: #fff;text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; } 效果:

uniapp打包的程序在Xcode中运行到模拟器报错的解决方法

uniapp打包的程序在Xcode中运行到模拟器报错的解决方法 问题描述: Building for iOS-simulator, but linking in object file (/Users/hori/Documents/SDK/SDK/Libs/DCUniRecord.framework/DCUniRecord[arm64][3](PGRecord.o)) built for iOS Linker command fail…

翻译《The Old New Thing》- Does Windows have a limit of 2000 threads per process?

Does Windows have a limit of 2000 threads per process? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050729-14/?p34773 Raymond Chen 2005年07月29日 Windows 是否有一个每个进程2000线程的限制? 简要 文章解释了在 W…

快速搭建linux虚拟机环境

1、虚拟机资源 VMwareWorkstation:Download VMware Workstation Pro virtualbox:Oracle VM VirtualBox 2、虚拟机系统资源 链接:系统资源链接 提取码:0gat 说明:此处的系统资源是采用VMwareWorkstation 虚拟机进…

vue脚手架和vite创建的项目的环境配置

开发环境文件 .env.development NODE_ENV"development" # // 开发接口域名 本地测试就用这个 # vue脚手架创建的 VUE_APP_MODE"开发环境" VUE_APP_API_URL http://19527 # vite创建的 # VITE_MODE"开发环境" # VITE_BASE_URL http://1920:9527…

【自动驾驶|毫米波雷达】逻辑化讲清快时间与慢时间傅里叶变换

碎碎念:实习过程中发现在进行雷达知识交流时,大部分同事都会用英文简称代替中文的一些称呼,比如Chirp、FFT等等。起初我觉得是因为很多英伟达、TI芯片的开发教程都是英文的,所以看得多了大家都习惯这样称呼,后来在和指…

Linux高级学习(前置 在vmware安装centos7.4)

【小白入门 通俗易懂】2021韩顺平 一周学会Linux 此文章包含第006p-第p007的内容 操作 在安装好的vmware下进行安装 这里使用的是vmware15(win10下),win11可能无法使用15(有几率蓝屏),换成16就行了 用迅雷…

将PT脚本转化为innovus脚本

前一节写的关于PT修时序后吐出相关脚本,但是无法直接使用APR工具innovus进行时序修复,此节介绍一种利用perl脚本将吐出脚本转化为innovus可读的脚本 1.转化前文本形式 2,转化后脚本 3.perl 脚本正文 #!/usr/bin/perl #transla…

【完美解决】使用git时候出现error setting certificate verify locations: CAfile:问题

1、出现场景: 在使用idea的时候,进行git下的push,出现下面的错误: 2、原因分析: 可能因为重装过系统,或者是安装git的位置发生了变化等情况出现。 3、解决方案: 找到git的安装路径&#xf…