8 Aralık 2020 Salı

Distributed Lock

Giriş
Distributed Lock kullanmak için şu teknolojileri sarmalayan küçük kod örnekler burada.
Curator + Zookeeper
Cassandra
Hazelcast

JPA 
JPA için Pessimistic Lock kullanılabilir

MySQL
Bu yazıya bakabilirsiniz

Zookeeper
Zookeeper ve etcd örneği burada

Redis
Ayrıca bazı Redis kütüphaneleri Distributed Lock imkanı sunuyor. Açıklaması şöyle.
The most common way to ensure that there is only one process using a resource is to use a Distributed Lock.
There are several mechanisms you can use, here are some:

- AWS DynamoDB Lock Client
- Azure Blob Lease operation
- ZooKeeper Lock
- Redis Redlock
- Database based lock such as PotgreSQL Advisory Lock
- Spring kullanıyorsak RedisLockRegistry Sınıfı ve  @RedisLockable Anotasyonu yazısına bakabilirsiniz
- Jedis kullanıyorsak Jedis.setnx metodu yazısına bakabilirsiniz. Burada tek Redis sunucusu kullanılıyor
- Lettuce kullanıyorsak Redlock algoritması kullanılabilir. Burada fault-tolerance ve consensus için çok Redis sunucusu kullanılıyor

Redlock İçin Uyarı
Redlock kullanırken kilit belirli bir süre için alınıyor. Bu süre içinde kilit bırakılmazsa bir başkası olabilir ve Lost Update probleminin bir benzeri olabilir. Şeklen şöyle



SchedLock
ShedLock yazısına bakabilirsiniz. ShedLock kütüphanesi, distributed lock için veri tabanını kullanıyor.

Hiç yorum yok:

Yorum Gönder