编程乐园正式上线

编程乐园 现已上线。

这个网站的主要目的是给初学编程的用户提供一个方便的在线运行软件的场所,当前仅支持 C 语言, 未来会扩展到更多的语言。

以下语言已在计划中:

  • rust

  • python

  • php

  • ruby

  • java

  • kotlin

  • swift

部分代码已经上传到 Github

项目的架构

本项目主要由以下三个部分组成:

  • 用户界面

  • 服务器端

  • Worker 工作进程

用户界面主要给用户提供交互操作,服务器端处理用户的请求,分发任务给 Worker(工作进程),

用户 和 服务器端, Worker 和 服务器端 都是使用 WebSocket 协议连接, 用户和 Worker 之间没有交互。

注解

Worker 可以有多个,并且可以运行在不同的机器上, 这样很容易进行横向扩展。

主要的交互流程如下:

  1. 用户提交一个运行任务给服务器端

  2. 服务器端选择一个空闲的 Worker 进程,然后把这个任务传递给 Worker

  3. 服务器端 告诉用户 此任务已经在处理中

  4. Worker 处理 编译 & 运行任务,然后实时的上报 任务的状态

  5. 服务器端会把 Worker 进程实时上报的状态 通过 WebSocket 转发给用户 直到 任务完成 或 任务失败。