Tair理解
Tair
Tair是什么?
- 淘宝开发的、分布式的、key/value存储引擎。
Tair怎么存数据?
- 支持内存存储。
- 支持文件存储:LDB引擎,SSD磁盘上的LevelDB存储引擎。
Tair靠谱吗?
- 线上热扩展,自动负载均衡。(Tair负载均衡:一致性哈希算法)
- 桶的分布均衡行->数据分布的均衡性。
- 主备存储->高可用。
- 数据存储:持久化。
- 多单元机房自动同步。
Tair适用场景?
- 通过Tair来加速以及承担大流量的目的。
- 淘宝天猫用户登陆、浏览商品详情页、购物车信息等。
Tair的范围查找(前缀查找)
- 分布式系统存储不可回避:负载均衡。
- 为了让读写调用请求均衡分布,需要让数据存储于不同的机器上:简单方法是Hash散列。
- Hash散列的方式对于前缀查找来说,并不友好,因为可能会导致前缀查找性能变慢,极端情况甚至是遍历所有机器。
- 为此,Tair采用著名的MurmurHash2算法。(备注:其实随着时间的发展MurmurHash->MurmurHash2->3,Tair用的只是第二代哈!)
- 为什么使用MurmurHash2,就可以避免性能变慢呢?遍历的机器变少了?那么是如何映射的呢?
- 目前没有找到比较深入的算法原理的介绍(论文里面应该有)。
- 简单理解:Hash(prefix_key)而非Hash(key)。(好处是让同前缀的数据存储更聚焦(映射到部分甚至一台机器上)),同时,该算法本身优势是:对于规律性较强的key的随机分布特征表现更良好,使得负载相对更均衡。
- 范围查找的过程中,可以优化提效的点:使用缓存 和 布隆过滤器。
- MurmurHash2也没能逃离碰撞的潜在风险(头插链表的方式解决散列冲突),最终导致的结果是极端情况Hash可能退化为链表。
Reference
- https://www.cnblogs.com/txfsheng/p/8809173.html(Tair总述)
- https://zhuanlan.zhihu.com/p/272654938(Tair 持久存储系列技术解读)
- https://blog.csdn.net/lanxuezaipiao/article/details/38224703(tair中对get/get_range接口的理解及为get_range添加命令行测试接口)