Slide 1

Slide 1 text

Lock Management At Microservice Applications Ahmet Pirimoğlu Software Team Lead

Slide 2

Slide 2 text

Ahmet Pirimoğlu • 2006 yılından beri yazılım geliştirici • 15+ yıldır farklı sektörlerde • Finans Çözümleri • Yükseköğretim Çözümleri • Genellikle yazılım altyapı ekiplerinde • Yaklaşık 3 yıldır Dgpays • Şu an “Core Banking" projesinin yazılım altyapı takımında "Yazılım Takım Lideri"

Slide 3

Slide 3 text

Agenda •Concurrency •Lock Types •Database Locks •Distributed Locks •Pros / Cons

Slide 4

Slide 4 text

Concurrency

Slide 5

Slide 5 text

Uygulama Katmanları ve Lock Kullanımı Persentation Application Database

Slide 6

Slide 6 text

Database Locks 6

Slide 7

Slide 7 text

Database Lock Types •Table-Level Lock •Page-Level Lock •Row-Level Lock

Slide 8

Slide 8 text

Data Locking Read Lock Write Lock Row Lock Table Lock

Slide 9

Slide 9 text

Lock Types Optimistic Locking Pessimistic Locking

Slide 10

Slide 10 text

Lock Types Optimistic Locking Pessimistic Locking • Aynı kayıt üzerinde güncelleme yapmaya izin verir • Ancak bir işlem başarılı olur • Diğer işlemler için conflict cevabı dönülür • Kitleme sayısı az işlemler için anlamlı, yoksa kullanıcı sürekli hata alacaktır • Sadece bir işlem güncelleme yapabilir • Diğer işlemler ana işlem işini bitirene kadar bekler • Uzun süren işlemler için sorun oluşturabilir • Veri tutarlılığını garanti eder

Slide 11

Slide 11 text

Optimistic Locking * https://www.martinfowler.com/eaaCatalog/optimisticOfflineLock.html

Slide 12

Slide 12 text

Pessimistic Lock * https://www.martinfowler.com/eaaCatalog/pessimisticOfflineLock.html

Slide 13

Slide 13 text

EF Optimistic Concurrency Lock Load Change Save Conflict

Slide 14

Slide 14 text

EF Optimistic Concurrency DbUpdateConcurrencyException

Slide 15

Slide 15 text

EF Optimistic Concurrency

Slide 16

Slide 16 text

Distributed Lock Darp Üzerinden Redis Kullanımı

Slide 17

Slide 17 text

Redis 17

Slide 18

Slide 18 text

Redis is not reliable 18

Slide 19

Slide 19 text

Redis Bunu Nasıl Yapıyor? RedLock Algorithm

Slide 20

Slide 20 text

Dapr Nedir?

Slide 21

Slide 21 text

Dapr Üzerinde Distributed Lock Kullanımı

Slide 22

Slide 22 text

Dapr Üzerinde Kullanım (Örnek)

Slide 23

Slide 23 text

Dapr Üzerinde Kullanım (Örnek)

Slide 24

Slide 24 text

Dapr Üzerinde Kullanım (Örnek)

Slide 25

Slide 25 text

DistributedLock Package Alternative Approach 26

Slide 26

Slide 26 text

DistributedLock Package https://github.com/madelson/DistributedLock

Slide 27

Slide 27 text

DistributedLock Package https://github.com/madelson/DistributedLock

Slide 28

Slide 28 text

DistributedLock Package / Semaphores

Slide 29

Slide 29 text

DistributedLock Package / Reader-writer lock

Slide 30

Slide 30 text

Advisory Lock Database Level Distributed Lock 31

Slide 31

Slide 31 text

Advisory Lock

Slide 32

Slide 32 text

Advisory Lock

Slide 33

Slide 33 text

Advisory Lock

Slide 34

Slide 34 text

Advisory Lock

Slide 35

Slide 35 text

Advisory Lock

Slide 36

Slide 36 text

Advisory Lock Implementation

Slide 37

Slide 37 text

Lock Problems •Lock fails to release it •Lock contention •Deadlock situation •Memory problems •Performance problems

Slide 38

Slide 38 text

Teşekkürler [email protected] https://www.pirimoglu.com https://twitter.com/ahmetpirimoglu https://www.linkedin.com/in/ahmetpirimoglu

Slide 39

Slide 39 text

Kaynaklar • https://medium.com/codeboulevard/serialize-access-to-a-shared-resource-in-distributed-systems-with-dlm-distributed- lock-manager-5abf5e393e15 • https://erkanguzelkucuk.medium.com/ef-core-optimistik-concurrency-ve-lock-architecture-2d668cfed360 • https://medium.com/software-development-turkey/distributed-locking-92db5b3d4045 • https://softwareengineeringwk.substack.com/p/what-are-database-locks • https://softwareengineeringwk.substack.com/p/a-practical-guide-to-using-advisory • https://shiroyasha.io/advisory-locks-and-how-to-use-them.html • https://medium.com/inspiredbrilliance/a-practical-guide-to-using-advisory-locks-in-your-application-7f0e7908d7e9 • https://github.com/mpyw/laravel-database-advisory-lock • https://careers.saigontechnology.com/blog-detail/implement-distributed-lock-for-a-microservices-software-system • https://medium.com/codeboulevard/distributed-locks-manager-c-and-redis-fd3d86cd1250 • https://www.linkedin.com/posts/sahnlam_top-redis-use-cases-ive-used-redis-in-activity-7152188884104237056-2XO8/ • https://dev.to/lazypro/explain-redlock-in-depth-31jj