谨用于记录自己在设计时由于考虑不周导致的隐患,阿门。
2021-07-19
新近上线了《智能串接》功能,该功能类似于各种工程项目中的quickStart功能,在该模块设计时留下了两个弊端。
一是部分无效数据被持久化了。
创建考试/每日学练时,用户还未最终确认,但是已经将其所选内容写入mysql数据库,导致部分数据可能是无效数据。
这些可能是临时数据的内容原本可以保存在缓存中,但当时考虑到缓存过期时间和存取数据的便捷程度,仍然选择了将其持久化。
此处尚可待商榷,因为这部分数据由于可以被多次部分修改,若将其置于redis中,则对其进行部分更新时比较棘手。
二是性能无法预估与限制
由于可以选择【任务】这一高级模块,且并未对任务内部包含多少个基础模块进行限制,导致选题时完全无法预估性能压力或者限制用户操作。
目前仅对有超过300条考试结果的【考试】做了并发处理,包括任务中的这种考试。
但是这种两层线程池的方案仅能在用户操作后缓解部分压力,却仍然无法【预】知与【预】先限制用户操作。