程式員萌萌在瀏覽關於分散式鎖的文章,突然下麵的話引起了萌萌的註意: 在鎖操作的客戶端打日誌 獲取鎖: T13:31:51.230redisname-lock:hsetnx E13:31:51.230GetConnection10.X.X.X T13:31:51.231redisname-lock:h ...
程式員萌萌在瀏覽關於分散式鎖的文章,突然下麵的話引起了萌萌的註意:
在鎖操作的客戶端打日誌
獲取鎖:
T13:31:51.230redisname-lock:hsetnx
E13:31:51.230GetConnection10.X.X.X
T13:31:51.231redisname-lock:hsetnx
設置超時時間:
T13:31:51.230redisname-lock:hsetnx
E13:31:51.230GetConnection10.X.X.X
T13:31:51.231redisname-lock:hsetnx
釋放鎖:
T13:31:51.230redisname-unlock:hsetnx
E13:31:51.230GetConnection10.X.X.X
T13:31:51.231redisname-unlock:hsetnx
從上面數據可以看到一個正常分散式鎖操作,操作時間在1ms,因為是從客戶端獲取的,因為粒度只能是毫秒級。再從服務端看看是什麼情況。
上面顯示了大於1ms的慢查詢情況,可以看到每秒幾百個的QPS不會造成分散式鎖本身的慢查詢。耗時超過1ms的都是集群操作,分散式鎖的lock和unlock操作時間都是us級。
如果lock和unlock中間沒有任何邏輯的理想情況下,同一個鎖可以支持每秒:
1000ms/ (1ms的lock+1ms的設置超時+1ms的unlock)=333(個)
結論
分散式鎖本身lock和unlock耗時是us級,在理想情況下大概可支持每秒1000個原子操作,300多個從分配到釋放流程結束。
舉個慄子