graph %% 右边:已分片 subgraph "分片后: 并发访问,性能提升" direction TB B1(线程 1) --> Hash B2(线程 2) --> Hash B3(线程 3) --> Hash B4(线程 4) --> Hash Hash["Hash(key) mod N"] subgraph ShardedLRUCache direction LR subgraph Shard1 Lock1((锁 1)) --> Cache1[分片 1] end subgraph Shard2 Lock2((锁 2)) --> Cache2[分片 2] end subgraph ShardN LockN((锁 N)) --> CacheN[分片 N] end end Hash --> Lock1 Hash --> Lock2 Hash --> LockN Note2["根据Key的哈希值分散到不同分片,
不同分片的访问可以并行,
锁竞争大幅降低"] Note2 -.- ShardedLRUCache end %% 左边:未分片 subgraph "未分片: 单一锁成为瓶颈" direction TB A1(线程 1) --> Lock A2(线程 2) --> Lock A3(线程 3) --> Lock A4(线程 4) --> Lock Lock((全局锁)) --> Cache[LRU 缓存] Note1["所有线程竞争同一个锁,
只有一个能访问缓存,
其他必须等待"] Note1 -.- Lock end