 Curve for CNCF MainDatabase services orchestrated in the cloud • Curve can backup / sync data to slave cloud • When master cloud failure happens, Database service can move to the slave cloudData apps(middleware/bigdata/ai) (RAFT) CEPH WRITE SUCCESS majority write successful all write successful READ Leader of copyset Node in PG SLOW STORAGE/DISK FAILURE INFLUENCE without I/O disruption I/O jitter occasionally CAN SYNC SYNC WITH REMOTE DISK SERVER Y NI/O Jitter (vs. Ceph) 3 replicas with 9 nodes cluster each node has 20 x SSD, 2xE5-2660 v4 and 256GB mem FAULTS CASE CURVE I/O JITTER CEPH I/O JITTER COMMENT ONE DISK0 码力 | 21 页 | 4.56 MB | 6 月前3 Curve for CNCF MainDatabase services orchestrated in the cloud • Curve can backup / sync data to slave cloud • When master cloud failure happens, Database service can move to the slave cloudData apps(middleware/bigdata/ai) (RAFT) CEPH WRITE SUCCESS majority write successful all write successful READ Leader of copyset Node in PG SLOW STORAGE/DISK FAILURE INFLUENCE without I/O disruption I/O jitter occasionally CAN SYNC SYNC WITH REMOTE DISK SERVER Y NI/O Jitter (vs. Ceph) 3 replicas with 9 nodes cluster each node has 20 x SSD, 2xE5-2660 v4 and 256GB mem FAULTS CASE CURVE I/O JITTER CEPH I/O JITTER COMMENT ONE DISK0 码力 | 21 页 | 4.56 MB | 6 月前3
 CurveFS Copyset与FS对应关系partition管理的元数据,data partition管理数据。meta partition管理inode和dentry信息。 创建一个文件系统时,如何初始化meta partition? master\cluster.go, chubaofs的文件系统使用volume的来表示,在创建一个文件系统的时候,会创建3个meta partition和10个data partition。chubaofs的data on管理剩下的一直到2^63-1的Inode id。创建meta partition的时候,选择的3个meta node组成一个复制组。如何选择?论文上写的是按照存储节点的memory和disk usage来选的,通常选择内存和disk使用率最低的节点。 并去对应的meta node上去创建对应的meta partition。 如何选择partition的host,通过这个函数去选择。 func0 码力 | 19 页 | 383.29 KB | 6 月前3 CurveFS Copyset与FS对应关系partition管理的元数据,data partition管理数据。meta partition管理inode和dentry信息。 创建一个文件系统时,如何初始化meta partition? master\cluster.go, chubaofs的文件系统使用volume的来表示,在创建一个文件系统的时候,会创建3个meta partition和10个data partition。chubaofs的data on管理剩下的一直到2^63-1的Inode id。创建meta partition的时候,选择的3个meta node组成一个复制组。如何选择?论文上写的是按照存储节点的memory和disk usage来选的,通常选择内存和disk使用率最低的节点。 并去对应的meta node上去创建对应的meta partition。 如何选择partition的host,通过这个函数去选择。 func0 码力 | 19 页 | 383.29 KB | 6 月前3
 Curve质量监控与运维 - 网易数帆CI测试(编译、静态检 查、单元测试、集成测 试、覆盖率80%卡点) 合入master 分支 代码提交流程 异常自动化 测试 混沌测试 (每周一次) CI测试(编译、静态检 查、单元测试、集成测 试、覆盖率80%卡点) 邮件通知 Curve所有代码均在github托管。新 代码需要通过CI测试和code review才 能合入master分支,确保新合入代码 的功能、正确性、规范性等都有基本 的功能、正确性、规范性等都有基本 保障;而每日运行的dailybuild测试在 CI测试基础上增加了异常自动化测试 和混沌测试,确保master分支代码的 bug尽可能早地暴露出来。 通过这种流程,curve可以在一定 程度上保证master分支的稳定性。 master 10/33版本管理 Curve版本命名规则是x.y.z{-后缀}  x为主版本号,每次发布大版本时递增; 大版本一般半年发布一次。  后缀表示版本状态,beta表示测试版本,rc 表示发布候选版本,空白表示正式版。 Curve所有功能开发均在master分支进行,而版本发布则在相应的release分支进行:  从master拉出一个新分支release-x.y,打beta版标签后,提交QA团队测试 ;  beta版的bug修复代码先合入master分支,再cherry-pick到release-x.y分支;  beta版bug修复完成0 码力 | 33 页 | 2.64 MB | 6 月前3 Curve质量监控与运维 - 网易数帆CI测试(编译、静态检 查、单元测试、集成测 试、覆盖率80%卡点) 合入master 分支 代码提交流程 异常自动化 测试 混沌测试 (每周一次) CI测试(编译、静态检 查、单元测试、集成测 试、覆盖率80%卡点) 邮件通知 Curve所有代码均在github托管。新 代码需要通过CI测试和code review才 能合入master分支,确保新合入代码 的功能、正确性、规范性等都有基本 的功能、正确性、规范性等都有基本 保障;而每日运行的dailybuild测试在 CI测试基础上增加了异常自动化测试 和混沌测试,确保master分支代码的 bug尽可能早地暴露出来。 通过这种流程,curve可以在一定 程度上保证master分支的稳定性。 master 10/33版本管理 Curve版本命名规则是x.y.z{-后缀}  x为主版本号,每次发布大版本时递增; 大版本一般半年发布一次。  后缀表示版本状态,beta表示测试版本,rc 表示发布候选版本,空白表示正式版。 Curve所有功能开发均在master分支进行,而版本发布则在相应的release分支进行:  从master拉出一个新分支release-x.y,打beta版标签后,提交QA团队测试 ;  beta版的bug修复代码先合入master分支,再cherry-pick到release-x.y分支;  beta版bug修复完成0 码力 | 33 页 | 2.64 MB | 6 月前3
 Curve文件系统元数据管理append→ master slave协议 overwrite → raft 更适合大文件顺序写 fastcfs 有元数据服务器 inode和dentry放一个结构体。 inode → hashtable(key是ino,全局) dentry → skip list (key是name,每个目录下一个) 计算出来的 binlog,随时间会越来越大 差 DG Master/Slave 一个节点上保存多条数据,减少树的层次(4~5层),方便从盘上读取数据,减少去盘上读取次数。适合在盘上和内存组织目录树。 google,https://github.com/abseil/abseil-cpp/tree/master/absl/c ontainer 实现了btree map和btree set,(Apache)。 google, https://code.google.com/archive/p/cpp-btree/, level db,https://github.com/google/leveldb/blob/master/db/skip list.h,( BSD) libfastcommon,https://github.com/happyfish100/libfastcommon/tr ,(LGPL) ee/master/src hash table O(1)~O(n) O(n) + table 需要0 码力 | 24 页 | 204.67 KB | 6 月前3 Curve文件系统元数据管理append→ master slave协议 overwrite → raft 更适合大文件顺序写 fastcfs 有元数据服务器 inode和dentry放一个结构体。 inode → hashtable(key是ino,全局) dentry → skip list (key是name,每个目录下一个) 计算出来的 binlog,随时间会越来越大 差 DG Master/Slave 一个节点上保存多条数据,减少树的层次(4~5层),方便从盘上读取数据,减少去盘上读取次数。适合在盘上和内存组织目录树。 google,https://github.com/abseil/abseil-cpp/tree/master/absl/c ontainer 实现了btree map和btree set,(Apache)。 google, https://code.google.com/archive/p/cpp-btree/, level db,https://github.com/google/leveldb/blob/master/db/skip list.h,( BSD) libfastcommon,https://github.com/happyfish100/libfastcommon/tr ,(LGPL) ee/master/src hash table O(1)~O(n) O(n) + table 需要0 码力 | 24 页 | 204.67 KB | 6 月前3
 CurveFS方案设计加载:数据量较大的情况下,元数据节点启动较慢;但是元数据使用 master-slave 可以降低 failover 情况下的加载时间 b. 扩展性/可用性/可靠性 扩展性不够,受限于单机的内存和磁盘,只能纵向扩展 可用性足够,由于是 master-slave 的方式,master 以同步方式调用 slave,slave 在内存中也缓存了全部元数据信息 master-slave 多副本数据 CurveFS0 码力 | 14 页 | 619.32 KB | 6 月前3 CurveFS方案设计加载:数据量较大的情况下,元数据节点启动较慢;但是元数据使用 master-slave 可以降低 failover 情况下的加载时间 b. 扩展性/可用性/可靠性 扩展性不够,受限于单机的内存和磁盘,只能纵向扩展 可用性足够,由于是 master-slave 的方式,master 以同步方式调用 slave,slave 在内存中也缓存了全部元数据信息 master-slave 多副本数据 CurveFS0 码力 | 14 页 | 619.32 KB | 6 月前3
 CurveBS IO Processing Flowarchitecture, data organization and topology structure of CURVE. CurveBS uses the central node Metadata Server (MDS) to manage virtual disk mapping and data replicas distribution. Decentralization in CurveBS This section mainly describes how data nodes manage chunk. Each node in the figure represents a data node (ChunkServer). A CopySet is the basic unit of data replication in CurveBS. A complete, performance recovers. 3. The Client queries the ChunkServer for the leader ChunkServer node of the copyset where chunk resides. 4. The Client sends read/write requests to the leader (IP=1270 码力 | 13 页 | 2.03 MB | 6 月前3 CurveBS IO Processing Flowarchitecture, data organization and topology structure of CURVE. CurveBS uses the central node Metadata Server (MDS) to manage virtual disk mapping and data replicas distribution. Decentralization in CurveBS This section mainly describes how data nodes manage chunk. Each node in the figure represents a data node (ChunkServer). A CopySet is the basic unit of data replication in CurveBS. A complete, performance recovers. 3. The Client queries the ChunkServer for the leader ChunkServer node of the copyset where chunk resides. 4. The Client sends read/write requests to the leader (IP=1270 码力 | 13 页 | 2.03 MB | 6 月前3
 MySQL 兼容性可以做到什么程度指令兼容:show binary logs… • MySQL DUMP 协议 • 保证分布式事务完整性与顺序 • 同一连接串 已验证工具或系统 • MySQL Slave(change master) • DTS • Canal/CloudCanal • Maxwell • Debezium • Streamsets • mysql-binlog-connector-java 已有系统迁移怎么办? 下游Demo for ReplicationPolarDB-X Replication 特性详情 提供与 MySQL 主备复制的能力 产品体验 • 支持 MySQL Change Master 指令 • 原生作为 MySQL 备库的能力 • 支持 PolarDB-X 之间数据同步 • 支持 DDL 同步 • 支持事务复制、行级复制 已验证工具或系统 • MySQL/MariaDB0 码力 | 18 页 | 3.02 MB | 6 月前3 MySQL 兼容性可以做到什么程度指令兼容:show binary logs… • MySQL DUMP 协议 • 保证分布式事务完整性与顺序 • 同一连接串 已验证工具或系统 • MySQL Slave(change master) • DTS • Canal/CloudCanal • Maxwell • Debezium • Streamsets • mysql-binlog-connector-java 已有系统迁移怎么办? 下游Demo for ReplicationPolarDB-X Replication 特性详情 提供与 MySQL 主备复制的能力 产品体验 • 支持 MySQL Change Master 指令 • 原生作为 MySQL 备库的能力 • 支持 PolarDB-X 之间数据同步 • 支持 DDL 同步 • 支持事务复制、行级复制 已验证工具或系统 • MySQL/MariaDB0 码力 | 18 页 | 3.02 MB | 6 月前3
 Curve核心组件之chunkserver作 • RaftService。Braft内置的service, 完成raft成员之间的选举,日志复制, 安装快照等操作。 ChunkServer架构CopysetNode封装了braft的Node,并 实现了braft的状态机,完成与raft的交 互。详细交互流程后面展开。 CopysetNodeManager负责管理 CopysetNode的创建、初始化、删除等 ChunkServer架构心跳模块有两方面的职责: 心跳上报时携带这些信息。ChunkServer核心模块-CopysetNode 写请求: 1. Client发送写请求给Leader ChunkServer 2. 请求封装,提交给Raft node 3. 本地持久化entry的同时发送给其他peer 4. 本地持久化log entry成功,并且有一个peer也落 盘成功,则commit 5. Commit后apply,此时把写请求写0 码力 | 29 页 | 1.61 MB | 6 月前3 Curve核心组件之chunkserver作 • RaftService。Braft内置的service, 完成raft成员之间的选举,日志复制, 安装快照等操作。 ChunkServer架构CopysetNode封装了braft的Node,并 实现了braft的状态机,完成与raft的交 互。详细交互流程后面展开。 CopysetNodeManager负责管理 CopysetNode的创建、初始化、删除等 ChunkServer架构心跳模块有两方面的职责: 心跳上报时携带这些信息。ChunkServer核心模块-CopysetNode 写请求: 1. Client发送写请求给Leader ChunkServer 2. 请求封装,提交给Raft node 3. 本地持久化entry的同时发送给其他peer 4. 本地持久化log entry成功,并且有一个peer也落 盘成功,则commit 5. Commit后apply,此时把写请求写0 码力 | 29 页 | 1.61 MB | 6 月前3
 Open Flags 调研3.html https://juejin.cn/post/6844903923048792078 https://www.gnu.org/software/libc/manual/html_node/File-Status-Flags.html https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2 6/+/refs/heads/jb-dev/sysroot/usr/include/asm-generic/fcntl.h https://www.gnu.org/software/libc/manual/html_node/Permission-Bits.html https://xinqiu.gitbooks.io/linux-insides-cn/content/SysCall/linux-syscall-50 码力 | 23 页 | 524.47 KB | 6 月前3 Open Flags 调研3.html https://juejin.cn/post/6844903923048792078 https://www.gnu.org/software/libc/manual/html_node/File-Status-Flags.html https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2 6/+/refs/heads/jb-dev/sysroot/usr/include/asm-generic/fcntl.h https://www.gnu.org/software/libc/manual/html_node/Permission-Bits.html https://xinqiu.gitbooks.io/linux-insides-cn/content/SysCall/linux-syscall-50 码力 | 23 页 | 524.47 KB | 6 月前3
 curvefs client删除文件和目录功能设计/reserve中。 sustained机制/reserve机制 当一个trashtime等于0的TYPE_FILE类型的文件被一个客户端正在打开,而同时有另一个客户端要删除它时,此时master对该文件节点的处理是并不立即删除该文件而是设置为TYPE_RESERVED类型并将该fsn ode连接到reserved链表中,使该文件虽然已经从文件树中删除掉,但因为另一个正在打开该文件的客户端因为持有该节点inodeid0 码力 | 15 页 | 325.42 KB | 6 月前3 curvefs client删除文件和目录功能设计/reserve中。 sustained机制/reserve机制 当一个trashtime等于0的TYPE_FILE类型的文件被一个客户端正在打开,而同时有另一个客户端要删除它时,此时master对该文件节点的处理是并不立即删除该文件而是设置为TYPE_RESERVED类型并将该fsn ode连接到reserved链表中,使该文件虽然已经从文件树中删除掉,但因为另一个正在打开该文件的客户端因为持有该节点inodeid0 码力 | 15 页 | 325.42 KB | 6 月前3
共 14 条
- 1
- 2













