我遇到了可扩展性问题,用户可以将其连接到商店。但是,该商店只能连接到一个用户。
现在的问题是多个用户正在点击" connect"在同一时间,这会搞砸它。
我把它放在后台工作中,用Sidekiq运行:
ActiveRecord::Base.connection_pool.with_connection do
store = Store.find_by(guid: guid)
return unless store
store.connect!
end
我认为这样可以解决永远不允许同时执行其中两项操作的问题,我猜他们应该以某种方式排队。
我该如何解决这个问题?
答案 0 :(得分:0)
在数据库设置中,您将使用数据库锁。 rails支持乐观和悲观锁定。我认为本文总结了初学者http://thelazylog.com/understanding-locking-in-rails-activerecord/
的使用和权衡