当前位置:首页 » 文件管理 » tair缓存

tair缓存

发布时间: 2022-09-13 04:45:54

A. TAIR的DataServer内部结构

DataServer负责数据的物理存储,并根据configserver构建的对照表完成数据的复制和迁移工作。DataServer具备抽象的存储引擎层,可以很方便地添加新存储引擎。DataServer还有一个插件容器,可以动态地加载/卸载插件。

抽象的存储引擎层 Tair的存储引擎有一个抽象层,只要满足存储引擎需要的接口,便可以很方便地替换Tair底层的存储引擎。比如可以很方便地将bdb、tc甚至MySQL作为Tair的存储引擎,而同时使用Tair的分布方式、同步等特性。
Tair默认包含两个存储引擎:mdb和fdb。
mdb是一个高效的缓存存储引擎,它有着和memcached类似的内存管理方式。mdb支持使用share memory,这使得在重启Tair数据节点的进程时不会导致数据的丢失,从而使升级对应用来说更平滑,不会导致命中率的较大波动。
fdb是一个简单高效的持久化存储引擎,使用树的方式根据数据key的hash值索引数据,加快查找速度。索引文件和数据文件分离,尽量保持索引文件在内存中,以便减小IO开销。使用空闲空间池管理被删除的空间。
自动的复制和迁移 为了增强数据的安全性,Tair支持配置数据的备份数。比如可以配置备份数为3,则每个数据都会写在不同的3台机器上。得益于抽象的存储引擎层,无论是作为cache的mdb,还是持久化的fdb,都支持可配的备份数。
当数据写入一个节点(通常称其为主节点)后,主节点会根据对照表自动将数据写入到其他备份节点,整个过程对用户是透明的。
当有新节点加入或者有节点不可用时,configserver会根据当前可用的节点,重新build一张对照表。数据节点同步到新的对照表时,会自 动将在新表中不由自己负责的数据迁移到新的目标节点。迁移完成后,客户端可以从configserver同步到新的对照表,完成扩容或者容灾过程。整个过 程对用户是透明的,服务不中断。
插件容器 Tair还内置了一个插件容器,可以支持热插拔插件。
插件由configserver配置,configserver会将插件配置同步给各个数据节点,数据节点会负责加载/卸载相应的插件。
插件分为request和response两类,可以分别在request和response时执行相应的操作,比如在put前检查用户的quota信息等。
插件容器也让Tair在功能方便具有更好的灵活性。

B. .Net的Cache和Memcached有什么优缺点

如果你的服务器只有一台,且数据库读写压力不大,就没必要使用Memcached。HttpRuntime.Cache是本地缓存,Memcached是分布式缓存,两者的区别在于:

本地缓存
本地缓存可能是大家用的最多的一种缓存方式了,不管是本地内存还是磁盘,其速度快,成本低,在有些场合非常有效。
但是对于web系统的集群负载均衡结构来说,本地缓存使用起来就比较受限制,因为当数据库数据发生变化时,你没有一个简单有效的方法去更新本地缓存;然而,你如果在不同的服务器之间去同步本地缓存信息,由于缓存的低时效性和高访问量的影响,其成本和性能恐怕都是难以接受的。

分布式缓存
前面提到过,本地缓存的使用很容易让你的应用服务器带上“状态”,这种情况下,数据同步的开销09会比较大;尤其是在集群环境中更是如此!
分布式缓存这种东西存在的目的就是为了提供比RDB更高的TPS和扩展性,同时有帮你承担了数据同步的痛苦;优秀的分布式缓存系统有大家所熟知的Memcached、Redis(当然也许你把它看成是NoSQL,但是我个人更愿意把分布式缓存也看成是NoSQL),还有淘宝自主开发的Tair等。
对比关系型数据库和缓存存储,其在读和写性能上的差距可谓天壤之别;就拿淘宝的Tair来说,mdb引擎的单机QPS已在10w以上,ldb的也达到了5w~7w,而集群的性能会更高(目前uic所用的Tair集群QPS高达数十万!)。
所以,在技术和业务都可以接受的情况下,我们可以尽量把读写压力从数据库转移到缓存上,以保护看似强大,其实却很脆弱的关系型数据库。

