fix readme

This commit is contained in:
Feng Ren 2024-08-02 16:33:14 +08:00
parent b74799b00b
commit 2638367541
2 changed files with 5 additions and 5 deletions

View File

@ -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通过减少与对象存储系统的数据交互操作可提升文件系统性能。 在单机对象加速部署模式下,对象存储可通过 FUSE基于S3FS(V1.94)实现) 或系统调用劫持等方式挂载到本地,用户可像本地磁盘一样进行读写访问。对象存储系统上的一个完整对象对应本地的一个文件,通过对象名构造目录树结构。热点数据可缓存于本地的 DRAM/SSD通过减少与对象存储系统的数据交互操作可提升文件系统性能。
在分布式对象加速模式下,热点数据呈现两级缓存结构,除各个客户端内部 DRAM/SSD 缓存外,还提供一层共享的 DRAM/SSD 缓存,进一步提高缓存命中率,提升并发读等场景下的 IO 性能。 在分布式对象加速模式下,热点数据呈现两级缓存结构,除各个客户端内部 DRAM/SSD 缓存外,还提供一层共享的 DRAM/SSD 缓存,进一步提高缓存命中率,提升并发读等场景下的 IO 性能。

View File

@ -3,15 +3,15 @@
### 设计背景 ### 设计背景
在用户和数据服务器之间构建一套缓存系统该缓存系统可以让用户以本地文件的形式透明且高效地访问数据服务器中的数据。其中数据服务器的类型有对象存储、自建全局缓存等。以数据服务器为对象存储为例用户可以通过fuse以本地文件形式访问存储在远端的对象且远端的对象索引是用户可懂的。 在用户和数据服务器之间构建一套缓存系统该缓存系统可以让用户以本地文件的形式透明且高效地访问数据服务器中的数据。其中数据服务器的类型有对象存储、自建全局缓存等。以数据服务器为对象存储为例用户可以通过fuse以本地文件形式访问存储在远端的对象且远端的对象索引是用户可懂的。
![](https://www.osredm.com/jiuyuan/JYCache/tree/master/doc/image/system_purpose.png) ![](image/system_purpose.png)
### 系统定位 ### 系统定位
该缓存系统支持多种数据源包括S3对象存储、自建全局缓存等故称为HybridCache。同时借助S3FS对fuse的支持以及其在元数据管理方面的能力实现fuse模式下的文件管理操作。HybridCache的定位如下图所示 该缓存系统支持多种数据源包括S3对象存储、自建全局缓存等故称为HybridCache。同时借助S3FS对fuse的支持以及其在元数据管理方面的能力实现fuse模式下的文件管理操作。HybridCache的定位如下图所示
![](https://www.osredm.com/jiuyuan/JYCache/tree/master/doc/image/system_positioning.png) ![](image/system_positioning.png)
### 系统架构 ### 系统架构
HybridCache架构如下图所示 HybridCache架构如下图所示
![](https://www.osredm.com/jiuyuan/JYCache/tree/master/doc/image/HybridCache_architecture.PNG) ![](image/HybridCache_architecture.PNG)
1.写缓存模块 1.写缓存模块
@ -31,7 +31,7 @@ HybridCache架构如下图所示
在本地缓存中我们直接将文件切分为固定大小的pagepage大小可配置下文以64KB为例并使用CacheLib来维护这些page。page在CacheLib中以KV形式进行存储其存储结构如下 在本地缓存中我们直接将文件切分为固定大小的pagepage大小可配置下文以64KB为例并使用CacheLib来维护这些page。page在CacheLib中以KV形式进行存储其存储结构如下
- key为 cacheKey_pageid。读写模块各自维护自己的本地缓存cacheKey在写缓存模块中就是文件的path在读缓存模块中就是S3上对象的key。pageid即为页号通过offset/64KB计算得来。 - key为 cacheKey_pageid。读写模块各自维护自己的本地缓存cacheKey在写缓存模块中就是文件的path在读缓存模块中就是S3上对象的key。pageid即为页号通过offset/64KB计算得来。
- value的数据结构如下 - 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和新旧版号位来保证。 通过 cacheKey+offset+size 即可接操作指定文件中的特定page。page并发操作的安全性是通过CacheLib自身的机制以及page内的lock和新旧版号位来保证。