Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

虽然这个 bug 也解了,但是在更进一步了解了查询流程后,也有了一层隐隐的担忧。因为集群任何一个节点都可能发生宕机,所以这种跨节点管理引用的方式需要多次 rpc 才能释放引用,这是非常危险的,一旦有节点宕机,便可能导致其他节点的部分引用没办法释放。

对于这种困境,我勉强想了想几种可能的集中解决方案:对于这种困境,我勉强想了想几种可能的解决方案:

  1. 参照 2pc + 共识组的设计,将锁的管理共识化,这样便可以保证最终最会有人释放锁。当然这在咱们的场景下几乎是完全不可用的,对性能影响太大了。
  2. 为单机的引用计数提供 ttl 的属性,即超过一段时间不再获取该数据便释放引用。这可能又会有 safety 的问题,毕竟由于 flp 定理,分布式锁是无法保证绝对的 safety 的。

...