 PolarDB开源生态介绍 - 杭州Meetup 2022.10.15PolarDB开源生态介绍 阿里云 digoal为什么开源是未来?阿里巴巴开源缩略图数据库开源大图PolarDB开源云原生分布式数据库家族 : 兼容MySQL&PostgreSQL用户 生态伙伴 人才 降本提效 团队成长 商业服务 用户合作 • 联合实验室 PolarDB云原生分布式开源数据库产品 高校合作 • 课程合作 • 科研项目合作 • 工作组 高校 协同育人、教学优化成果 参与社区分享 • 编程之夏 • 黑客松 开源课程: (学习、实验、评 测、认证、实践、 代码协作) • 训练营 • 电子书 • 评测局 • 开源认证考试 • 开源学堂 • 内核课程 PolarDB开源社区 (2W+用户) github、官网、钉钉、微信、B站、知乎、csdn、... • 峰会 • 大咖说.对话开源 • meetup • 荣誉墙 技能栏目: 曝光流量 • SIG • Issue 开源代码协作 • 理事会 • 人才发展委员会 • 技术委员会 开源社区治理 • 联合解决方案|产品 • OxM发型版 • 数据库管理产品 • 数据迁移、联邦产品 生态伙伴合作 高校合作 学习、分享、比赛、贡献 服务客户 开源共建 社区运营 生态建设 获得生态 商业服务 使用开源 PolarDB 开源学习 开源共建 人才招聘 产品适配 OxM0 码力 | 7 页 | 1.45 MB | 6 月前3 PolarDB开源生态介绍 - 杭州Meetup 2022.10.15PolarDB开源生态介绍 阿里云 digoal为什么开源是未来?阿里巴巴开源缩略图数据库开源大图PolarDB开源云原生分布式数据库家族 : 兼容MySQL&PostgreSQL用户 生态伙伴 人才 降本提效 团队成长 商业服务 用户合作 • 联合实验室 PolarDB云原生分布式开源数据库产品 高校合作 • 课程合作 • 科研项目合作 • 工作组 高校 协同育人、教学优化成果 参与社区分享 • 编程之夏 • 黑客松 开源课程: (学习、实验、评 测、认证、实践、 代码协作) • 训练营 • 电子书 • 评测局 • 开源认证考试 • 开源学堂 • 内核课程 PolarDB开源社区 (2W+用户) github、官网、钉钉、微信、B站、知乎、csdn、... • 峰会 • 大咖说.对话开源 • meetup • 荣誉墙 技能栏目: 曝光流量 • SIG • Issue 开源代码协作 • 理事会 • 人才发展委员会 • 技术委员会 开源社区治理 • 联合解决方案|产品 • OxM发型版 • 数据库管理产品 • 数据迁移、联邦产品 生态伙伴合作 高校合作 学习、分享、比赛、贡献 服务客户 开源共建 社区运营 生态建设 获得生态 商业服务 使用开源 PolarDB 开源学习 开源共建 人才招聘 产品适配 OxM0 码力 | 7 页 | 1.45 MB | 6 月前3
 Curve设计要点网易内部线上无故障稳定运行一年多,线上异常演练 • 已开源 • github主页: https://opencurve.github.io/ • github代码仓库: https://github.com/opencurve/curve 概述背景 01 02 03 04 总体设计 系统特性 近期规划背景 • 多个存储软件:SDFS、NEFS、NBS • 已有的开源软件:Ceph • 不能胜任性能、延迟敏感的场景 对象存储,不限制数量 异步快照、增量快照 从快照/镜像克隆 ( lazy/非lazy ) 从快照回滚数据组织形式 • 底层 可用性 / 可靠性 扩展性 / 负载均衡 向上提供无差别文件流 • Application 块/对象/EC等 感知具体格式 提供不同文件类型支撑不同上层应用数据组织形式 • PageFile/AppendFile/AppendECFile • Segment 多个连续地址空间chunk(物理文件)的聚合数据组织形式 • CopySet • 逻辑概念 • 减少元数据数量 • 数据放置的基本单元 • 提高数据可靠性 • 包含多个chunk • 减少复制组数量 类似Ceph中的PG 「Copysets: Reducing the Frequency of Data Loss in Cloud Storage」数据组织形式 • PageFile • 地址空间到—>chunk:0 码力 | 35 页 | 2.03 MB | 6 月前3 Curve设计要点网易内部线上无故障稳定运行一年多,线上异常演练 • 已开源 • github主页: https://opencurve.github.io/ • github代码仓库: https://github.com/opencurve/curve 概述背景 01 02 03 04 总体设计 系统特性 近期规划背景 • 多个存储软件:SDFS、NEFS、NBS • 已有的开源软件:Ceph • 不能胜任性能、延迟敏感的场景 对象存储,不限制数量 异步快照、增量快照 从快照/镜像克隆 ( lazy/非lazy ) 从快照回滚数据组织形式 • 底层 可用性 / 可靠性 扩展性 / 负载均衡 向上提供无差别文件流 • Application 块/对象/EC等 感知具体格式 提供不同文件类型支撑不同上层应用数据组织形式 • PageFile/AppendFile/AppendECFile • Segment 多个连续地址空间chunk(物理文件)的聚合数据组织形式 • CopySet • 逻辑概念 • 减少元数据数量 • 数据放置的基本单元 • 提高数据可靠性 • 包含多个chunk • 减少复制组数量 类似Ceph中的PG 「Copysets: Reducing the Frequency of Data Loss in Cloud Storage」数据组织形式 • PageFile • 地址空间到—>chunk:0 码力 | 35 页 | 2.03 MB | 6 月前3
 CurveFS方案设计2021-03-30 李小翠 增加快照部分 2021-04-13 李小翠、陈威 补充元数据数据结构 2021-04-19 李小翠、吴汉卿、许超杰等 补充文件空间分配,讨论与确认 背景 调研 开源fs 性能对比 可行性分析 方案对比 对比结论 架构设计 卷和文件系统 元数据架构 文件系统快照 方案一:文件/目录级别快照 方案二:文件系统快照 关键点 元数据设计 数据结构 索引设计 件系统,其中高性能主要是适配云原生数据库的场景。当前Curve是实现了块存储,向上提供块设备服务,CurveFS会基于此实现。第一阶段的目标是实现 满足数据库场景的文件接口。 调研 开源fs 当前对已有的开源分布式文件系统进行了调研,主要包括系统架构,元数据内存结构,元数据持久化,调研文档如下: chubaofs: ChubaoFS© XXX Page 3 of 14 1. 2. 关键点 mds volume 文件空间管理 文件系统的元数据所在的copyset分配策略(前期可以考虑都分配到同一个copyset上) metaserver inode/dentry的内存组织形式 数据持久化 client curvefs 的 client 开发 快照逻辑 各接口实现元数据交互流程 元数据设计 元数据设计分以下几个部分 inode 和 dentry 的数据结构(0 码力 | 14 页 | 619.32 KB | 6 月前3 CurveFS方案设计2021-03-30 李小翠 增加快照部分 2021-04-13 李小翠、陈威 补充元数据数据结构 2021-04-19 李小翠、吴汉卿、许超杰等 补充文件空间分配,讨论与确认 背景 调研 开源fs 性能对比 可行性分析 方案对比 对比结论 架构设计 卷和文件系统 元数据架构 文件系统快照 方案一:文件/目录级别快照 方案二:文件系统快照 关键点 元数据设计 数据结构 索引设计 件系统,其中高性能主要是适配云原生数据库的场景。当前Curve是实现了块存储,向上提供块设备服务,CurveFS会基于此实现。第一阶段的目标是实现 满足数据库场景的文件接口。 调研 开源fs 当前对已有的开源分布式文件系统进行了调研,主要包括系统架构,元数据内存结构,元数据持久化,调研文档如下: chubaofs: ChubaoFS© XXX Page 3 of 14 1. 2. 关键点 mds volume 文件空间管理 文件系统的元数据所在的copyset分配策略(前期可以考虑都分配到同一个copyset上) metaserver inode/dentry的内存组织形式 数据持久化 client curvefs 的 client 开发 快照逻辑 各接口实现元数据交互流程 元数据设计 元数据设计分以下几个部分 inode 和 dentry 的数据结构(0 码力 | 14 页 | 619.32 KB | 6 月前3
 Curve核心组件之mds – 网易数帆是高性能、高可用、高可靠的分布式存储系统 • 高性能、低延迟 • 可支撑储场景:块存储、对象存储、云原生数据库、EC等 • 当前实现了高性能块存储,对接OpenStack和 K8s 网易内部线上无故障稳定运行一年多 • 已开源 • github主页: https://opencurve.github.io/ • github代码仓库: https://github.com/opencurve/curve 概述整体架构 心跳模块。跟chunkserver进行交互,收集chunkserver上的负载信息、 copyset信息等。 • Scheduler: 调度模块。用于自动容错和负载均衡。TOPOLOGY topology用于管理和组织机器,利用底层机器的放置、网络的规划以面向业务提供如下功能和非功能需求。 1. 故障域的隔离:比如副本的放置分布在不同机器,不同机架,或是不同的交换机下面。 2. 隔离和共享:不同用户的数据可以实现固定物理资源的隔离和共享。0 码力 | 23 页 | 1.74 MB | 6 月前3 Curve核心组件之mds – 网易数帆是高性能、高可用、高可靠的分布式存储系统 • 高性能、低延迟 • 可支撑储场景:块存储、对象存储、云原生数据库、EC等 • 当前实现了高性能块存储,对接OpenStack和 K8s 网易内部线上无故障稳定运行一年多 • 已开源 • github主页: https://opencurve.github.io/ • github代码仓库: https://github.com/opencurve/curve 概述整体架构 心跳模块。跟chunkserver进行交互,收集chunkserver上的负载信息、 copyset信息等。 • Scheduler: 调度模块。用于自动容错和负载均衡。TOPOLOGY topology用于管理和组织机器,利用底层机器的放置、网络的规划以面向业务提供如下功能和非功能需求。 1. 故障域的隔离:比如副本的放置分布在不同机器,不同机架,或是不同的交换机下面。 2. 隔离和共享:不同用户的数据可以实现固定物理资源的隔离和共享。0 码力 | 23 页 | 1.74 MB | 6 月前3
 Curve文件系统元数据管理3. 4. Inode 1、设计一个分布式文件系统需要考虑的点: 2、其他文件系统的调研总结 3、各内存结构体 4、curve文件系统的元数据内存组织 4.1 inode定义: 4.2 dentry的定义: 4.3 内存组织 5 元数据分片 5.1 分片方式一:inode和dentry都按照parentid分片 5.1.1 场景分析 查找:查找/A/C。 创建:/A/C不在,创建/A/C 3、各内存结构体 时间复杂度 空间复杂度 特点 可用实现 Btree 一个节点上保存多条数据,减少树的层次(4~5层),方便从盘上读取数据,减少去盘上读取次数。适合在盘上和内存组织目录树。 google,https://github.com/abseil/abseil-cpp/tree/master/absl/c ontainer 实现了btree map和btree set,(Apache)。 有关,最理想可以达到O(1)复杂度,最差O(n)复杂度。 c++ stl unordered_map moose,使用c实现 4、curve文件系统的元数据内存组织 curve文件系统元数据主要有3个类型,inode, dentry, 。 extent 4.1 inode定义: inode定义见:curve文件系统元数据proto(代码接口定义,已实现)©0 码力 | 24 页 | 204.67 KB | 6 月前3 Curve文件系统元数据管理3. 4. Inode 1、设计一个分布式文件系统需要考虑的点: 2、其他文件系统的调研总结 3、各内存结构体 4、curve文件系统的元数据内存组织 4.1 inode定义: 4.2 dentry的定义: 4.3 内存组织 5 元数据分片 5.1 分片方式一:inode和dentry都按照parentid分片 5.1.1 场景分析 查找:查找/A/C。 创建:/A/C不在,创建/A/C 3、各内存结构体 时间复杂度 空间复杂度 特点 可用实现 Btree 一个节点上保存多条数据,减少树的层次(4~5层),方便从盘上读取数据,减少去盘上读取次数。适合在盘上和内存组织目录树。 google,https://github.com/abseil/abseil-cpp/tree/master/absl/c ontainer 实现了btree map和btree set,(Apache)。 有关,最理想可以达到O(1)复杂度,最差O(n)复杂度。 c++ stl unordered_map moose,使用c实现 4、curve文件系统的元数据内存组织 curve文件系统元数据主要有3个类型,inode, dentry, 。 extent 4.1 inode定义: inode定义见:curve文件系统元数据proto(代码接口定义,已实现)©0 码力 | 24 页 | 204.67 KB | 6 月前3
 Curve核心组件之snapshotcloneclone Task user 快照元数据 2.创建内部快照 5.删除内部快照 快照数据 1.发起快照 SnapshotCloneServer 6.删除内部快照数据快照的元数据和数据组织 字段 类型 说明 uuid string 快照唯一Id user string 所属用户 fileName string 快照目标卷名 snapshotName string 快照名 seqNum segment的size fileLength uint64_t 卷的大小 time uint64_t 快照创建时间 status enum 快照的创建状态 Etcd中的快照元数据:快照的元数据和数据组织 • fileInfo 快照目的卷的卷名等信息 • chunkMap 快照chunk映射表 MetaObject: • 保存完整的chunk数据,大小为一个 Chunk的大小,即16MB • 打快照时读取当前目标卷的所有快照的全 部metaObject • 根据本快照的chunk映射表,判断当前的 快照chunk是否需要转储 增量转储原理:快照在CHUNKSERVER上的数据组织  快照chunk和普通chunk,都是 ChunkServer上的ext4文件系统中 的文件,称为SnapFile和ChunkFile;  SnapFile 与ChunkFile是同构的0 码力 | 23 页 | 1.32 MB | 6 月前3 Curve核心组件之snapshotcloneclone Task user 快照元数据 2.创建内部快照 5.删除内部快照 快照数据 1.发起快照 SnapshotCloneServer 6.删除内部快照数据快照的元数据和数据组织 字段 类型 说明 uuid string 快照唯一Id user string 所属用户 fileName string 快照目标卷名 snapshotName string 快照名 seqNum segment的size fileLength uint64_t 卷的大小 time uint64_t 快照创建时间 status enum 快照的创建状态 Etcd中的快照元数据:快照的元数据和数据组织 • fileInfo 快照目的卷的卷名等信息 • chunkMap 快照chunk映射表 MetaObject: • 保存完整的chunk数据,大小为一个 Chunk的大小,即16MB • 打快照时读取当前目标卷的所有快照的全 部metaObject • 根据本快照的chunk映射表,判断当前的 快照chunk是否需要转储 增量转储原理:快照在CHUNKSERVER上的数据组织  快照chunk和普通chunk,都是 ChunkServer上的ext4文件系统中 的文件,称为SnapFile和ChunkFile;  SnapFile 与ChunkFile是同构的0 码力 | 23 页 | 1.32 MB | 6 月前3
 CurveFS Client 概要设计Page 10 of 11 接口设计 相关接口设计,见curve文件系统元数据proto(代码接口定义,已实现) Cache设计 Client的重要部分,就是上述这些cache的组织,基于以下几点考虑cache的组织方式: 1.由于cache不命中情况下,损失了cache查找这部分时间,因此,应当选用cache查找尽可能快的结构,这里考虑采用hash_map。 2. 由于fuse一次moun0 码力 | 11 页 | 487.92 KB | 6 月前3 CurveFS Client 概要设计Page 10 of 11 接口设计 相关接口设计,见curve文件系统元数据proto(代码接口定义,已实现) Cache设计 Client的重要部分,就是上述这些cache的组织,基于以下几点考虑cache的组织方式: 1.由于cache不命中情况下,损失了cache查找这部分时间,因此,应当选用cache查找尽可能快的结构,这里考虑采用hash_map。 2. 由于fuse一次moun0 码力 | 11 页 | 487.92 KB | 6 月前3
 curvefs client删除文件和目录功能设计那么需要实现类似freelist一样的东西来保存当前已经"被删"的inode id 由于inode放在原地,那么由于dentry已经被删除,那么查询工具就较为复杂,不能复用原有的client逻辑,需要组织成moosefs那样的meta文件系统可能需要引入额外的复杂性,但是依然可以实现简单的 工具查询。 由于该方案,删除的inode是分散于每个partition中,那么查询工具可能需要遍历所有partion去查询所有的删除inode。 ,如果长时间收不到client refresh session,即session超时,此时清理该client的所有文件打开的session记录。 工具实现: 工具需要实现查询各个parition,组织展示trash中数据; 工具实现强制清理trash的接口; S3实际删除部分: S3中对象的删除需要在metaserver中调用,而不是client调用,实现上删除接口应该不需要处理inode,0 码力 | 15 页 | 325.42 KB | 6 月前3 curvefs client删除文件和目录功能设计那么需要实现类似freelist一样的东西来保存当前已经"被删"的inode id 由于inode放在原地,那么由于dentry已经被删除,那么查询工具就较为复杂,不能复用原有的client逻辑,需要组织成moosefs那样的meta文件系统可能需要引入额外的复杂性,但是依然可以实现简单的 工具查询。 由于该方案,删除的inode是分散于每个partition中,那么查询工具可能需要遍历所有partion去查询所有的删除inode。 ,如果长时间收不到client refresh session,即session超时,此时清理该client的所有文件打开的session记录。 工具实现: 工具需要实现查询各个parition,组织展示trash中数据; 工具实现强制清理trash的接口; S3实际删除部分: S3中对象的删除需要在metaserver中调用,而不是client调用,实现上删除接口应该不需要处理inode,0 码力 | 15 页 | 325.42 KB | 6 月前3
 Curve质量监控与运维 - 网易数帆是网易针对块存储、对象存储、云原生数据库、EC等 多种场景自研的分布式存储系统:  高性能、低延迟  当前实现了高性能块存储,对接OpenStack和 K8s  网易内部线上无故障稳定运行近两年  已完整开源 • github主页: https://opencurve.github.io/ • github代码仓库: https://github.com/opencurve/curve Curve 使用部署在docker的三个组件进行监控指标的处 理与展示:  Prometheus——面向云原生应用程序的开源 的监控&报警工具,curve利用它进行监控指标 的采集与存储。  Daily reporter——python脚本,定时从 Grafana获取指定集群的图表,生成集群监控 日报,并通过邮件发送。  Grafana——开源的度量分析和可视化工具, curve利用它进行数据可视化展示。 20/33监控指标(metric)的生成  bvar::PerSecond : 获得某个bvar在一段时间内平均每秒 的累加值。PerSecond也是会自动更新的衍生变量。 21/33监控指标的采集与存储 Curve使用开源的监控工具Prometheus采集监控指标,大致 流程为: 1. 部署监控时,Curve根据集群信息生成配置文件, 指定了 Prometheus的监控目标(包括Client、MDS、 Chun0 码力 | 33 页 | 2.64 MB | 6 月前3 Curve质量监控与运维 - 网易数帆是网易针对块存储、对象存储、云原生数据库、EC等 多种场景自研的分布式存储系统:  高性能、低延迟  当前实现了高性能块存储,对接OpenStack和 K8s  网易内部线上无故障稳定运行近两年  已完整开源 • github主页: https://opencurve.github.io/ • github代码仓库: https://github.com/opencurve/curve Curve 使用部署在docker的三个组件进行监控指标的处 理与展示:  Prometheus——面向云原生应用程序的开源 的监控&报警工具,curve利用它进行监控指标 的采集与存储。  Daily reporter——python脚本,定时从 Grafana获取指定集群的图表,生成集群监控 日报,并通过邮件发送。  Grafana——开源的度量分析和可视化工具, curve利用它进行数据可视化展示。 20/33监控指标(metric)的生成  bvar::PerSecond : 获得某个bvar在一段时间内平均每秒 的累加值。PerSecond也是会自动更新的衍生变量。 21/33监控指标的采集与存储 Curve使用开源的监控工具Prometheus采集监控指标,大致 流程为: 1. 部署监控时,Curve根据集群信息生成配置文件, 指定了 Prometheus的监控目标(包括Client、MDS、 Chun0 码力 | 33 页 | 2.64 MB | 6 月前3
 Curve 分布式存储设计Curve块存储将虚拟块设备 映射到文件 2. 每个文件包含的chunk分散 在集群的存储节点 3. chunkserver按照故障域分组 4. copyset中的节点属于不同的 故障域 数据组织Curve块存储 IO流程Curve块存储 1. chunkserver负责数据的存储 2. RAFT协议保持数据的一致 性 3. chunkfile pool降低元数据开 销 Chunkserver服务Curve块存储0 码力 | 20 页 | 4.13 MB | 6 月前3 Curve 分布式存储设计Curve块存储将虚拟块设备 映射到文件 2. 每个文件包含的chunk分散 在集群的存储节点 3. chunkserver按照故障域分组 4. copyset中的节点属于不同的 故障域 数据组织Curve块存储 IO流程Curve块存储 1. chunkserver负责数据的存储 2. RAFT协议保持数据的一致 性 3. chunkfile pool降低元数据开 销 Chunkserver服务Curve块存储0 码力 | 20 页 | 4.13 MB | 6 月前3
共 19 条
- 1
- 2













