CurveFS rename 接口实现方案© XXX Page 1 of 15 rename 接口实现方案(已实现,选用方案二)© XXX Page 2 of 15 1. 2. 3. 4. 1. 2. 1. 3. 1. 2. 背景 方案调研 Chubaofs Juicefs 方案实现 方案一:chubaofs 方案二:事务方案 方案三:利用 KV 自带的分布式事务 Q&A 1 2:rename A→C (A 存在,而 C 存在) 4. 当 2 个操作的 dentry 属于同一个 copyset 有什么不一样? 背景 当前 curvefs 并没有实现 rename 接口,本文档是对 rename 接口实现的调研及方案设计。 rename 操作,主要操作的是 dentry,如 rename /dir1/file1 /dir2/file2,主要有 2 个步骤:(1) 删除 file1 file1 的 dentry,(2) 增加 file2 的 dentry(该 dentry 的 inodeid 等同 file1 的 inode id)。 关于 rename 接口的实现,主要调研了 chubaofs 和 juicefs,而 rename 的实现难点主要在于其原子性的保证。 方案调研 Chubaofs chubaofs 中的 rename 实现不是原子性的,它是通 用创建源文件的硬0 码力 | 15 页 | 555.93 KB | 6 月前3
Curve文件系统元数据Proto(接口定义)© XXX Page 1 of 15 curve文件系统元数据proto(代码接口定义,已实现)© XXX Page 2 of 15 1、代码结构和代码目录 curve文件系统是相对于curve块设备比较独立的一块,在当前curve项目的目录下,增加一个一级目录curvefs,curvefs下有自己独立的proto\src\test。 2、文件系统proto定义 2.1 mds.proto0 码力 | 15 页 | 80.33 KB | 6 月前3
Nacos架构&原理
要解决服务发现和配置管理的功能问题,内核层解决分布式系统⼀致性、存储、高可用等核心问题, 插件解决扩展性问题。 Nacos 架构 < 18 用户层 OpenAPI:暴露标准 Rest 风格 HTTP 接口,简单易用,方便多语言集成。 Console:易用控制台,做服务管理、配置管理等操作。 SDK:多语言 SDK,目前几乎支持所有主流编程语言。 Agent:Sidecar 模式运行,通过标准 Nacos 高性能的关键部分。 日志模块:管理日志分类,日志级别,日志可移植性(尤其避免冲突),日志格式,异常码+帮 助文档。 回调机制:SDK 通知数据,通过统⼀的模式回调用户处理。接口和数据结构需要具备可扩展性。 寻址模式:解决 Server IP 直连,域名访问,Nameserver 寻址、广播等多种寻址模式,需要可 扩展。 推送通道:解决 Server 与存储、Server 接入管理:相当于阿里云开通服务,分配身份、容量、权限过程。 用户管理:解决用户管理,登录,SSO 等问题。 权限管理:解决身份识别,访问控制,角色管理等问题。 Nacos 架构 < 20 审计系统:扩展接口方便与不同公司审计系统打通。 通知系统:核心数据变更,或者操作,方便通过 SMS 系统打通,通知到对应人数据变更。 21 > Nacos 架构 Nacos 配置模型 背景 在单体架构的0 码力 | 326 页 | 12.83 MB | 9 月前3
curvefs client删除文件和目录功能设计ode和dentry结构,遗留了nlink和lookup count相关的内容还未实现,是不完备的。本文首先调研moosefs,chubaofs等分布式系统,参考并设计解决上述遗留问题。 当前删除接口代码如下:© XXX Page 3 of 15 CURVEFS_ERROR FuseClient::RemoveNode(fuse_req_t req, fuse_ino_t parent, nlink字段+1, 每删除一个hard link或指向的原文件时,nlink字段-1。© XXX Page 4 of 15 当nlink字段减到0时,才真正删除inode。所以在实现unlink接口或rmdir接口时,需要判断unlink字段的当前值,当nlink字段大于1时,只减nlink字段就可以了,当nlink字段减到0时,才真正的执行删除inode。 目录的nlink字段与文件的nlink字段不同, , ,该文件/目录仍然可以被打开的进程访问,不会造成崩溃或报错,我们的curvefs也需要实现 即使文件/目录已经被另一个进程删除了(nlink==0) 这样的语义。 这部分内容在fuse的相关接口中也有描述如下: /** * Forget about an inode * * This function is called when the kernel removes an0 码力 | 15 页 | 325.42 KB | 6 月前3
CurveFS Client 概要设计背景 概述 关键接口分析 init destroy lookup write read open create & mknod mkdir forget unlink rmdir opendir readdir getattr & setattr access rename symlink & readlink link flush & fsync 其他 功能分析 模块划分 接口设计 Cache设计 CurveFS client 向上提供两层接口,分别是© XXX Page 3 of 11 对接fuse,提供通用文件系统接口。对于fuse接口,先前进行了一些调研,见FUSE调研 提供lib库,提供对接分布式数据库接口,这一部分,可参考polarfs的接口,如下图所示。 根据讨论,我们首先对接fuse的lowlevel operators,对于数据库的lib库接口,后续可以在此基础上再做一层对接。lowlevel 。lowlevel operators接口一共45个,如下: +init +destroy +lookup +forget +getattr +setattr +readlink +mknod© XXX Page 4 of 11 +mkdir +unlink +rmdir +symlink +rename +link0 码力 | 11 页 | 487.92 KB | 6 月前3
跟我学Shiro - 张开涛Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录 了。 记住一点,Shiro 不会去维护用户、维护权限;这些需要我们自己去设计/提供;然后通过 相应的接口注入给 Shiro 即可。 接下来我们分别从外部和内部来看看 Shiro 的架构,对于一个好的框架,从外部来看应该 具有非常简单易于使用的 API,且 API 契约明确;从内部来看的话,其应该有一个可扩展 我 们 之 前 的 ini 配 置 方 式 将 使 用 org.apache.shiro.realm.text.IniRealm。 org.apache.shiro.realm.Realm 接口如下: 跟我学 Shiro——http://jinnianshilongnian.iteye.com/ 13 单 Realm 配置 1、自定义 Realm AuthenticationException 实现。 SecurityManager 接口继承了 Authenticator,另外还有一个 ModularRealmAuthenticator 实现, 其委托给多个 Realm 进行验证,验证规则通过 AuthenticationStrategy 接口指定,默认提供 的实现: FirstSuccessfulStrategy:只要有一个 Realm0 码力 | 219 页 | 4.16 MB | 10 月前3
Python 标准库参考指南 3.8.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 i 6.7 readline --- GNU readline 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 6.8 rlcompleter --- GNU . . . 436 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 16 通用操作系统服务 551 16.1 os --- 多种操作系统接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 16.2 io --- 处理流的核心工具0 码力 | 2052 页 | 9.74 MB | 9 月前3
Python 标准库参考指南 3.7.13 因特网字符串预备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 6.7 readline --- GNU readline 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 6.8 rlcompleter --- GNU readline . . . . 384 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . 生成安全随机数字用于管理密码 . . . . . . . . . . . . . . . . . . . . . . . . . . 480 16 通用操作系统服务 483 16.1 os --- 操作系统接口模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 16.2 io --- 处理流的核心工具0 码力 | 1846 页 | 9.09 MB | 9 月前3
Python 标准库参考指南 3.8.20 因特网字符串预备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 6.7 readline --- GNU readline 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 6.8 rlcompleter --- GNU readline . . . . 407 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . 生成管理密码的安全随机数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 16 通用操作系统服务 513 16.1 os --- 多种操作系统接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 16.2 io --- 处理流的核心工具0 码力 | 1927 页 | 9.69 MB | 9 月前3
Python 标准库参考指南 3.8.20 因特网字符串预备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 6.7 readline --- GNU readline 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 6.8 rlcompleter --- GNU readline . . . . 407 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . 生成管理密码的安全随机数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 16 通用操作系统服务 513 16.1 os --- 多种操作系统接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 16.2 io --- 处理流的核心工具0 码力 | 1927 页 | 9.69 MB | 9 月前3
共 107 条
- 1
- 2
- 3
- 4
- 5
- 6
- 11













