我一直在使用新的本地多資料庫連接切換在 Rails 6.1 中實作水平資料庫分片。這在一般情況下效果很好,但我試圖找到最好的方法確保后臺作業(通過由共享 Redis 資料庫支持的 Sidekiq)針對啟動它們的同一個資料庫分片運行。
例如,我有兩個水平資料庫分片,資料庫 A 和資料庫 B。當連接到資料庫 A(使用 Rack 中間件)時,該作業從 Web 行程排隊。當該作業稍后在 Sidekiq 行程中運行時,我希望該作業自動針對資料庫 A 運行。
執行此操作的一種蠻力方法是將當前連接的資料庫作為引數傳遞給每個作業,然后在每個作業中,使用https://guides.rubyonrails 上的功能連接到引數中指定的資料庫。 org/active_record_multiple_databases.html。
如果我使用的是像 Apartment 這樣的較舊的水平分片解決方案,那么https://github.com/influitive/apartment-sidekiq gem 正是我所需要的。但是,我找不到有關如何使用 Rails 的新本機功能執行類似操作的任何解決方案。
實作這一目標的最佳方法是什么?
uj5u.com熱心網友回復:
您想使用客戶端中間件保存當前分片并在服務器中間件中恢復它。請參閱有關ActiveSupport::CurrentAttributes和中間件 wiki 頁面的說明。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/388336.html
上一篇:在HTML中強制快取腳本
下一篇:如何在VueJS中使用外部陣列
