在容器环境中锁定更新过程的资源(ReadWrite 锁定)

Locking a resource for update process (ReadWrite lock) In Container Enviroment

提问人:sborpo 提问时间:8/30/2020 更新时间:8/30/2020 访问量:45

问:

我有一个 python 应用程序,它使用主数据访问数据库 (PostgreSQL) 以便在其中进行搜索 - 由搜索线程(一个 150 mb 的数据库)完成。

每天更新一次数据库(删除和加载新表)的更新过程 - 在更新期间,搜索线程将被阻止,直到更新完成。

今天,它是在应用程序级别使用读写锁实现的。 现在,我们正在进入一个搜索过程,每个过程都在 docker 容器中运行

在新环境中实现此功能的最佳方法是什么?(使用分布式锁?在数据库级别显式锁定?...)

我看到了分布式锁的 Redis 实现,似乎它们是排他性的而不是 RW。

docker 同步 互斥锁 readwritelock

评论

1赞 David Maze 8/31/2020
您是否可以使用数据库事务来避免锁定的需要 - 在单个事务中执行整个“更新”序列,以便单个查询看到“之前”或“之后”状态?
0赞 sborpo 8/31/2020
我认为这是一个不错的选择,肯定会检查一下(pg_dump/pg_restore)。我不确定当其他服务连接到数据库时我是否可以进行表删除 - 所以这可能是一个限制

答: 暂无答案