searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

关于ats的缓存优缺点的介绍

2023-09-13 03:08:57
158
0

   ats 是一个高性能的、模块化的HTTP代理和缓存服务器,提供了一个比较另类的存储引擎,是自己维护着存储索引+存储块,类似文件系统的inode+数据块,也就使其支持裸盘的挂载形式来充当存储盘,不需要进行格式化例如ext、xfs等文件系统.

   ats 是存储结构大概是: 前面是索引块,索引块有2大块,AB索引,程序会交替写入AB索引,用于保证索引数据不会因为异常导致索引数据被破坏,

导致缓存信息都丢失掉,定期写入索引值,将内存中的索引信息落盘。其中内存索引也是采用大页的形式分配的,

存储优势有以下特点:

1:   索引 数据块都是自己维护,是一个针对缓存服务器的专有缓存文件系统,灵活可控制缓存的读取,使用裸盘更能发挥存储优势

2:它是以4M的buffer block, 顺序写入磁盘中,达到磁盘末尾时,将从头再进行写,覆盖最早写入磁盘的缓存数据

3:不同于常规的存储系统,不会存在磁盘空间满的概念,无需进行删除无用的缓存文件

4:采用了使用顺序写方式存储缓存,机械盘的顺序写的效率并不比ssd写差,类似文件系统层的电梯算法。

5:使用了分帧的概念,可将缓存进行按照帧大小进行切割缓存文件,将帧数据写入到缓存的元数据中,使得对range请求可以得到offset 进行 io seek,无需读取整块的缓存文件。

6:支持热点的机械盘缓存迁移到固盘,使得热点缓存可以存储到固盘上。

7:提供了内存缓存->固盘缓存->机械盘缓存的链式命中,优先命中内存缓存,miss 再从磁盘获取,内存缓存的大小可根据配置控制对应的大小。 

8:支持分片插件,可支持大缓存文件,切割成小文件,独立存储,分散大缓存热点导致的单盘io过高.

存储缺点如下:

1:固盘缓存的信息是使用了机械盘缓存的索引位,导致固盘数8个的时候,机械盘最大只能支持32T的磁盘大小,要是固盘的个数更多对应机械盘更小。

2:存储引擎过于单一,无法支持多种存储引擎,对于不同业务的存储特定,无法都适应。

3:分片插件,切割大缓存文件,导致多分独立缓存文件,所有小缓存文件都存储完成后,无法合并单个缓存文件,缓存数量的索引信息将变多占用索引资源,对于缓存管理,例如删除缓存,缓存过期等场景,将变成复杂。

4:分片缓存的缓存大小与回源大小,是强一致的,无法回源大小与缓存文件的切片大小进行分割,无法达到大回源小缓存的实现,因为大回源块,可以减少回源数,减少回源压力。

5:由于顺序写的方式,导致存在热缓存被淘汰的风险,虽然存在疏散桶进行疏散缓存,但条件过于苛刻,无法保证热缓存被疏散。导致回源量过高

6:分片缓存,对于range请求不过友好,会导致整片缓存都读取,但实际客户请求,只需要片缓存的部分数据,造成大量无效读。

7:由于套圈写的模式,也就没有进行管理冷热缓存(没有相对热点)的概念,也就将冷迁的复杂性变高,需要做特殊处理才能实现。

8:缓存索引都是自己维护,不是交给内核文件系统管理,增加了维护难度,容易出现索引查找异常,造成缓存异常

0条评论
0 / 1000
谢****裕
3文章数
0粉丝数
谢****裕
3 文章 | 0 粉丝
谢****裕
3文章数
0粉丝数
谢****裕
3 文章 | 0 粉丝
原创

关于ats的缓存优缺点的介绍

2023-09-13 03:08:57
158
0

   ats 是一个高性能的、模块化的HTTP代理和缓存服务器,提供了一个比较另类的存储引擎,是自己维护着存储索引+存储块,类似文件系统的inode+数据块,也就使其支持裸盘的挂载形式来充当存储盘,不需要进行格式化例如ext、xfs等文件系统.

   ats 是存储结构大概是: 前面是索引块,索引块有2大块,AB索引,程序会交替写入AB索引,用于保证索引数据不会因为异常导致索引数据被破坏,

导致缓存信息都丢失掉,定期写入索引值,将内存中的索引信息落盘。其中内存索引也是采用大页的形式分配的,

存储优势有以下特点:

1:   索引 数据块都是自己维护,是一个针对缓存服务器的专有缓存文件系统,灵活可控制缓存的读取,使用裸盘更能发挥存储优势

2:它是以4M的buffer block, 顺序写入磁盘中,达到磁盘末尾时,将从头再进行写,覆盖最早写入磁盘的缓存数据

3:不同于常规的存储系统,不会存在磁盘空间满的概念,无需进行删除无用的缓存文件

4:采用了使用顺序写方式存储缓存,机械盘的顺序写的效率并不比ssd写差,类似文件系统层的电梯算法。

5:使用了分帧的概念,可将缓存进行按照帧大小进行切割缓存文件,将帧数据写入到缓存的元数据中,使得对range请求可以得到offset 进行 io seek,无需读取整块的缓存文件。

6:支持热点的机械盘缓存迁移到固盘,使得热点缓存可以存储到固盘上。

7:提供了内存缓存->固盘缓存->机械盘缓存的链式命中,优先命中内存缓存,miss 再从磁盘获取,内存缓存的大小可根据配置控制对应的大小。 

8:支持分片插件,可支持大缓存文件,切割成小文件,独立存储,分散大缓存热点导致的单盘io过高.

存储缺点如下:

1:固盘缓存的信息是使用了机械盘缓存的索引位,导致固盘数8个的时候,机械盘最大只能支持32T的磁盘大小,要是固盘的个数更多对应机械盘更小。

2:存储引擎过于单一,无法支持多种存储引擎,对于不同业务的存储特定,无法都适应。

3:分片插件,切割大缓存文件,导致多分独立缓存文件,所有小缓存文件都存储完成后,无法合并单个缓存文件,缓存数量的索引信息将变多占用索引资源,对于缓存管理,例如删除缓存,缓存过期等场景,将变成复杂。

4:分片缓存的缓存大小与回源大小,是强一致的,无法回源大小与缓存文件的切片大小进行分割,无法达到大回源小缓存的实现,因为大回源块,可以减少回源数,减少回源压力。

5:由于顺序写的方式,导致存在热缓存被淘汰的风险,虽然存在疏散桶进行疏散缓存,但条件过于苛刻,无法保证热缓存被疏散。导致回源量过高

6:分片缓存,对于range请求不过友好,会导致整片缓存都读取,但实际客户请求,只需要片缓存的部分数据,造成大量无效读。

7:由于套圈写的模式,也就没有进行管理冷热缓存(没有相对热点)的概念,也就将冷迁的复杂性变高,需要做特殊处理才能实现。

8:缓存索引都是自己维护,不是交给内核文件系统管理,增加了维护难度,容易出现索引查找异常,造成缓存异常

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0