问题一:为什么需要「渐进式 rehash」?
为什么需要「渐进式 rehash」?
参考回答:
「渐进式 rehash」是因为在 HashMap 中存储的数据量可能非常大,达到千万甚至亿条。当触发引擎 rehash 时,由于数据量巨大,不能一次性完成,必须是随着其他数据操作渐进式进行,以避免对系统性能产生过大影响。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655881
问题二:Tair 是如何保证在并发修改过程中的无状态扫描的?
Tair 是如何保证在并发修改过程中的无状态扫描的?
参考回答:
Tair 支持使用 scan 接口来遍历数据,在并发修改过程中,这个遍历可以重复进行,但不会遗漏数据。这是通过采用特定的数据结构和算法来实现的,确保在并发环境下扫描的一致性和完整性
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655882
问题三:Tair 的存储引擎是怎样的?它会变化吗?
Tair 的存储引擎是怎样的?它会变化吗?
参考回答:
Tair 的存储引擎是在不断变化和调整的,以适应不同的需求和优化性能。目前,Tair 的存储引擎主要基于 HashMap,但未来可能会考虑其他数据结构,如 RadixTree 或 B+ Tree 的变体等,以进一步提升性能。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655883
问题四:Tair 如何处理事务的并发控制?
Tair 如何处理事务的并发控制?
参考回答:
Tair 通过实现一个轻量锁方案来处理事务的并发控制。它采用了一个 Hash Lock Table 来对事务中涉及的所有 key 进行加锁,保证事务的一致性和隔离性。这种锁机制是悲观锁,需要在事务执行前检查 Hash Lock Table 来判断是锁授权还是锁等待。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/655884
问题五:Tair 如何避免死锁问题?
Tair 如何避免死锁问题?
参考回答:
Tair 在处理多个 key 的事务时,通过特定的加锁顺序来避免死锁问题。工程上常规的做法是要么对 key 本身进行排序,要么对最终加锁的内存地址进行排序,以确保相同的加锁顺序,从而防止 AB 和 BA 的死锁情况发生。
关于本问题的更多回答可点击原文查看: