跳到主要内容

多机测评

本文档有待完善。

当用户提交量大,一台机器无法即时应对测评时,可考虑多机测评。

原理:

  1. 测评服务的源码位于 app/sandbox 中。多机测评主要围绕MySQL数据库、文件数据库、消息队列来进行。
  2. 该测评服务会从消息队列中获取测评任务,然后从文件数据库中获取测试点数据,测评完成后写入到MySQL数据库中。
  3. 因此你需要保证这些测评服务都能访问到MySQL数据库、文件数据库、消息队列。

主要实践如下:

  1. 首先你已经部署了一台服务器可供用户进行正常使用,姑且称为A服务器
  2. 在另一台机器上(姑且称为B服务器),通过 git 克隆代码,并可通过 docker 完成后端服务的启动。
  3. 你需要修改新机器 jnoj/app/sandbox/configs/config.yaml 文件,主要修改 mysql 数据库地址、object_storage 对象储存地址、message_queue 队列地址。
  4. B服务器上执行docker restart jnoj-sandbox-1 重启即可。

你需要注意的时,B服务器能够访问A服务器网络,比如如果你是通过阿里云、腾讯云等,需要注意安全组限制、内网隔离的问题。

同时,当 B服务器 获取到队列任务开展测评时,会从 A服务器 中获取对应的测试点数据,如果 A服务器 带宽过小,而测试点的占用空间又过大,可能会导致在网络IO上占用较长时间, 因此建议AB服务器部署在同一内网下,以保证网络带宽不会成为测评速度的瓶颈。