前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tair分布式缓存

Tair分布式缓存

作者头像
王炸
发布2019-09-29 20:12:10
1.2K0
发布2019-09-29 20:12:10
举报
文章被收录于专栏:转行程序员转行程序员

Tair是为了解决什么问题而生?

Redis很好用,相比memcached多了很多数据结构,支持持久化。但是在很长一段时间里,原生是不支持分布式的。后来就出现了很多redis集群类产品,Tair是其中胜出的优秀作品之一。

所以Tair的特性都是一些集群的特性,比如:容错、解决单点故障、跨机房管理、多集群管理、支持副本等。总而言之,是redis的高可用版本。

Tair的架构

Tair的整体风格是简约实用,包括三个必选模块:client、configserver和dataserver。一个可选模块:invalidserver。还有一个必要软设施:一致性哈希算法提供分布式的负载均衡计算。

client的作用

1. 在应用端提供访问Tair集群的接口

2.更新并缓存数据分布表和invalidserver 地址等 3. 本地缓存,避免过热数据访问影响Tair集群服务

4. 流控

configserver的作用

1. 通过维护和dataserver心跳来获取集群存活节点的信息

2.通过存活节点的信息来构建数据在集群中的分布表

3. 提供数据分布表的查询服务

4. 调度dataserver之间的数据迁移、复制

dataserver的作用

1. 提供存储引擎

2. 接受client和put、get、remove等操作

3. 执行数据迁移、复制等

4. 插件:在接受请求的时候处理一些自定义功能

5. 访问统计

invallidserver的作用

1. 接收来自client和invalid、hide等请求后,对属于同一组的集群(双机房独立集群部署方法)做delete、hide操作,保证同一组集群的一致

2.集群断网之后的脏数据清理

3. 访问统计

一致性哈希的作用

1. 增加和减少dataserver的时候,进行rehash重哈希。并在迁移过程中保持原数据对外提供服务

2. 负载均衡,并行多个key进行计算合并结果(mget)

Tair的使用场景

  1. 缓存
  2. 分布式锁
  3. 作为nosql数据库,提供简单类型存储(K/V存储,无复杂查询)

Tair使用QA

1.Q:tair可以支持支持什么类型?

A:内部是序列化成二进制的,就是说理论上支持任何类型。

2.Q:tair有mget的功能可以一次性返回多个结果,这个个数有上限吗?

A:理论上没有。实际使用中建议1次在100个以下。因为多个请求要等所有的结果回来再进行聚合。聚合等待太多,错误就会发生。好比一个机器故障率是万分之一。那么10000条记录一起请求结果,那么故障率就非常高了,可能多数情况下都是失败的。

3.Q:tair的分布式锁使用有什么最佳实践?

A:分布式锁使用建议使用带有过期时间的分布式锁,过期时间可传一个绝对的时间戳。解锁时可传入一个非常大的整数,以解掉所有的锁。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 转行程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档