Comments (3)
HI @filoe, thanks for your interest in the library.
Is this suitable for distributed azure applications?
The SqlDistributedLock
class and related SQL-based classes are designed for use in distributed applications. These classes leverage a central SQLServer's native sp_getapplock mechanism to coordinate locking between application threads and processes hosted on different servers.
While I haven't personally used the library on Azure, I know that at least one other has done so successfully (see this issue). One peculiarity of SqlAzure is it's aggressive timing out of idle connections. To better support this, version 1.3 of the library added a special connection management strategy for Azure to keep connection alive while the lock is held.
What's about the performance of this library? Let's say compared to azure storage leases.
In my experience the performance is quite good. The actions to acquire and release a lock require one SQL query each which is typically very fast (unless, of course, it needs to wait to acquire a lock that someone else is holding). The library offers async acquire functions so that threads are not blocked while waiting for a lock.
That said, I haven't worked with Azure leases so I can't offer a direct comparison. If performance is a concern, I would recommend testing each approach under realistic workloads and levels of concurrency to see which one makes sense for your use-case.
from distributedlock.
Thanks for fast and detailed answer.
I've got no experience in the field of large business applications.
Do you know whether it still works if I use georeplication on azure for the database?
Is it still guaranteed that all instances (accross the world - accessing different instances of the database) are synchronized by the locking?
from distributedlock.
@filoe I don't have experience with Azure so I definitely can't say for sure. However, I think it's unlikely that locks would replicate. The nature of locking means that there must be realtime coordination between all parties involved; this doesn't work in an "eventually consistent" system. You'll have to try it and see!
from distributedlock.
Related Issues (20)
- Increase in lost lock after upgrading to .NET 7, EF Core 7 and Microsoft.Data.SqlClient 5.0.1 HOT 21
- Add custom data to AzureBlobLeaseDistributedLock HOT 10
- Redis: RedisScript (LuaScript) execution error - CultureInfo problem HOT 7
- DistributedLock.Azure: Remove MaxNonInfiniteLeaseDuration HOT 2
- Use Distributed lock to manage multiple calls to the same Azure function HOT 2
- Postgres distributed lock using PgBouncer connection pooler HOT 8
- About Distribute Locking System using Redis HOT 2
- RobiniaDocs API Explorer HOT 8
- Postgres - Multiple threads successfully acquire the same lock HOT 3
- Concurrency with Redis Semaphore HOT 2
- Error acquiring lock on PostgreSQL when using Npgsql 8.0 HOT 5
- PostgreSQL — Exception while using "AcquireAsync" or "TryAcquireAsync" multiple times HOT 3
- DistributedLock.Azure is updated but not released to NuGet HOT 1
- Document Support for Key Prefixes in RedisDistributedLock HOT 3
- Adopt central package management HOT 2
- Add build checks for AOT compat HOT 2
- Update from vulnerable versions of SQL server packages (dependabot PRs)
- Consider updating Azure.Storage.Blobs to latest once linked issue is resolved
- Rename CopyPackageToPublishDirectory.targets to Directory.Build.targets
- Using UseTransaction for SqlServer locks requires explicitly disabling UseMultiplexing
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from distributedlock.