C. 淘宝tair 为什么不用redis

redis很好用,提供缓存服务。相比memcached多了N多新数据结构和主从模式增加可用性。不过redis有一点不能满足一些互联网公司开发者需求。

redis集群中,想借用缓存资源必须得指明redis服务器地址去要。这就增加了程序的维护复杂度。因为redis服务器很可能是需要频繁变动的。
所以人家淘宝就想啊,为什么不能像操作分布式数据库或者hadoop那样。增加一个中央节点,让他去代理所有事情。
所以人家就开发了这个tair。程序只要跟tair中心节点交互就OK了。甚至人家还弄了个配置服务器这种概念。免去了像操作hadoop那样,还得每台hadoop一套一模一样配置文件。改配置文件得整个集群都跟着改。
tair使用了google在bigtable里面的merge-mp模型。
底层存储可以用redis或者google的levelDB.而且人家淘宝已经把他开源了。
http://tair.taobao.org/
未来,如果你用redis不弄个中央节点。你还好意思说你会redis吗?

D. LevelDB 可以用来替换 Redis 做缓存吗

可能很多人都不知道RedisStorage 和redis 之间的区别。

redis的存储是存储在内存里的, RedisStorage可以选择存储在磁盘里.
当redis崩溃的时候。redis 会从rdb或者aof文件重新读取数据到内存里。如果数据量很大的话。这个初始化是相当的慢。(这就是 redis的假数据持久)。
RedisStorage 是直接存储在 磁盘里。所以不存在这个数据重加载问题。

还有redis 存储是受物理内存限制的,比如你有几千万或者几亿的数据。如果存储在redis里。那得需要多巨大的内存了。使用RedisStorage 就没有物理内存限制这个问题。最大可以存储十亿数据。

最后说一下淘宝的Tair ldb项目。同样基于leveldb 存储引擎。 广泛的用在 登录淘宝、查看商品详情页面、在淘江湖和好友“捣浆糊”等。 说明leveldb 数据引擎的可靠性和海量数据存储。 但是开源版的Tair ldb 并不好用。所以自己写了个基于 leveldb的 server端。

E. 什么是分布式存储系统

分布式存储系统

定义

分布式存储系统是大量普通PC服务器通过Internet互联,对外作为一个整体提供存储服务

特性

  • 可扩展

  • 低成本

  • 高性能

  • 易用

挑战

分布式存储系统的挑战主要在于数据、状态信息的持久化,要求在自动迁移、自动容错、并发读写的过程中保证数据的一致性。分布式存储涉及的技术主要来自两个领域:分布式系统以及数据库。


  • 数据分布

  • 一致性

  • 容错

  • 负载均衡

  • 事务与并发控制

  • 易用性

  • 压缩/解压

分类

非结构化数据,一般的文档

结构化数据, 存储在关系数据库中

半结构化数据,HTML文档

不同的分布式存储系统适合处理不同类型的数据:


分布式文件系统

非结构化数据,这类数据以对象的形式组织,不同对象之间没有关联,这样的数据一般称为Blob(二进制大对象)数据

典型的有Facebook Haystack 以及 Taobao File System

另外,分布式文件系统也常作为分布式表格系统以及分布式数据库的底层存储,如谷歌的GFS可以作为分布式表格系统Google Bigtable 的底层存储,Amazon的EBS(弹性存储块)系统可以作为分布式数据库(Amazon RDS)的底层存储

总体上看,分布式文件系统存储三种类型的数据:Blob对象、定长块以及大文件

分布式键值系统

较简单的半结构化数据,只提供主键的CRUD(创建、读取、更新、删除)

