前言

那么这里博主先安利一些干货满满的专栏了!

首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。


本项目Github地址

- Load-balanced-online-OJ-system


Load-balanced-online-OJ-system

负载均衡OJ系统

这是一个负载均衡的OJ系统项目

代码的实现细节可见

1. 项目简介

实现类似leetcode的在线编程系统。

后台可以部署多台编译服务主机(cr主机),然后oj_server服务将通过算法将大量的提交请求负载均衡地部署到每台cr主机上。如果后台有cr主机挂掉了,oj_server也能正确识别。

架构如下。

2. 所用技术和开发环境

所用技术

C++STL、Boost准标准库、cpp-httplib第三方开源网络库、ctemplate第三方开源前端网页渲染库、jsoncpp第三方序列化反序列化库、负载均衡设计、分布式系统、多进程多线程控制、Mysql C Connect、Ace前端在前编辑器、html/css/js/jquery/ajax

开发环境

  • centos服务器
  • vscode

3. 项目运行展示

3.1 页面展示

主页。

题目列表(可继续增加题目)

答题界面。

答案/编译出现错误样例。

代码补全。

3.2 后端展示

编译服务后端。

oj服务后端。

瞬间多次提交,查看负载均衡情况。

可以看到oj_server是可以很好的实现负载均衡的,每一台后台主机都能得到请求。

4. 下载和运行方法

4.1 运行

克隆仓库。

git clone https://github.com/Yufccode/Load-balanced-online-OJ-system.git

进入仓库。

cd Load-balanced-online-OJ-system

编译生成可执行。

make

此时在oj_server目录下和compile_server目录下已经分别有一个可执行了。

然后分别在三个命令行下启动compile_server,然后在第四个命令行下启动oj_server

# 三个命令行分别执行这三个
./compile_server 8081
./compile_server 8082
./compile_server 8083
./oj_server # 第四个命令行执行这个命令

在浏览器浏览访问8080端口即可。

如果是云服务器记得放开防火墙,否则也无法访问。

4.2 增加/调整cr服务的主机或把cr服务部署到远端

现在默认是三台cr服务的主机。可以增加,修改配置文件就行了。

./oj_server/conf/service_machine.conf
127.0.0.1:8081
127.0.0.1:8082
127.0.0.1:8083

改里面的配置就行了,很简单,如果要部署到远端就改成你远端的ip就行了,然后如果要增加主机的话直接在后面接着加上去即可。

4.3 发布项目

调用最上级目录的makefile文件即可。

make

make之后就会有一个make_output目录,里面就是要发布的内容。

5. 增加题目的方法

所以题目的信息都存储在这目录下。

./oj_server/questions

目录结构如下所示。

.
├── 1
│ ├── desc.txt
│ ├── header.cpp
│ └── tail.cpp
├── 2
│ ├── desc.txt
│ ├── header.cpp
│ └── tail.cpp
├── 3
│ ├── desc.txt
│ ├── header.cpp
│ └── tail.cpp
├── 4
│ ├── desc.txt
│ ├── header.cpp
│ └── tail.cpp
└── question.list 4 directories, 13 files

question.list格式。

1 字符串长度 简单 1 30000
2 判断回文数 中等 1 30000
3 求最大值 简单 1 30000
4 N皇后 困难 1 30000

每一列分别是,题目列表,题目名称,难度,cpu运行时间限制,内存使用限制。

每一个以数字为名字的文件夹代表每一个题目的详细信息。

desc.txt是题目描述和一些详细信息。

header.cpp是展示给用户的代码片段。

tail.cpp是后端用于测试的代码片段。

增加题目按照上述的格式进行添加即可。

var code = "dbf3a794-254c-4cd5-9778-7845ce67f2ef"

