SeaweedFS学习笔记:Filer服务,目录与文件

news/2024/11/29 22:40:39/

文章目录

    • 1. 介绍
    • 2. 用法
        • 2.1 生成配置文件
        • 2.2 启动 filer
    • 3. 读写流程
        • 3.1 读取流程
        • 3.2 写入流程
    • 4. Filer Store
        • 4.1 复杂度
        • 4.2 Filer的使用场景
    • 5. 数据加密
        • 5.1 对Volume server的数据进行加密

1. 介绍

文件系统,一般都离不开目录和文件,当我们把SeaweedFS与Linux FUSE、Hadoop搭配使用时,这是必不可少的。

2. 用法

2.1 生成配置文件

  ./weed scaffold -config=filer -output="."

该命令会在当前目录生成配置文件,filer.toml,主要用于配置filer store。
默认的filer store配置是:

[leveldb2]
enabled = true
dir = "."					# directory to store level db files

2.2 启动 filer

./weed filer -ip=192.168.56.101 -port=8888 -master=192.168.56.101:9333
# POST a file and read it back
curl -F "filename=@README.md" "http://192.168.56.101:8888/path/to/sources/"
curl "http://192.168.56.101:8888/path/to/sources/README.md"# POST a file with a new name and read it back
curl -F "filename=@Makefile" "http://192.168.56.101:8888/path/to/sources/new_name"
curl "http://192.168.56.101:8888/path/to/sources/new_name"# list sub folders and files, use browser to visit this url: "http://localhost:8888/path/to/"
# To list the results in JSON:
curl -H "Accept: application/json" "http://192.168.56.101:8888/path/to"
# To list the results in pretty JSON
curl -H "Accept: application/json" "http://192.168.56.101:8888/path/to?pretty=y"# The directory list limit is default to 100
# if lots of files under this folder, here is a way to efficiently paginate through all of them
http://192.168.56.101:8888/path/to/sources/?limit=50

3. 读写流程

3.1 读取流程

  1. Filer 从 FilerStore 读取元数据信息(fileId, Volume信息),FilerStore可选择组件:Cassandra/Mysql/Postgres/Redis/LevelDB/etcd/Sqlite。
  2. Filer 从Volume Server读取数据并返回
    在这里插入图片描述

3.2 写入流程

  1. 客户端把数据写到Filer
  2. Filer把数据上传到Volume Server, 如果大文件的话切成多个块
  3. Filer把元数据和块信息写入到Filer store

4. Filer Store

4.1 复杂度

对于文件读取,取决于Filer Store的实现方式,基于LSM tree 后者 Btree 的实现,元数据查找的复杂度为O(logN),N指的是已存在的所有条目,基于Redis的实现,复杂度为O(1)。

文件重命名,复杂度为O(1),只需删除旧的元数据和新增元数据,无需修改Volume server中的文件内容。

目录重命名,复杂度为O(N), N为待修改目录下的所有文件和子目录个数,这些条目都需要更新元数据,同样,也修改Volume server中的文件内容。

4.2 Filer的使用场景

Filer有两种使用场景。

一种是用于上传和下载文件,Filer需要处理文件以及读写元数据,负载比较重,建议部署多台Filer server 。

另一种是用与“weed mount”,Filer仅提供元数据的读取,实际的文件读取和写入是通过"weed mount",这种情况Filer的负载比较轻。

5. 数据加密

对于Filer来说,元数据存储在Filer store,实际的数据存储在Volume server, 有些Volume server是用本地的物理机器,有些Volume server是在云上,云上的Volume server被黑客侵入,后果不堪设想。

5.1 对Volume server的数据进行加密

weed filer -encryptVolumeData 提供对Volume server加密的选项。
加密的key是在写入数据时随机生成的,不同的文件有不同的key。这些key存储在filer store。
以此来实现对Volume server的数据进行加密,只要filer store不暴露,不可能猜到所有文件的加密 key。

Volume server实际并不知道哪些数据是加密的,哪些数据是没有加密的。


http://www.ppmy.cn/news/61996.html

相关文章

MATLAB算法实战应用案例精讲-【人工智能】对比学习(概念篇)(补充篇)

目录 前言 几个高频面试题目 基于对比学习(ContrastiveLearning)的文本表示模型【为什么】能学到文本【相似】度? 为什么对比学习能学到很好的语义相似度? 那么如何评价这个表示空间的质量呢? 知识储备 监督学习和非监督学习 算法原理…

04-菜单维护 尚筹网

在【菜单维护】页面,通过树形结构,使用zTree显示整个菜单。 准备工作 一、在数据库创建菜单表: #使用project_rowd表 use project_rowd;#创建菜单的数据库表 create table t_menu (id int(11) not null auto_increment, pid int(11), nam…

IDEA沉浸式编程体验

前言 IntelliJ IDEA:前不久推出了一个新的概念Fleet编辑器。用过的人都知道,不过是模仿VScode整一套,但相比之下,fleet虽然在传统IDEA的基础上简约了不少,一旦打开智能模式,那内存占用刷一下就上去了,没个3…

【python学习】基础篇-文件与系统-写入内容到指定文件

利用文件对象提供的 write() 方法,可以向文件中写入内容。 语法格式如下: file.write(string) 其中,fle 为打开的文件对象: string 为要写入的字符串。 fopen(word.txt, a) # 以追加的方式打开文件 # 将信息写入文件 f.write("有时候你觉得特别难&…

TikTok数据报告要怎么看?

TikTok数据报告是一种分析和汇总TikTok平台上数据的报告,包含TikTok平台上的用户数据、视频数据、广告数据等。TK卖家每年可以通过分析TK数据报告来更好地了解受众和市场趋势,从而制定更加精准的营销策略和提升销售业绩。TikTok数据报告也可以帮助商家更…

很佩服的一个Google大佬,离职了。。

这两天,科技圈又有一个突发的爆款新闻相信不少同学都已经看到了。 那就是75岁的计算机科学家Geoffrey Hinton从谷歌离职了,从而引起了科技界的广泛关注和讨论。 而Hinton自己也证实了这一消息。 提到Geoffrey Hinton这个名字,对于一些了解过…

烈日炎炎的夏天骑行,怎么预防中暑及中暑后怎么处理?

随着天气的逐渐炎热,夏季骑行逐渐成为了人们喜爱的一项运动。但是,在享受骑行乐趣的同时,我们也要时刻关注身体健康,预防中暑等意外情况的发生。下面,本文将从多个角度为大家讲解夏季骑行中暑的预防和处理方法。 一、选…

vue3中watch的用法及讲解

当我们在Vue 3应用程序中想要监听数据的变化时,可以使用 watch 函数。watch 函数支持多种用法,包括监听响应式对象、计算属性、ref 对象等等。 下面我们就来详细讲解一下 watch 函数的用法。 监听响应式对象 watch 函数可以通过监听一个响应式对象来实…