典型的有Amazon Dynamo 以及 Taobao Tair

分布式表格系统

较复杂的半结构化数据,不仅支持CRUD,而且支持扫描某个主键范围

以表格为单位组织数据,每个表格包括很多行,通过主键标识一行,支持根据主键的CRUD功能以及范围查找功能

典型的有Google Bigtable 以及 Megastore,Microsoft Azure Table Storage,Amazon DynamoDB等

分布式数据库

存储结构化数据,一般是由单机关系数据库扩展而来

典型的包括MySQL数据库分片集群、Amazon RDS以及Microsoft SQL Azure

F. TAIR的Tair的功能

Tair是一个Key/Value结构数据的解决方案,它默认支持基于内存和文件的两种存储方式,分别与缓存和持久化存储对应。
Tair除了普通Key/Value系统提供的功能,比如get、put、delete以及批量接口外,还有一些附加的实用功能,使得其有更广的适用场景,包括:
Version支持
原子计数器
Item支持

G. 怎么搭建一个tair缓存服务器

能啊,不过不知你要怎么做。
一般来说,对企业级用户才需要这些功能。主要就是避开上网高峰期,利用夜间来把网页等内容缓存下来,到了白天再用,再打开时可以看到网页是前一天或当天凌晨的。不过,不要紧,一点“刷新”就好了,因为大部分内容都下来了,改动也就很少,浏览网页的速度也就很快了。
方法我知道有两种,都是基于系统服务器的:1 WINDOWS系统下可以装一个ISA2000之类的软件,它可以提供防火墙、NAT、缓存三大功能。这个软件一时半会说不清楚,你可以自己下一个下来慢慢来,并不是很难。2 LINUX系统下也可以实现,在安装了一个叫squid的服务后,这个功能就可以再通过配置来实现,不过配置全是用命令,有点困难了。
最后,建议用ISA来做,或者找些专用的小软件之类的。顺便问一下,你该不是在开网吧,自学吧。

H. e照通缓存中未查询到key

分布式缓存是网站服务端经常用到的一种技术.
在读多写少的业务场景中,通过使用缓存可以有效地支撑高并发的访问量,对后端的数据库等数据源做到很好地保护。现在市面上有很多分布式缓存,比如Redis、Memcached以及阿里的Tair等,不管我们使用的哪种缓存产品,基本上都会遇到缓存击穿、缓存失效以及热点key的问题。如何有效地防止这些问题,也是我们在享受缓存带来的红利的同时,必须要解决的难题。
通常我们在使用缓存时都是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回.
缓存击穿:查询一个数据库中不存在的数据,比如商品详情,查询一个不存在的ID,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成过大的压力。
解决方案:当通过某一个key去查询数据的时候,如果对应在数据库中的数据都不存在,我们将此key对应的value设置为一个默认的值,比如“NULL”,并设置一个缓存的失效时间,这时在缓存失效之前,所有通过此key的访问都被缓存挡住了。后面如果此key对应的数据在DB中存在时,缓存失效之后,通过此key再去访问数据,就能拿到新的value了。

热点内容
lol浙江省服务器云主机 发布:2024-10-11 05:07:35 浏览:902
安卓抖音没网络怎么设置 发布:2024-10-11 05:07:22 浏览:857
服务器ft测试的是什么 发布:2024-10-11 05:06:50 浏览:109
算法是什 发布:2024-10-11 05:01:46 浏览:176
java图片水印 发布:2024-10-11 04:53:47 浏览:483
linux下mfc编译 发布:2024-10-11 04:43:40 浏览:903
phpfor循环语句 发布:2024-10-11 04:32:55 浏览:869
什么是假的服务器 发布:2024-10-11 04:32:49 浏览:102
笔记本电脑配置够但玩游戏卡怎么办 发布:2024-10-11 04:30:55 浏览:2
scratch编程小游戏跳一跳 发布:2024-10-11 03:50:03 浏览:574