gpt4 book ai didi

java - 除了 session 之外,在 Spring MVC 应用程序中保存数据的任何其他选项

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:16 24 4
gpt4 key购买 nike

我正在开发在线考试软件,数千名学生可以同时从他们的学院/学校进行在线考试。因此,考虑到并发点击和服务器性能,我正在寻找存储一些考试相关数据的不同且最佳的方法:

在申请中,每个学生都会随机收到问题。我正在考虑将学生明智的问题存储在 session 中,但我担心在 session 中存储如此大的(质疑其选项)数据。

考虑一个场景,让每个学生有 30 个问题,并且在一个槽中有 10k 名学生。那么 session 对象会变得太大,不是吗?

还有一些与考试相关的设置/配置我想准备好(我不想每次都从数据库获取配置)。

最佳答案

Consider an scenario let each student will have 30 ques and in a single slot 10k students...

我想有些同学也有同样的问题。如果您确实有 30 万个不同的问题,您现在可以停止阅读。

In application each student will get questions randomly. I am thinking to store student wise questions in session

我想你不需要存储任何东西。生成单个随机 masterSeed,获取 studentId,并计算 seed = secureHash(masterSeed, StudentId)。使用此种子来选择问题。如果需要,重新计算。

关于存储问题,请照常使用数据库和缓存,忘记 session 。

请求有关问题选择的详细信息

“您能否提供更多有关使用种子和缓存选择问题的信息”的答案是“实际上不能”。为什么?

  • 无论 OP 使用什么随机算法来选择问题,都将与我的上述建议相同。只需创建new Random(seed)(种子来自上面)并运行相同的算法。1

  • 网络和数据库服务器所具有的所有缓存魔法也适用于此。我的观点是,将问题存储在 session 中没有任何好处。恰恰相反:

    • session 中存储的数据是“脏”数据,服务器必须在内存不足的情况下对它们进行序列化。
    • 每当两个学生的同一个问题被反序列化时,您就会得到两条不同的数据,占用的内存是以前的两倍。

所以你有更多的IO(缓存的数据可以简单地丢弃),更多的内存消耗,并且你不能使用数据库服务器的内存,以防它运行在不同的机器上。

<小时/>

1 如果算法不是真正随机并尝试为坐在一起的学生选择不同的问题,这可能会变得复杂,但这是一个不同的问题。

关于java - 除了 session 之外,在 Spring MVC 应用程序中保存数据的任何其他选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21170953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com