【发布时间】:2019-11-30 07:27:59
【问题描述】:
在我们的应用程序中,我们使用微服务架构。微服务之一是分配微服务。 这个分配微服务功能是从 Postgres DB 中为登录我们应用程序的用户分配 100 条不同的记录,其中一张表中有 100 万条记录。
目前我们正在使用弹簧靴,我们正在使用乐观锁定机制来处理它。甚至,当大约 100 个并发用户在使用应用程序时,应用程序的性能会非常缓慢,分配微服务大约需要 2 多分钟才能将数据分配给用户。一旦分配了数据,我们就将数据存储在 redis 中。
(这是一个数据库更新,我们将状态从“已分配”更改为“已分配”,并将“已分配给”字段更新为特定用户。用例是,不应将两条相同的记录分配给同一用户,为避免这种情况,我们使用了“乐观锁”,在这种情况下系统的性能非常慢。还有其他提高性能的解决方案吗?)
除了乐观锁还有其他提高性能的解决方案吗?
【问题讨论】:
-
“将记录分配给用户”是什么意思?是数据库更新还是将它们加载到内存中?请添加此块的代码。目前还不清楚。
-
这是一个数据库更新,我们将状态从“已分配”更改为“已分配”,并将“已分配到”字段更新为特定用户。用例是,不应该将两条相同的记录分配给同一个用户,为避免这种情况,我们使用“乐观锁”,在这种情况下系统的性能非常慢。还有其他提高性能的解决方案吗?
-
您是逐个更新记录还是批量更新?您是否将相同的记录分配给不同的用户?
-
我们不应该将相同的记录分配给不同的用户。我们一个一个地更新......一组 100 条记录给一个用户。
标签: java spring-boot design-patterns database-design concurrency