 Curve支持S3 数据缓存方案背景 整体设计 元数据采用2层索引 对象名设计 读写缓存分离 缓存层级 对外接口 后台刷数据线程 本地磁盘缓存 关键数据结构 详细设计 Write流程 Read流程 ReleaseCache流程 Flush流程 FsSync流程 后台流程 poc测试验证 背景 基于s3的daemon版本基于基本的性能测试发现性能非常差。具体数据如下: 通过日志初步分析有2点原因© XXX Page 3操作过多 2.对于4k 小io每次都要和s3交互,导致性能非常差。 因此需要通过Cache模块解决以上2个问题。 整体设计 整个dataCache的设计思路,在写场景下能将数据尽可能的合并后flush到s3上,在读场景上,能够预读1个block大小,减少顺序读对于底层s3的访问频次。从这个思路上该缓存方案主要针对的场景是顺序写和顺序 读,而对于随机写和随机读来说也会有一定性能提升,但效果可能不会太好。 +inodeId。增加inodeId的目的是为了后续从对象存储上遍历,反查文件,这里就要求inodeId是永远不可重复。 读写缓存分离 读写缓存的设计采用的是读写缓存分离的方案。 写缓存一旦flush即释放,读缓存采用可设置的策略进行淘汰(默认LRU),对于小io进行block级别的预读。 即读写缓存相互没影响不相关, 缓存层级 缓存层级分为fs->file->chunk->datacache0 码力 | 9 页 | 179.72 KB | 6 月前3 Curve支持S3 数据缓存方案背景 整体设计 元数据采用2层索引 对象名设计 读写缓存分离 缓存层级 对外接口 后台刷数据线程 本地磁盘缓存 关键数据结构 详细设计 Write流程 Read流程 ReleaseCache流程 Flush流程 FsSync流程 后台流程 poc测试验证 背景 基于s3的daemon版本基于基本的性能测试发现性能非常差。具体数据如下: 通过日志初步分析有2点原因© XXX Page 3操作过多 2.对于4k 小io每次都要和s3交互,导致性能非常差。 因此需要通过Cache模块解决以上2个问题。 整体设计 整个dataCache的设计思路,在写场景下能将数据尽可能的合并后flush到s3上,在读场景上,能够预读1个block大小,减少顺序读对于底层s3的访问频次。从这个思路上该缓存方案主要针对的场景是顺序写和顺序 读,而对于随机写和随机读来说也会有一定性能提升,但效果可能不会太好。 +inodeId。增加inodeId的目的是为了后续从对象存储上遍历,反查文件,这里就要求inodeId是永远不可重复。 读写缓存分离 读写缓存的设计采用的是读写缓存分离的方案。 写缓存一旦flush即释放,读缓存采用可设置的策略进行淘汰(默认LRU),对于小io进行block级别的预读。 即读写缓存相互没影响不相关, 缓存层级 缓存层级分为fs->file->chunk->datacache0 码力 | 9 页 | 179.72 KB | 6 月前3
 TiDB v8.2 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1158 11.3.3 SQL 优化流程 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · Y Y Y Y Y Y 日期和时间类型 Y Y Y Y Y Y Y Y Y Y 字符串类型 Y Y Y Y Y Y Y Y Y Y JSON 类型 Y Y Y Y Y E E E E E 控制流程函数 Y Y Y Y Y Y Y Y Y Y 字符串函数 Y Y Y Y Y Y Y Y Y Y 数值函数与操作符 Y Y Y Y Y Y Y Y Y Y 日期和时间函数 Y Y Y Y Y Y 业务同时,你可能需要处理一些 OLAP 业务,同时还需要避免 OLAP 查询影响 OLTP 业务 性能,确保系统的整体稳定性。 • 简化 ETL 技术栈 当需要加工的数据量为中等规模(100 TB 以内)、数据加工调度流程相对简单、并发度不高(10 以内) 时,你可能希望简化技术栈,替换原本需要使用多个不同技术栈的 OLTP、ETL 和 OLAP 系统,使用一个数 据库同时满足交易系统以及分析系统的需求,降低技术门槛和运维人员需求。0 码力 | 4987 页 | 102.91 MB | 10 月前3 TiDB v8.2 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1158 11.3.3 SQL 优化流程 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · Y Y Y Y Y Y 日期和时间类型 Y Y Y Y Y Y Y Y Y Y 字符串类型 Y Y Y Y Y Y Y Y Y Y JSON 类型 Y Y Y Y Y E E E E E 控制流程函数 Y Y Y Y Y Y Y Y Y Y 字符串函数 Y Y Y Y Y Y Y Y Y Y 数值函数与操作符 Y Y Y Y Y Y Y Y Y Y 日期和时间函数 Y Y Y Y Y Y 业务同时,你可能需要处理一些 OLAP 业务,同时还需要避免 OLAP 查询影响 OLTP 业务 性能,确保系统的整体稳定性。 • 简化 ETL 技术栈 当需要加工的数据量为中等规模(100 TB 以内)、数据加工调度流程相对简单、并发度不高(10 以内) 时,你可能希望简化技术栈,替换原本需要使用多个不同技术栈的 OLTP、ETL 和 OLAP 系统,使用一个数 据库同时满足交易系统以及分析系统的需求,降低技术门槛和运维人员需求。0 码力 | 4987 页 | 102.91 MB | 10 月前3
 TiDB v8.4 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1224 11.3.3 SQL 优化流程 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 字符串类型 Y Y Y Y Y Y Y Y Y Y Y Y JSON 类型 Y Y Y Y Y Y Y E E E E E 向量数据类型 E N N N N N N N N N N N 控制流程函数 Y Y Y Y Y Y Y Y Y Y Y Y 字符串函数 Y Y Y Y Y Y Y Y Y Y Y Y 数值函数与操作符 Y Y Y Y Y Y Y Y Y Y Y Y 日期和时间函数 业务同时,你可能需要处理一些 OLAP 业务,同时还需要避免 OLAP 查询影响 OLTP 业务 性能,确保系统的整体稳定性。 • 简化 ETL 技术栈 当需要加工的数据量为中等规模(100 TB 以内)、数据加工调度流程相对简单、并发度不高(10 以内) 时,你可能希望简化技术栈,替换原本需要使用多个不同技术栈的 OLTP、ETL 和 OLAP 系统,使用一个数 据库同时满足交易系统以及分析系统的需求,降低技术门槛和运维人员需求。0 码力 | 5072 页 | 104.05 MB | 10 月前3 TiDB v8.4 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1224 11.3.3 SQL 优化流程 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 字符串类型 Y Y Y Y Y Y Y Y Y Y Y Y JSON 类型 Y Y Y Y Y Y Y E E E E E 向量数据类型 E N N N N N N N N N N N 控制流程函数 Y Y Y Y Y Y Y Y Y Y Y Y 字符串函数 Y Y Y Y Y Y Y Y Y Y Y Y 数值函数与操作符 Y Y Y Y Y Y Y Y Y Y Y Y 日期和时间函数 业务同时,你可能需要处理一些 OLAP 业务,同时还需要避免 OLAP 查询影响 OLTP 业务 性能,确保系统的整体稳定性。 • 简化 ETL 技术栈 当需要加工的数据量为中等规模(100 TB 以内)、数据加工调度流程相对简单、并发度不高(10 以内) 时,你可能希望简化技术栈,替换原本需要使用多个不同技术栈的 OLTP、ETL 和 OLAP 系统,使用一个数 据库同时满足交易系统以及分析系统的需求,降低技术门槛和运维人员需求。0 码力 | 5072 页 | 104.05 MB | 10 月前3
 TiDB v8.5 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1483 11.3.3 SQL 优化流程 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 字符串类型 Y Y Y Y Y Y Y Y Y Y Y Y JSON 类型 Y Y Y Y Y Y Y E E E E E 向量数据类型 E N N N N N N N N N N N 控制流程函数 Y Y Y Y Y Y Y Y Y Y Y Y 字符串函数 Y Y Y Y Y Y Y Y Y Y Y Y 数值函数与操作符 Y Y Y Y Y Y Y Y Y Y Y Y 日期和时间函数 OLAP 业务,同时还需要避免 OLAP 查询影响 OLTP 业务 性能,确保系统的整体稳定性。 100 • 简化 ETL 技术栈 当需要加工的数据量为中等规模(100 TB 以内)、数据加工调度流程相对简单、并发度不高(10 以内) 时,你可能希望简化技术栈,替换原本需要使用多个不同技术栈的 OLTP、ETL 和 OLAP 系统,使用一个数 据库同时满足交易系统以及分析系统的需求,降低技术门槛和运维人员需求。0 码力 | 5095 页 | 104.54 MB | 10 月前3 TiDB v8.5 中文手册· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1483 11.3.3 SQL 优化流程 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 字符串类型 Y Y Y Y Y Y Y Y Y Y Y Y JSON 类型 Y Y Y Y Y Y Y E E E E E 向量数据类型 E N N N N N N N N N N N 控制流程函数 Y Y Y Y Y Y Y Y Y Y Y Y 字符串函数 Y Y Y Y Y Y Y Y Y Y Y Y 数值函数与操作符 Y Y Y Y Y Y Y Y Y Y Y Y 日期和时间函数 OLAP 业务,同时还需要避免 OLAP 查询影响 OLTP 业务 性能,确保系统的整体稳定性。 100 • 简化 ETL 技术栈 当需要加工的数据量为中等规模(100 TB 以内)、数据加工调度流程相对简单、并发度不高(10 以内) 时,你可能希望简化技术栈,替换原本需要使用多个不同技术栈的 OLTP、ETL 和 OLAP 系统,使用一个数 据库同时满足交易系统以及分析系统的需求,降低技术门槛和运维人员需求。0 码力 | 5095 页 | 104.54 MB | 10 月前3
 NJSD eBPF 技术文档 - 0924版本差异⼤,延迟⾼FUSE⽂件IO读写流程 • 场景1 pytorch example word_language_model • LOOKUP inode 返回 fstat + timeout设置 • OPEN 打开 inode返回ok • GETATTR 返回fstat • READ inode 读取的内容不等从16KB到128KB • 关闭⽂件时会发送FLUSH请求和RELEASE请求 timeout设置 • WRITE 写⼊内容从0~16KB不等 • SETATTR inode 根据UID,ATIME,CTIME,length来设置属性 • 关闭⽂件时会发送FLUSH请求和RELEASE请求FUSE⽂件IO读写流程FUSE的IO路径及瓶颈分析 • 对⽐测试 • ⽂件访问测试直接访问ext4 • 通过FUSE访问passthrough_ll底层ext4 • 内核调⽤延迟测试 • fuse_ll_ops开销10us-基于FUSE的优化框架 • 框架优化的要点 • 共享inode cache • 共享data cache的映射 • GETATTR流程 • ⽂件读取流程 • 相关⼯作 • extFUSE • google android12 passthrough什么是eBPF • ebpf是不同环境下内核配置, 调试,监控⼯具 • map映射0 码力 | 20 页 | 7.40 MB | 6 月前3 NJSD eBPF 技术文档 - 0924版本差异⼤,延迟⾼FUSE⽂件IO读写流程 • 场景1 pytorch example word_language_model • LOOKUP inode 返回 fstat + timeout设置 • OPEN 打开 inode返回ok • GETATTR 返回fstat • READ inode 读取的内容不等从16KB到128KB • 关闭⽂件时会发送FLUSH请求和RELEASE请求 timeout设置 • WRITE 写⼊内容从0~16KB不等 • SETATTR inode 根据UID,ATIME,CTIME,length来设置属性 • 关闭⽂件时会发送FLUSH请求和RELEASE请求FUSE⽂件IO读写流程FUSE的IO路径及瓶颈分析 • 对⽐测试 • ⽂件访问测试直接访问ext4 • 通过FUSE访问passthrough_ll底层ext4 • 内核调⽤延迟测试 • fuse_ll_ops开销10us-基于FUSE的优化框架 • 框架优化的要点 • 共享inode cache • 共享data cache的映射 • GETATTR流程 • ⽂件读取流程 • 相关⼯作 • extFUSE • google android12 passthrough什么是eBPF • ebpf是不同环境下内核配置, 调试,监控⼯具 • map映射0 码力 | 20 页 | 7.40 MB | 6 月前3
 TiDB中文技术文档关键字和保留字 用户变量 表达式语法 注释语法 字符集和时区 字符集支持 字符集配置 时区 数据类型 日期和时间类型 基本数据类型 函数和操作符 函数和操作符概述 表达式求值的类型转换 操作符 控制流程函数 - 2 - 本文档使用 书栈(BookStack.CN) 构建 字符串函数 数值函数与操作符 日期和时间函数 位函数和操作符 Cast 函数和操作符 加密和压缩函数 信息函数 JSON 函数 中文技术文档 目录 README - 7 - 本文档使用 书栈(BookStack.CN) 构建 枚举类型 集合类型 数据类型默认值 函数和操作符 函数和操作符概述 表达式求值的类型转换 操作符 控制流程函数 字符串函数 数值函数与操作符 日期和时间函数 位函数和操作符 Cast 函数和操作符 加密和压缩函数 信息函数 JSON 函数 GROUP BY 聚合函数 其他函数 精度数学 SQL 语句语法 设定的是5分钟。 修改了授权表,如果需要立即生效,可以手动调用: 连接验证 请求验证 生效时机 TiDB 访问权限管理 - 52 - 本文档使用 书栈(BookStack.CN) 构建 1. flush privileges; 一些使用频率偏低的权限当前版本的实现中还未做检查,比如 FILE/USAGE/SHUTDOWN/EXECUTE/PROCESS/INDEX 等等,未来会陆续完善。 现阶段对权限的支持还没有做到0 码力 | 444 页 | 4.89 MB | 6 月前3 TiDB中文技术文档关键字和保留字 用户变量 表达式语法 注释语法 字符集和时区 字符集支持 字符集配置 时区 数据类型 日期和时间类型 基本数据类型 函数和操作符 函数和操作符概述 表达式求值的类型转换 操作符 控制流程函数 - 2 - 本文档使用 书栈(BookStack.CN) 构建 字符串函数 数值函数与操作符 日期和时间函数 位函数和操作符 Cast 函数和操作符 加密和压缩函数 信息函数 JSON 函数 中文技术文档 目录 README - 7 - 本文档使用 书栈(BookStack.CN) 构建 枚举类型 集合类型 数据类型默认值 函数和操作符 函数和操作符概述 表达式求值的类型转换 操作符 控制流程函数 字符串函数 数值函数与操作符 日期和时间函数 位函数和操作符 Cast 函数和操作符 加密和压缩函数 信息函数 JSON 函数 GROUP BY 聚合函数 其他函数 精度数学 SQL 语句语法 设定的是5分钟。 修改了授权表,如果需要立即生效,可以手动调用: 连接验证 请求验证 生效时机 TiDB 访问权限管理 - 52 - 本文档使用 书栈(BookStack.CN) 构建 1. flush privileges; 一些使用频率偏低的权限当前版本的实现中还未做检查,比如 FILE/USAGE/SHUTDOWN/EXECUTE/PROCESS/INDEX 等等,未来会陆续完善。 现阶段对权限的支持还没有做到0 码力 | 444 页 | 4.89 MB | 6 月前3
 CurveFS对接S3方案设计2021-05-20 胡遥 初稿 2021-07-20 胡遥 细化write和read流程 整体架构 整体思路 接口和关键数据结构 mds.proto client端数据结构 metaserver.proto space相关数据结构和proto 关键流程 init流程 write流程 read流程 整体架构 S3ClientAdaptor模块:负责将文件数据进行chunk,以及bl 11 整体思路 curvefs对接s3和对接volume主要的区别在于数据持久化和空间分配部分,而元数据的操作尽量保持统一。因此我们涉及到修改client的流程主要在read/write/flush,以及空间分配申请(s3不需要释放空间,可 直接删除对应s3 object) 文件首先会按照chunk进行拆分,每个chunk固定64M/1G(待定),chunk内 private: std::atomic CurveFS对接S3方案设计2021-05-20 胡遥 初稿 2021-07-20 胡遥 细化write和read流程 整体架构 整体思路 接口和关键数据结构 mds.proto client端数据结构 metaserver.proto space相关数据结构和proto 关键流程 init流程 write流程 read流程 整体架构 S3ClientAdaptor模块:负责将文件数据进行chunk,以及bl 11 整体思路 curvefs对接s3和对接volume主要的区别在于数据持久化和空间分配部分,而元数据的操作尽量保持统一。因此我们涉及到修改client的流程主要在read/write/flush,以及空间分配申请(s3不需要释放空间,可 直接删除对应s3 object) 文件首先会按照chunk进行拆分,每个chunk固定64M/1G(待定),chunk内 private: std::atomic- chunkId_;© XXX Page 10 of 11 }; 关键流程 关键流程包括S3ClientAdaptor的init,write,read,delete和后台元数据整理以及数据回收流程 init流程 1.将conf中blockSize,chunkSize,metaServer和allocateServer ip保存在S3ClientAdaptor中 0 码力 | 11 页 | 145.77 KB | 6 月前3
 Curve文件系统空间分配方案Curve文件系统空间分配方案(基于块的方案,已实现)© XXX Page 2 of 11 背景 本地文件系统空间分配相关特性 局部性 延迟分配/Allocate-on-flush Inline file/data 空间分配 整体设计 空间分配流程 特殊情况 空间回收 小文件处理 并发问题 文件系统扩容 接口设计 RPC接口 空间分配器接口 背景 根据 ,文件系统基于当前的块进行实现,所以需要 分) 本地文件系统空间分配相关特性 局部性 尽量分配连续的磁盘空间,存储文件的数据。这一特性主要是针对HDD进行的优化,降低磁盘寻道时间。 延迟分配/Allocate-on-flush 在sync/flush之前,尽可能多的积累更多的文件数据块才进行空间分配,一方面可以提高局部性,另一方面可以降低磁盘碎片。 Inline file/data 几百字节的小文件不单独分配磁盘空间,直接把数据存放到文件的元数据中。 ree对所有的free extent进行管理)。 当前设计不考虑持久化问题,空间分配器只作为内存结构,负责空间的分配与回收。在初始化时,扫描文件系统所有inode中已使用的空间。 空间分配流程 在新文件进行空间分配时,随机选择level1中标记为0的块,先预分配给这个文件,但是并不表示这个块被该文件独占。© XXX Page 4 of 11 1. 2. 3. 以下图为0 码力 | 11 页 | 159.17 KB | 6 月前3 Curve文件系统空间分配方案Curve文件系统空间分配方案(基于块的方案,已实现)© XXX Page 2 of 11 背景 本地文件系统空间分配相关特性 局部性 延迟分配/Allocate-on-flush Inline file/data 空间分配 整体设计 空间分配流程 特殊情况 空间回收 小文件处理 并发问题 文件系统扩容 接口设计 RPC接口 空间分配器接口 背景 根据 ,文件系统基于当前的块进行实现,所以需要 分) 本地文件系统空间分配相关特性 局部性 尽量分配连续的磁盘空间,存储文件的数据。这一特性主要是针对HDD进行的优化,降低磁盘寻道时间。 延迟分配/Allocate-on-flush 在sync/flush之前,尽可能多的积累更多的文件数据块才进行空间分配,一方面可以提高局部性,另一方面可以降低磁盘碎片。 Inline file/data 几百字节的小文件不单独分配磁盘空间,直接把数据存放到文件的元数据中。 ree对所有的free extent进行管理)。 当前设计不考虑持久化问题,空间分配器只作为内存结构,负责空间的分配与回收。在初始化时,扫描文件系统所有inode中已使用的空间。 空间分配流程 在新文件进行空间分配时,随机选择level1中标记为0的块,先预分配给这个文件,但是并不表示这个块被该文件独占。© XXX Page 4 of 11 1. 2. 3. 以下图为0 码力 | 11 页 | 159.17 KB | 6 月前3
 Comprehensive Rust(繁体中文). . 27 5.7.1 解決方案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6 基本的控制流程概念 29 6.1 if 表達式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.2 for 58 12.2 解構列舉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 12.3 控制流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 12.4 練習:運算式求值 . . 5 非同步管道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 64 Future 控制流程 332 64.1 加入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 640 码力 | 358 页 | 1.41 MB | 10 月前3 Comprehensive Rust(繁体中文). . 27 5.7.1 解決方案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6 基本的控制流程概念 29 6.1 if 表達式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.2 for 58 12.2 解構列舉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 12.3 控制流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 12.4 練習:運算式求值 . . 5 非同步管道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 64 Future 控制流程 332 64.1 加入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 640 码力 | 358 页 | 1.41 MB | 10 月前3
 Istio控制平面组件原理解析V2通过GRPC双向流,主动推送配置给envoy: ü事件触发 • 当配置有增/删/改事件 ü定时触发 • 可配置环境变量 V2_REFRESH,定时推送配置Mixer——遥测报告 u上报的原始数据 u异步Flush给Adapter u转换成属性词汇 u问题讨论属性词汇 Name Type Description Kubernetes Example source.id string Platform-specific "bc1f172f-b8e3-4ec0-a070-f2f6de38a24f","718"]转换成属性词汇异步Flush到Adapter ü通过Template润色数据 ü使用Go的协程异步Flush到Adapter üAdapter展示数据 ü响应envoy数据处理完成问题讨论 Report流程回顾 üEnvoy异步批量发送数据给Mixer üMixer使用协程池处理Adapter ü处理完成所有Adapter才响应Envoy0 码力 | 30 页 | 9.28 MB | 6 月前3 Istio控制平面组件原理解析V2通过GRPC双向流,主动推送配置给envoy: ü事件触发 • 当配置有增/删/改事件 ü定时触发 • 可配置环境变量 V2_REFRESH,定时推送配置Mixer——遥测报告 u上报的原始数据 u异步Flush给Adapter u转换成属性词汇 u问题讨论属性词汇 Name Type Description Kubernetes Example source.id string Platform-specific "bc1f172f-b8e3-4ec0-a070-f2f6de38a24f","718"]转换成属性词汇异步Flush到Adapter ü通过Template润色数据 ü使用Go的协程异步Flush到Adapter üAdapter展示数据 ü响应envoy数据处理完成问题讨论 Report流程回顾 üEnvoy异步批量发送数据给Mixer üMixer使用协程池处理Adapter ü处理完成所有Adapter才响应Envoy0 码力 | 30 页 | 9.28 MB | 6 月前3
共 191 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20














