PRY是一个程序设计类实验辅助教学平台,旨在为高校提供线上程序教学的管理,提供在线评测、作业、考试等功能,支持多种编程语言的自动评判。
点击空白处退出提示
PRY是一个程序设计类实验辅助教学平台,旨在为高校提供线上程序教学的管理,提供在线评测、作业、考试等功能,支持多种编程语言的自动评判。
功能模块:权限模块、题库模块、考试模块、主观题提交模块、任务调度模块、判题机、结果写回模块、客观题提交模块、客观题判题模块。
主要功能:用户管理、用户组管理、题目管理、题目集管理、试卷管理、考试管理。
老师可创建用户组、创建题目、组建试卷、发布题目集等。
学生可提交题目。
技术栈:SpringBoot、Mybatis-Plus、Netty、MySQL、Redis、ShardingSphere-Proxy、Nginx;
架构:分布式架构、异步判题、分库;
主要贡献:
1、设计一套RBAC的动态权限服务,根据用户角色赋予不同的访问权限,通过JWT+Redis保障分布式服务鉴权。
2、通过慢SQL日志分析,重构索引并优化SQL,排查索引失效问题,接口平均响应时间从200ms降至80ms。
3、负责判题机实现,用Docker沙箱隔离宿主机。fork子进程启动测评沙箱,限制容器读写、内存,保障判题机安全。
4、防止用户频繁提交,通过本地缓存Caffeine+Guava令牌桶结合AOP实现接口限流,重复提交率从15%降至7%。
5、负责考试模块的性能优化,采用Redis对试卷题目做缓存定时预热,并且保证缓存一致性,实测题目查询接口2600QPS。
6、基于Websocket对接考试客户端,实现教师对学生的在线监考,包括消息通知、截屏、进程监控等功能。






评论