2016-08-14 15 views
2

ユーザーが店舗に接続できるスケーラビリティの問題が発生しています。ただし、そのストアは1人のユーザーにしか接続できません。2人のユーザーが同じアクションを同時に実行するのを修正しました

問題は、複数のユーザーが同じ時刻に「接続」をクリックしていることであり、それが原因です。

私はSidekiqでこれを実行するバックグラウンドジョブでそれを置く:

ActiveRecord::Base.connection_pool.with_connection do 
    store = Store.find_by(guid: guid) 
    return unless store 
    store.connect! 
end 

私は、これは、これらのアクションの2を同時に行うことができるようにすることはありませんの問題を解決するだろうと思った、私は彼らを推測ある方法でキューに入れる必要があります。

どうすればこの問題を解決できますか?

答えて

0

データベース設定では、データベースロックを使用します。レールは楽観的および悲観的なロックをサポートしています。私はこの記事では、初心者のための使い方とトレードオフを要約していると思います。http://thelazylog.com/understanding-locking-in-rails-activerecord/

関連する問題