|
|
Yayınlandı 9.05.2021 21:11:18
|
|
|
|

Dağıtık kilitlerin uygulama senaryoları: Hizmetlerin gelişmesiyle birlikte, tek uygulamalar kümelere dönüşür, dağıtılmış kilitler aynı kaynakta farklı süreçlerin (iş parçacıklarının) eşzamanlı durumlarda işleyişini çözer ve bazı hizmetler tek bir iş parçacığı gerektirmelidir; örneğin: mevduat miktarlarındaki değişiklikler, emtia envanterindeki değişiklikler vb.
Eleştiri:
Önceki "[Practice]ASP.NET Core Based on Distributed Lock Flash Kill" adlı makalede, bir kilit eklediğimizde, kilit açıldığında diğer iş parçacıklarının işgal ettiği kilidin yanlışlıkla silinmemesi için kilitlenme süresini uzatmak için arka plan iş parçacılığını da etkinleştirdik.
Redis'in Lua betiklerini kullanmasını öğrendikten sonra, betiklerle kolayca kilitlenme kilitlerini tamamlayabilir ve kilitleri açabilirsiniz.
Öncelikle, render düzenlemelerine şu şekilde bakalım:
Kilit için rekabet etmek için önce 1000 paralel iş parçacığı açtık ve kilit 5 saniyeliğine süresi doldu.5 saniyede 1000 iş parçacığını tamamladık ve sadece 1 tane kilidi başarıyla yakaladı6 saniye bekledikten sonra kilit otomatik olarak açılır ve ikinci görevin kilidi başarıyla elde ettiğini, hemen kilidini açtığını ve sonraki kodun kilidi başarıyla elde ettiğini görebilirsiniz.
Kilidi almak için lua yazısı şöyledir:
Kilidi açmak için lua yazısı şöyledir:
Arayüz kodu:
Kaynak kodu indirme:Bağlantı girişi görünür.
"[Uygulama] ASP.NET Core Redis dağıtılmış kilit flash satışına dayanır" bu makale kullanılarak uygulanmıştır ve web sitemiz bunu simüle eder10000 ürün, ve ardından HTTP isteği süresini simüle etmek için bir konsol yazdıBilet 6 saniyede tamamlanır, aşağıdaki şekilde gösterildiği gibi:
Test simülasyonu isteği kodunu değiştirin:
(Son)
|
Önceki:Kafka ofset ofsetini manuel olarak ayarlarÖnümüzdeki:ASP.NET Core, tam URL bağlantısı isteğini alıyor
|