Load-balanced-online-OJ-system 负载均衡的OJ系统项目的更多相关文章

  1. 通过LVS+Keepalived搭建高可用的负载均衡集群系统

    1. 安装LVS软件      (1)安装前准备操作系统:统一采用Centos6.5版本,地址规划如下: 服务器名 IP地址 网关 虚拟设备名 虚拟ip Director Server 192.168 ...

  2. c# Hash一致算法负载均衡(KetamaHash)项目升级

    其实就是我最近写的一个项目,采用Hash一致满足负载均衡.Hash一致环带虚拟节点. 在前面的博文中说明了我采用的方法,MurmurHash+红黑树(底层其实是sortedlist).经过多次测试结合 ...

  3. 负载均衡(Load Balancing)学习笔记(二)

    概述 文章负载均衡(Load Balancing)学习笔记(一) 讲述了负载均衡的一般性原理,本文继续介绍常见的实现负载均衡的方法. HTTP重定向 HTTP重定向服务器是一台普通的Web服务器,用户 ...

  4. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  5. apache、mod_jk负载均衡与tomcat集群

    最近需要搭建apache和tomcat的集群,实现静态网站直接通过apache访问,动态网站转交给tomcat处理,实现负载均衡和tomcat集群配置. apache安装 wget http://ap ...

  6. Linux负载均衡软件LVS

    linux下的开源负载均衡软件LVS的安装.配置和使用.LVS是一个中国人创建和开发的开放源码项目,利用LVS可以构建高可用.高可靠的负载均衡集群,因此,利用Linux+LVS不但可以假设高性能的负载 ...

  7. 学习一下 SpringCloud (三)-- 服务调用、负载均衡 Ribbon、OpenFeign

    (1) 相关博文地址: 学习一下 SpringCloud (一)-- 从单体架构到微服务架构.代码拆分(maven 聚合): https://www.cnblogs.com/l-y-h/p/14105 ...

  8. Azure的负载均衡机制

    负载均衡一直是一个比较重要的议题,几乎所有的Azure案例或者场景都不可避免,鉴于经常有客户会问,所以笔者觉得有必要总结一下. Azure提供的负载均衡机制,按照功能,可以分为三种:Azure Loa ...

  9. Nginx负载均衡的详细配置及使用案例详解.

    感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结. 技术无止境, 我们仍需努力! 1,话不多说, ...

  10. 集群 & 负载均衡

    集群(Cluster) 指一组计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信,实现分布式计算.在客户端看来就像是只有一个服务器.集群可以利用多个计算机进行并行计算从而获得很高 ...

随机推荐

  1. AtCoder ABC 206

    比赛链接:Here AB水题,跳过 C - Swappable 在数组中找到满足条件的数对 \((i,j)\) \(1 \le i < j \le N (N\in[2,3e5])\) \(A_i ...

  2. Python 在VSCode中使用

    PyCharm到期了,所以打算换成VS Code(宇宙最好用编辑器?)试一试.但是下载之后不太会配置,网上不少的文章也比较旧了,所以打算自己看着官方教程配置一下.(VSCode版本:1.49.2,Py ...

  3. AtCoder Beginner Contest 196 个人题解

    A - Difference Max 区间左端减去区间右端 int main() { ios_base::sync_with_stdio(false), cin.tie(0); int a, b, c ...

  4. 详解KubeEdge EdgeMesh v1.15 边缘CNI特性

    本文分享自华为云社区<KubeEdge EdgeMesh v1.15 边缘CNI特性原理及功能详解>,作者:达益鑫 |南开大学,刘家伟.吴锟 |DaoCloud,王杰章 |华为云 特性研发 ...

  5. 2 Englishi 词根

    11 mis 错 misuse misfortune misunderstand 12 out 超过: 外 outnumber outspend outdoor 13 over 过度 overprai ...

  6. Vue项目利用axios请求接口下载excel(附前后端代码)

    https://blog.csdn.net/aSmallProgrammer/article/details/91440793?utm_medium=distribute.pc_relevant.no ...

  7. hybird介绍

    什么是hybird? hybrid即"混合",即前端和客户端的混合开发,需要前端开发人员和客户端开发人员配合完成. hybrid存在价值 可以快速迭代更新(无需app审核,思考为何 ...

  8. 《模拟龙生》|500行Go代码写一个随机冒险游戏|巨龙修为挑战开启

    一.前言 新年就要到了,祝大家新的一年: 龙行龘龘, 前程朤朤! 白泽花了点时间,用 500行 Go 代码写了一个控制台的小游戏:<模拟龙生>,在游戏中你将模拟一条新生的巨龙,开始无尽的冒 ...

  9. 简单剖析Hashmap

    剖析 Java Hashmap 源码 在 Java 的集合框架中,HashMap 是一颗璀璨的明珠.通过深入挖掘其源码,我们将揭开 HashMap 的神秘面纱,理解其底层原理.扩容机制和数据结构. 1 ...

  10. netstat 命令查看端口状态详解

    转载请注明出处: netstat 可以查看服务器当前端口列表及指定端口的连接状态等: -t : 指明显示TCP端口,t是TCP的首字母. -u : 指明显示UDP端口,u是UDP的首字母 -p : 显 ...