[C#] 透過Azure Blob 租用解決Azure App Service Scale Out 多 Instances 使用同一個 Lock

2024-03-05

上一篇文章,我們提到了Azure App Service scale out 之後如何取得 instance id ,主要就是我要測試

如果現在他分裂成一台以上,我又要對檔案進行 IO 會產生什麼事情,你會問我為何要這樣操作,因為有可能你會用 

SQLite 或是 LiteDB 等..單機資料庫但是對於檔案寫入會有問題,這時候有什麼方法可解決 ?


我知道你第一個想到的就是百搭使用的 Redis ,但是 Redis 不便宜你知道的,這時候網路上看到有一個做法就是使用  Azure Blob 的租用 來做到 

1. 申請 Azure Blob 服務拿到 Connection String

2. 之後建立 Container 還有 一個檔案 這邊範例 Container: lockuse , 檔案名稱: lockfile



3. 之後就是程式碼的部分,主要就是取用租用後才能夠寫檔案,其中我也記錄了寫檔 instance 的 Id 


4. 測試程式 


結果,比對一下,不會因為多 instance 的原因導致檔案被覆蓋,或是檔案被鎖定,資料數量也是正確


筆記一下,如果你有需要用到  instance lock 的平價解決方案。

 



當麻許的超技八 2014 | Donma Hsu Design.