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

news2024/11/18 21:33:29

文章目录

    • 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.coloradmin.cn/o/502852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL基础(十四)视图

1. 常见的数据库对象 对象描述表(TABLE)表是存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录数据字典就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护,程序员通常不应该修改&…

K_A36_002 基于STM32等单片机驱动继电器点灯 串口与OLED0.96双显示

K_A36_002 基于STM32等单片机驱动继电器点灯 串口与OLED0.96双显示 所有资源导航一、资源说明二、基本参数参数引脚说明 三、驱动说明模块工作原理:对应程序: 四、部分代码说明1、接线引脚定义1.1、STC89C52RC继电器模块1.2、STM32F103C8T6继电器模块 五、基础知识学习与相关资…

在学习c51单片机实验七(双机通信及pcb设计)操作Keil uVision4和protus的时候遇到的两个坑

第一个问题,这个问题用keil编程经常遇到 特别是懒的时候,对于新手,每次用一个工程文件,因为创建不熟练,就容易出现这个问题 Build target Target 1 linking... *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYM…

FPGA通过数码管实现电子时钟

文章目录 前言一、原理1、共阴极数码管or共阳极数码管2、共阴极与共阳极的真值表 二、系统设计1、总体框图:2、模块调用3、模块原理图 三、源码1、计数模块2、数码管驱动模块3、顶层模块 四、运行效果五、总结六、参考资料 前言 环境: 1、Quartus18.1 2、…

cloud在gateway支持https和http请求

在项目中遇到既要支持http协议请求和https协议请求的场景,结合场景有两种解决方案: 第一种:编程实现,第二种:反向代理。 首先我们要清楚http和https的区别,百度过来一点 HTTP(HTTP&#xff0…

目标检测之Neck选择

文章来自于:曲終人不散丶知乎, 连接:https://www.zhihu.com/people/qu-zhong-ren-bu-san-zhu-45/posts, 本文仅用于学术分享,如有侵权,前联系后台做删文处理。 Neck是目标检测框架中承上启下的关键环节。它…

Golang Gin 多数据格式返回请求结果

下面介绍返回类型如下: [ ]byte和stringJSON格式HTML模板渲染静态资源设置 背景 在前面的课程中,我们已经学习和掌握了多类型的网络请求和处理,还掌握了提交数据与结构体绑定的操作。我们都知道,一个完整的请求包含请求、处理请求…

掌握Linux操作系统:一步步引导您成为Linux专家

Linux是一种流行的操作系统,我们可以在服务器、桌面电脑和移动设备上使用它。基本的Linux知识可以帮助您理解操作系统如何工作,以及如何为您的计算机提供安全和可靠的环境。下面是一些方法,可以帮助您学习Linux: 安装Linux操作系统…

4月京东生鲜水果行业数据报告:榴莲销量增长400%,市场格局剧变

众所周知,今年水果领域的一个重磅消息就是:榴莲价格暴跌。目前全国多地线下水果专卖店、农贸市场的榴莲价格都在下滑,有的地区在4月底甚至已经降至最低每斤20元左右。预测在5月的销售旺季,价格还有望一路向下。 •榴莲逆袭苹果&am…

二十一、线索转换2:线索公司信息到客户表,线索中个人信息到联系人

功能需求 1.线索的关联公司信息--》客户表 2.线索的个人信息--》联系人 3.线索的公司备注信息--》客户备注 4.线索的个人信息---》联系人备注 5.线索-市场 --> 联系人和市场 6.创建交易,交易表添加记录 7.创建交易,线索的备注-->交易备注 …

JMeter自动化压力测试-http

下载: Apache JMeter - Download Apache JMeterhttps://jmeter.apache.org/download_jmeter.cgi 安装: JDK 版本要求为 1.8。 一、Jmeter 介绍 1.1、Jmeter 有什么样功能 Apache JMeter 是一个开源、纯 Java、优秀的性能测试工具 能够测试许多不同的应…

lua | 运算符与字符串

目录 一、运算符 算数运算符 关系运算符 逻辑运算符 其他运算符 运算符优先级 二、字符串 转义字符 方法与用途 字符串截取 字符串大小转换 字符串查找与反转 字符串格式化 字符与整数的转换 匹配模式 本文章为笔者学习分享 学习网站:Lua 基本语法 | …

分享三种高效的方法,快速将一个PDF文件分割成两个!

如何将一个PDF分割成两个?PDF文件在学习和工作中都是常用的文件格式,但是有时候我们可能只需要其中的一部分内容,这时候就需要将PDF文件分割成两个或多个。本文将分享三种不同的方法,供大家参考。 一、使用在线工具分割 记灵在线…

设计模式:DDD领域驱动设计

领域 Domain-driven design DDD 强调是说得先把 “领域” 中涉及到的数据、流程、规则等都弄明白了,然后以面向对象的观点为其建立一个模型(即领域模型),而这个模型,决定了你将用什么技术、什么架构、什么平台来实现这…

国产仪器 1652A/1652B 函数/任意波形发生器

1652A函数/任意波形发生器采样率2.5GSa/s,垂直分辨率14bits,最高输出频率500MHz(直流耦合模式),双通道,存储深度1G点/通道;1652B函数/任意波形发生器采样率5GSa/s(插值到10GSa/s&…

【Flink】DataStream API使用之执行环境

1. 执行环境 Flink 程序可以在各种上下文环境中运行:我们可以在本地 JVM 中执行程序,也可以提交 到远程集群上运行。不同的环境,代码的提交运行的过程会有所不同。这就要求我们在提交作业执行计算时,首先必须获取当前 Flink 的运…

【Unity3D插件】动态连线插件CustomWire,使用教程

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 CustomWire插件可以在Unity3D中实现动态连线,将三维…

ADAudit Plus的UEBA功能如何解决企业面临的安全挑战

随着企业信息系统的不断发展和扩大,越来越多的安全威胁开始涌现。从内部员工的误操作到外部黑客的入侵,企业信息系统的安全风险日益增加。为了保护企业的关键数据和业务,企业需要采取一系列的安全措施。而其中一项关键的安全措施是实时监控和…

【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南

欢迎关注【youcans的学习笔记】原创作品,火热更新中 【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南 1. BingChat 简介2. BingChat 用户注册2.1 下载微软浏览器 Edge 预览版2.2 申请微软账户2.3 登录 Bing.com2.4 手机/平板使用 BingChat 3. BingChat 的聊…

P1056 [NOIP2008 普及组] 排座椅

题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的 �D 对同学上课时会交头接耳。 同学们…