云端架构:基于云平台的41种可复用的架构最佳实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3.2 实验判分

实验判分分为系统自动判分和裁判手动判分,系统自动判分根据用户提交的结果进行自动判断,或者将用户提交的内容作为命令或镜像进行处理,以此判断。此时,用户提交的实验结果会触发一条消息到消息队列中进行验证,并将结果写入数据库中。实验判分之后也会触发多个消息事件到消息队列中。

• 更新该用户的实验操作状态,从“排队中”变成“Accept”或“Error”等状态。

• 更新Timeline,TOP 100记录保存在Redis中,更多条记录查询按照翻页序号和每页显示数量从MySQL中拉取。

• 更新Ranklist排名,Ranklist仅显示TOP 20的记录,存储在Redis中,更新Ranklist之前应先对比当前用户提交实验后的积分和Ranklist第20名的分数,如果未超过则不更新,如果超过则更新,代码如下。

img

• 触发消息发送给订阅者,包括站内信通知、邮件通知及其他通知方式。