多机测评
本文档有待完善。
当用户提交量大,一台机器无法即时应对测评时,可考虑多机测评。
原理:
- 测评服务的源码位于 app/sandbox 中。多机测评主要围绕MySQL数据库、文件数据库、消息队列来进行。
- 该测评服务会从消息队列中获取测评任务,然后从文件数据库中获取测试点数据,测评完成后写入到MySQL数据库中。
- 因此你需要保证这些测评服务都能访问到MySQL数据库、文件数据库、消息队列。
主要实践如下:
- 首先你已经部署了一台服务器可供用户进行正常使用,姑且称为
A服务器
。 - 在另一台机器上(姑且称为
B服务器
),通过 git 克隆代码,并可通过 docker 完成后端服务的启动。 - 你需要修改新机器
jnoj/app/sandbox/configs/config.yaml
文件,主要修改 mysql 数据库地址、object_storage 对象储存地址、message_queue 队列地址。 - 在
B服务器
上执行docker restart jnoj-sandbox-1
重启即可。
你需要注意的时,B服务器
能够访问A服务器
网络,比如如果你是通过阿里云、腾讯云等,需要注意安全组限制、内网隔离的问题。
同时,当 B服务器
获取到队列任务开展测评时,会从 A服务器
中获取对应的测试点数据,如果 A服务器
带宽过小,而测试点的占用空间又过大,可能会导致在网络IO上占用较长时间,
因此建议A
、B
服务器部署在同一内网下,以保证网络带宽不会成为测评速度的瓶颈。