diff --git a/README.md b/README.md index f09fba3..ccca477 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ ## 系统架构 -![](https://www.osredm.com/jiuyuan/JYCache/tree/master/doc/image/JYCache_architecture.PNG) +![](doc/image/JYCache_architecture.PNG) 在单机对象加速部署模式下,对象存储可通过 FUSE(基于S3FS(V1.94)实现) 或系统调用劫持等方式挂载到本地,用户可像本地磁盘一样进行读写访问。对象存储系统上的一个完整对象对应本地的一个文件,通过对象名构造目录树结构。热点数据可缓存于本地的 DRAM/SSD,通过减少与对象存储系统的数据交互操作,可提升文件系统性能。 在分布式对象加速模式下,热点数据呈现两级缓存结构,除各个客户端内部 DRAM/SSD 缓存外,还提供一层共享的 DRAM/SSD 缓存,进一步提高缓存命中率,提升并发读等场景下的 IO 性能。 diff --git a/doc/cache_framework_design.md b/doc/cache_framework_design.md index 4e26e21..e994c3e 100644 --- a/doc/cache_framework_design.md +++ b/doc/cache_framework_design.md @@ -3,15 +3,15 @@ ### 设计背景 在用户和数据服务器之间构建一套缓存系统,该缓存系统可以让用户以本地文件的形式透明且高效地访问数据服务器中的数据。其中,数据服务器的类型有对象存储、自建全局缓存等。以数据服务器为对象存储为例,用户可以通过fuse以本地文件形式访问存储在远端的对象,且远端的对象索引是用户可懂的。 -![](https://www.osredm.com/jiuyuan/JYCache/tree/master/doc/image/system_purpose.png) +![](image/system_purpose.png) ### 系统定位 该缓存系统支持多种数据源,包括S3对象存储、自建全局缓存等,故称为HybridCache。同时借助S3FS对fuse的支持,以及其在元数据管理方面的能力,实现fuse模式下的文件管理操作。HybridCache的定位如下图所示: -![](https://www.osredm.com/jiuyuan/JYCache/tree/master/doc/image/system_positioning.png) +![](image/system_positioning.png) ### 系统架构 HybridCache架构如下图所示: -![](https://www.osredm.com/jiuyuan/JYCache/tree/master/doc/image/HybridCache_architecture.PNG) +![](image/HybridCache_architecture.PNG) 1.写缓存模块 @@ -31,7 +31,7 @@ HybridCache架构如下图所示: 在本地缓存中,我们直接将文件切分为固定大小的page(page大小可配置,下文以64KB为例),并使用CacheLib来维护这些page。page在CacheLib中以KV形式进行存储,其存储结构如下: - key为 cacheKey_pageid。读写模块各自维护自己的本地缓存,cacheKey在写缓存模块中就是文件的path,在读缓存模块中就是S3上对象的key。pageid即为页号,通过offset/64KB计算得来。 - value的数据结构如下: -![](https://www.osredm.com/jiuyuan/JYCache/tree/master/doc/image/page_structure.jpg) +![](image/page_structure.jpg) 通过 cacheKey+offset+size 即可接操作指定文件中的特定page。page并发操作的安全性是通过CacheLib自身的机制以及page内的lock和新旧版号位来保证。