 MySQL 兼容性可以做到什么程度PolarDB-X 如 何 做 生 态兼 容 好的 MySQL 兼容性可以做到什么程度 胡中泉(舟济) 阿里云数据库解决方案架构师为什么要兼容 MySQL 01 The longer you look back, the farther you can look forward.也从阿里巴巴的“去IOE”运动说起 业务驱动下的分布式技术实践之路 5月17日,支付宝最后一台小型 机下线标志去IOE落下帷幕 MySQL Binlog 可行性 • 多节点产生多个增量事件队列 • 不同队列中事件之间的顺序 • 分布式事务完整性 • DDL 引起的多 Schema 版本问题 • 扩缩容引起的队列增减 ? Maxwell Debezium A: PolarDB-X 全局 Binlog:完全兼容 • 与 MySQL Binlog 体验完全一致 • 保障分布式事务完整性 • 透明:下游系统或工具改造成本为零 Binlog 完全一致体验 • 文件格式兼容:Binlog v4 row-based • SQL 指令兼容:show binary logs… • MySQL DUMP 协议 • 保证分布式事务完整性与顺序 • 同一连接串 已验证工具或系统 • MySQL Slave(change master) • DTS • Canal/CloudCanal • Maxwell • Debezium0 码力 | 18 页 | 3.02 MB | 6 月前3 MySQL 兼容性可以做到什么程度PolarDB-X 如 何 做 生 态兼 容 好的 MySQL 兼容性可以做到什么程度 胡中泉(舟济) 阿里云数据库解决方案架构师为什么要兼容 MySQL 01 The longer you look back, the farther you can look forward.也从阿里巴巴的“去IOE”运动说起 业务驱动下的分布式技术实践之路 5月17日,支付宝最后一台小型 机下线标志去IOE落下帷幕 MySQL Binlog 可行性 • 多节点产生多个增量事件队列 • 不同队列中事件之间的顺序 • 分布式事务完整性 • DDL 引起的多 Schema 版本问题 • 扩缩容引起的队列增减 ? Maxwell Debezium A: PolarDB-X 全局 Binlog:完全兼容 • 与 MySQL Binlog 体验完全一致 • 保障分布式事务完整性 • 透明:下游系统或工具改造成本为零 Binlog 完全一致体验 • 文件格式兼容:Binlog v4 row-based • SQL 指令兼容:show binary logs… • MySQL DUMP 协议 • 保证分布式事务完整性与顺序 • 同一连接串 已验证工具或系统 • MySQL Slave(change master) • DTS • Canal/CloudCanal • Maxwell • Debezium0 码力 | 18 页 | 3.02 MB | 6 月前3
 人工智能安全治理框架 1.0人工智能安全治理框架 (V1.0)- 2 - 人工智能安全治理框架 1.2 风险导向、敏捷治理。密切跟踪人工智能研发及应用趋势,从人工 智能技术自身、人工智能应用两方面分析梳理安全风险,提出针对性防范应对 措施。关注安全风险发展变化,快速动态精准调整治理措施,持续优化治理机 制和方式,对确需政府监管事项及时予以响应。 1.3 技管结合、协同应对。面向人工智能研发应用全过程,综合运用技术、 应用生态链,明确模型算法研发者、服务提供者、使用者等相关主体的安全责 任,有机发挥政府监管、行业自律、社会监督等治理机制作用。 1.4 开放合作、共治共享。在全球范围推动人工智能安全治理国际合作, 共享最佳实践,提倡建立开放性平台,通过跨学科、跨领域、跨地区、跨国界 的对话和合作,推动形成具有广泛共识的全球人工智能治理体系。 2. 人工智能安全治理框架构成 基于风险管理理念,本框架针对不同类型的人工智能安全风险,从技术、 2.2 技术应对措施方面。针对模型算法、训练数据、算力设施、产品服务、 应用场景,提出通过安全软件开发、数据质量提升、安全建设运维、测评监测 加固等技术手段提升人工智能产品及应用的安全性、公平性、可靠性、鲁棒性- 3 - 人工智能安全治理框架 的措施。 2.3 综合治理措施方面。明确技术研发机构、服务提供者、用户、政府 部门、行业协会、社会组织等各方发现、防范、应对人工智能安全风险的措施0 码力 | 20 页 | 3.79 MB | 1 月前3 人工智能安全治理框架 1.0人工智能安全治理框架 (V1.0)- 2 - 人工智能安全治理框架 1.2 风险导向、敏捷治理。密切跟踪人工智能研发及应用趋势,从人工 智能技术自身、人工智能应用两方面分析梳理安全风险,提出针对性防范应对 措施。关注安全风险发展变化,快速动态精准调整治理措施,持续优化治理机 制和方式,对确需政府监管事项及时予以响应。 1.3 技管结合、协同应对。面向人工智能研发应用全过程,综合运用技术、 应用生态链,明确模型算法研发者、服务提供者、使用者等相关主体的安全责 任,有机发挥政府监管、行业自律、社会监督等治理机制作用。 1.4 开放合作、共治共享。在全球范围推动人工智能安全治理国际合作, 共享最佳实践,提倡建立开放性平台,通过跨学科、跨领域、跨地区、跨国界 的对话和合作,推动形成具有广泛共识的全球人工智能治理体系。 2. 人工智能安全治理框架构成 基于风险管理理念,本框架针对不同类型的人工智能安全风险,从技术、 2.2 技术应对措施方面。针对模型算法、训练数据、算力设施、产品服务、 应用场景,提出通过安全软件开发、数据质量提升、安全建设运维、测评监测 加固等技术手段提升人工智能产品及应用的安全性、公平性、可靠性、鲁棒性- 3 - 人工智能安全治理框架 的措施。 2.3 综合治理措施方面。明确技术研发机构、服务提供者、用户、政府 部门、行业协会、社会组织等各方发现、防范、应对人工智能安全风险的措施0 码力 | 20 页 | 3.79 MB | 1 月前3
 新一代云原生分布式存储各存储设备通过网络互联 大规模 弹性扩容 底层构建在分布式存储之上 云的概念 成本:共用基础设施 弹性:随意扩缩容 速度:更快的构建发布业务 底层构建在分布式存储之上 云原生的概念: 易用性:跨平台,超融合,弹性 小型主机 容量有限分布式存储的分类 按照各种应用场景所需的存储接口分类 对象 存储 文件 存储 块存储 接口为简单的 Get、PUT、DEL 和其他扩展 解 数据分布 —— 无中心节点/中心节点 均 衡 地址空间的每段数据会分布在不同机器的磁盘上,如 何找到这些数据? 可靠性 & 可用性 —— 多副本/EC 服务不可用时 间 数据一致性 —— 一致性协议 如何保证数据不丢?如何保证各种硬件故障的时候读 写都正常? 可扩展性 —— 和数据分布的方式相关 所用容量都用完后,可以新增机器扩展容量分布式存储的要素 60 (8MB, 16MB) 50分布式存储的要素 — 一致性协议 多副本: 写三次? 一致性协议 一致性:WARO(Write-all-read-one)、Quorum WARO • 所有副本写成功 • 读可用性高:可以读任一副本 • 写可用性较低,任一副本异常写失败 Quorum • 大多数副本写成功 • 读写服务可用性做一个折中 • 写性能提升,速度取决于写的较快的大多数0 码力 | 29 页 | 2.46 MB | 6 月前3 新一代云原生分布式存储各存储设备通过网络互联 大规模 弹性扩容 底层构建在分布式存储之上 云的概念 成本:共用基础设施 弹性:随意扩缩容 速度:更快的构建发布业务 底层构建在分布式存储之上 云原生的概念: 易用性:跨平台,超融合,弹性 小型主机 容量有限分布式存储的分类 按照各种应用场景所需的存储接口分类 对象 存储 文件 存储 块存储 接口为简单的 Get、PUT、DEL 和其他扩展 解 数据分布 —— 无中心节点/中心节点 均 衡 地址空间的每段数据会分布在不同机器的磁盘上,如 何找到这些数据? 可靠性 & 可用性 —— 多副本/EC 服务不可用时 间 数据一致性 —— 一致性协议 如何保证数据不丢?如何保证各种硬件故障的时候读 写都正常? 可扩展性 —— 和数据分布的方式相关 所用容量都用完后,可以新增机器扩展容量分布式存储的要素 60 (8MB, 16MB) 50分布式存储的要素 — 一致性协议 多副本: 写三次? 一致性协议 一致性:WARO(Write-all-read-one)、Quorum WARO • 所有副本写成功 • 读可用性高:可以读任一副本 • 写可用性较低,任一副本异常写失败 Quorum • 大多数副本写成功 • 读写服务可用性做一个折中 • 写性能提升,速度取决于写的较快的大多数0 码力 | 29 页 | 2.46 MB | 6 月前3
 CurveFS方案设计李小翠 增加快照部分 2021-04-13 李小翠、陈威 补充元数据数据结构 2021-04-19 李小翠、吴汉卿、许超杰等 补充文件空间分配,讨论与确认 背景 调研 开源fs 性能对比 可行性分析 方案对比 对比结论 架构设计 卷和文件系统 元数据架构 文件系统快照 方案一:文件/目录级别快照 方案二:文件系统快照 关键点 元数据设计 数据结构 索引设计 文件空间管理 开发计划及安排 go开发的chubaofs和c开发的cephfs,理论上分析这个结果是合理的,分布式的元数据设 调研测试 计会涉及到多次rpc的交互。这里需要确认的一点是:我们需要怎样的元数据节点的性能? 可行性分析 方案对比 根据上述调研和测试结果,我们考虑了三种curvefs的元数据设计方案: CurveFS kv方案设计 curve实现块设备时,元数据不是扁平化的设计,而是采用来有目录层级的 namespace 见的操作,目前 curve 的元数据缓存使用的 lru cache,因此 list 只能依赖 etcd 的 range 获取方式。如果需要对 list 加速,需要新的缓存结构 c. 扩展性/可用性/可靠性 依赖于第三方kv存储,目前是etcd CurveFS 单机内存元数据设计 类似 fastcfs 和 moosefs 的元数据设计方式,采用通用的 dentry,inode 两层映射关系,所有的元数据都缓存在内存中,持久化在0 码力 | 14 页 | 619.32 KB | 6 月前3 CurveFS方案设计李小翠 增加快照部分 2021-04-13 李小翠、陈威 补充元数据数据结构 2021-04-19 李小翠、吴汉卿、许超杰等 补充文件空间分配,讨论与确认 背景 调研 开源fs 性能对比 可行性分析 方案对比 对比结论 架构设计 卷和文件系统 元数据架构 文件系统快照 方案一:文件/目录级别快照 方案二:文件系统快照 关键点 元数据设计 数据结构 索引设计 文件空间管理 开发计划及安排 go开发的chubaofs和c开发的cephfs,理论上分析这个结果是合理的,分布式的元数据设 调研测试 计会涉及到多次rpc的交互。这里需要确认的一点是:我们需要怎样的元数据节点的性能? 可行性分析 方案对比 根据上述调研和测试结果,我们考虑了三种curvefs的元数据设计方案: CurveFS kv方案设计 curve实现块设备时,元数据不是扁平化的设计,而是采用来有目录层级的 namespace 见的操作,目前 curve 的元数据缓存使用的 lru cache,因此 list 只能依赖 etcd 的 range 获取方式。如果需要对 list 加速,需要新的缓存结构 c. 扩展性/可用性/可靠性 依赖于第三方kv存储,目前是etcd CurveFS 单机内存元数据设计 类似 fastcfs 和 moosefs 的元数据设计方式,采用通用的 dentry,inode 两层映射关系,所有的元数据都缓存在内存中,持久化在0 码力 | 14 页 | 619.32 KB | 6 月前3
 CurveFS rename 接口实现方案方案一:chubaofs 方案二:事务方案 方案三:利用 KV 自带的分布式事务 Q&A 1. 是否需要实现跨文件系统的 rename 操作? 2. 在多客户端情况下,是否需要加锁来保证其原子性? 3. rename 流程举例说明? 例 1:rename A→B (A 存在,而 B 不存在) 例 2:rename A→C (A 存在,而 C 存在) 4. 当 2 个操作的 dentry 属于同一个 的 inode id)。 关于 rename 接口的实现,主要调研了 chubaofs 和 juicefs,而 rename 的实现难点主要在于其原子性的保证。 方案调研 Chubaofs chubaofs 中的 rename 实现不是原子性的,它是通 用创建源文件的硬连接,然后删除源文件的方式来实现的,主要有以下 4 步 : 将源文件的 nlink 加一 创建目标文件的 dentry 删除源文件的 nlink 没减一的情况 步骤 3: ,就会同时存在 src、dst 的 dentry,相当于多了一个硬链接,Linux 和 POSIX 这一步出错 接口中表明这允许一段时间内存在,但是最终还是要原子性,所以这一步出错会导致和本地文件系统不一致的行为: Linux 接口定义允许 rename 过程中某一段时间存在这样的硬链接(或者 rename 执行到一半断电也会存在) 而 POSIX 接口中提到0 码力 | 15 页 | 555.93 KB | 6 月前3 CurveFS rename 接口实现方案方案一:chubaofs 方案二:事务方案 方案三:利用 KV 自带的分布式事务 Q&A 1. 是否需要实现跨文件系统的 rename 操作? 2. 在多客户端情况下,是否需要加锁来保证其原子性? 3. rename 流程举例说明? 例 1:rename A→B (A 存在,而 B 不存在) 例 2:rename A→C (A 存在,而 C 存在) 4. 当 2 个操作的 dentry 属于同一个 的 inode id)。 关于 rename 接口的实现,主要调研了 chubaofs 和 juicefs,而 rename 的实现难点主要在于其原子性的保证。 方案调研 Chubaofs chubaofs 中的 rename 实现不是原子性的,它是通 用创建源文件的硬连接,然后删除源文件的方式来实现的,主要有以下 4 步 : 将源文件的 nlink 加一 创建目标文件的 dentry 删除源文件的 nlink 没减一的情况 步骤 3: ,就会同时存在 src、dst 的 dentry,相当于多了一个硬链接,Linux 和 POSIX 这一步出错 接口中表明这允许一段时间内存在,但是最终还是要原子性,所以这一步出错会导致和本地文件系统不一致的行为: Linux 接口定义允许 rename 过程中某一段时间存在这样的硬链接(或者 rename 执行到一半断电也会存在) 而 POSIX 接口中提到0 码力 | 15 页 | 555.93 KB | 6 月前3
 Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 19.2. Refutability(可反驳性): 模式是否会匹配失效 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 19.3. 模式语法 . io/trpl- zh-cn/ 在线阅读,PDF 版本请下载 Rust 程序设计语言 简体中文版.pdf) 本书也有由 No Starch Press 出版的纸质版和电子版。 🚨 想要具有互动性的学习体验吗?试试 Rust Book 的另一个版本,其中包括测验、 高亮、可视化等功能:https://rust-book.cs.brown.edu 5/562Rust 程序设计语言 简体中文版 安装最新稳定版的 Rust • 更新到新版的 Rust • 打开本地安装的文档 • 直接通过 rustc 编写并运行 Hello, world! 程序 • 使用 Cargo 创建并运行新项目 是时候通过构建更实质性的程序来熟悉读写 Rust 代码了。所以在第二章我们会构建一个猜数 字游戏程序。如果你更愿意从学习 Rust 常用的编程概念开始,请阅读第三章,接着再回到第 二章。 21/562Rust 程序设计语言0 码力 | 562 页 | 3.23 MB | 22 天前3 Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 19.2. Refutability(可反驳性): 模式是否会匹配失效 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 19.3. 模式语法 . io/trpl- zh-cn/ 在线阅读,PDF 版本请下载 Rust 程序设计语言 简体中文版.pdf) 本书也有由 No Starch Press 出版的纸质版和电子版。 🚨 想要具有互动性的学习体验吗?试试 Rust Book 的另一个版本,其中包括测验、 高亮、可视化等功能:https://rust-book.cs.brown.edu 5/562Rust 程序设计语言 简体中文版 安装最新稳定版的 Rust • 更新到新版的 Rust • 打开本地安装的文档 • 直接通过 rustc 编写并运行 Hello, world! 程序 • 使用 Cargo 创建并运行新项目 是时候通过构建更实质性的程序来熟悉读写 Rust 代码了。所以在第二章我们会构建一个猜数 字游戏程序。如果你更愿意从学习 Rust 常用的编程概念开始,请阅读第三章,接着再回到第 二章。 21/562Rust 程序设计语言0 码力 | 562 页 | 3.23 MB | 22 天前3
 副本如何用CLup管理PolarDB数据中心1 CLup管理节点1 clup-server 数据中心2 CLup管理节点2 clup-server 数据中心1 CLup管理节点2 高可用机制自动切换  数据一致性保证 数据可用性  提供读写VIP  读写高可用 读写分离  多个读库之间负载均衡 负载均衡  读线性扩展  支持分库分表 高扩展性 写 VIP 读 VIP PG (Primary) 盘要求有路径:/dev/nvmeXnY  机器需求 4台虚拟机器或物理机 1台做CLup管理节点:内存大于2GB 3台做数据库节点:内存需要大于4GB,最好有反亲和性,即能分布在不同的 物理机上以保证高可用性阿里云的环境中创建Polardb的方法 共享盘使用阿里云自带的高性能Nvme盘,注意使用Nvme磁盘对可用 区有要求: • 华东1(杭州)可用区I • 华东2(上海)可用区B • 共享盘:所有虚拟机都 可以挂载 有VIP 机器有反亲和性  华为云 有共享盘 有VIP 机器有反亲和性  移动云 共享盘:所有虚拟机都 可以挂载 有VIP 机器有弱反亲和性  腾讯云 无共享盘 VIP是内测阶段 机器的反亲和性:不清 楚  联通云 无共享盘 有VIP 机器有反亲和性创建PolarDB需要的阿里云环境 创建虚拟机的时0 码力 | 34 页 | 3.59 MB | 6 月前3 副本如何用CLup管理PolarDB数据中心1 CLup管理节点1 clup-server 数据中心2 CLup管理节点2 clup-server 数据中心1 CLup管理节点2 高可用机制自动切换  数据一致性保证 数据可用性  提供读写VIP  读写高可用 读写分离  多个读库之间负载均衡 负载均衡  读线性扩展  支持分库分表 高扩展性 写 VIP 读 VIP PG (Primary) 盘要求有路径:/dev/nvmeXnY  机器需求 4台虚拟机器或物理机 1台做CLup管理节点:内存大于2GB 3台做数据库节点:内存需要大于4GB,最好有反亲和性,即能分布在不同的 物理机上以保证高可用性阿里云的环境中创建Polardb的方法 共享盘使用阿里云自带的高性能Nvme盘,注意使用Nvme磁盘对可用 区有要求: • 华东1(杭州)可用区I • 华东2(上海)可用区B • 共享盘:所有虚拟机都 可以挂载 有VIP 机器有反亲和性  华为云 有共享盘 有VIP 机器有反亲和性  移动云 共享盘:所有虚拟机都 可以挂载 有VIP 机器有弱反亲和性  腾讯云 无共享盘 VIP是内测阶段 机器的反亲和性:不清 楚  联通云 无共享盘 有VIP 机器有反亲和性创建PolarDB需要的阿里云环境 创建虚拟机的时0 码力 | 34 页 | 3.59 MB | 6 月前3
 Raft在Curve存储中的工程实践raft和braft 03 raft在Curve中的应用 05 Q&A 04 Curve对raft的优化RAFT协议简介 什么是raft • raft 是一种新型易于理解的分布式一致性复制协议,由斯坦福大学的Diego Ongaro和John Ousterhout提出,《In Search of an Understandable Consensus Algorithm(Extended xos变种,提供了更完整更清晰的协议描述,更容易理解和实现。 • raft可以解决分布式理论中的CP,即一致性和分区容忍性 • 大多数副本成功即可返回成功 • 速度取决于写的较快的大多数RAFT协议简介 • Leader:负责从客户端接受日志,把日志复制到其 他服务器,当保证安全性的时候告诉其他服务器应用 日志条目到他们的状态机中。 • Candidate: 发起选举。获取大多数选票的候选人将 然后把执⾏的结果返回给客户端。 • 提供命令在多个节点之间有序复制和执行,当多个节 点初始状态一致的时候,保证节点之间状态一致。 raft日志复制RAFT协议简介 raft配置变更 • 配置:加入一致性算法的服务器集合。 • 集群的配置不可避免会发生变更,比如替换宕机的机器。 直接配置变更可能出现双主问题 • 共同一致(joint consensus) • 集群先切换到一个过渡的配置(old0 码力 | 29 页 | 2.20 MB | 6 月前3 Raft在Curve存储中的工程实践raft和braft 03 raft在Curve中的应用 05 Q&A 04 Curve对raft的优化RAFT协议简介 什么是raft • raft 是一种新型易于理解的分布式一致性复制协议,由斯坦福大学的Diego Ongaro和John Ousterhout提出,《In Search of an Understandable Consensus Algorithm(Extended xos变种,提供了更完整更清晰的协议描述,更容易理解和实现。 • raft可以解决分布式理论中的CP,即一致性和分区容忍性 • 大多数副本成功即可返回成功 • 速度取决于写的较快的大多数RAFT协议简介 • Leader:负责从客户端接受日志,把日志复制到其 他服务器,当保证安全性的时候告诉其他服务器应用 日志条目到他们的状态机中。 • Candidate: 发起选举。获取大多数选票的候选人将 然后把执⾏的结果返回给客户端。 • 提供命令在多个节点之间有序复制和执行,当多个节 点初始状态一致的时候,保证节点之间状态一致。 raft日志复制RAFT协议简介 raft配置变更 • 配置:加入一致性算法的服务器集合。 • 集群的配置不可避免会发生变更,比如替换宕机的机器。 直接配置变更可能出现双主问题 • 共同一致(joint consensus) • 集群先切换到一个过渡的配置(old0 码力 | 29 页 | 2.20 MB | 6 月前3
 Curve设计要点元数据节点 MDS 管理元数据信息 收集集群状态信息,自动调度 • 数据节点 Chunkserver 数据存储 数据一致性基本架构 • 元数据节点 MDS 管理元数据信息 收集集群状态信息,自动调度 • 数据节点 Chunkserver 数据存储 副本一致性 • 客户端 Client 对元数据增删改查 对数据增删改查基本架构 • 快照克隆服务器 独立于核心服务 储到支持S3接口的 储到支持S3接口的 对象存储,不限制数量 异步快照、增量快照 从快照/镜像克隆 ( lazy/非lazy ) 从快照回滚数据组织形式 • 底层 可用性 / 可靠性 扩展性 / 负载均衡 向上提供无差别文件流 • Application 块/对象/EC等 感知具体格式 提供不同文件类型支撑不同上层应用数据组织形式 • PageFile/AppendFile/AppendECFile • 逻辑概念,空间分配的基本单元 (减少元数据数量) • 多个连续地址空间chunk(物理文件)的聚合数据组织形式 • CopySet • 逻辑概念 • 减少元数据数量 • 数据放置的基本单元 • 提高数据可靠性 • 包含多个chunk • 减少复制组数量 类似Ceph中的PG 「Copysets: Reducing the Frequency of Data Loss in Cloud Storage」数据组织形式0 码力 | 35 页 | 2.03 MB | 6 月前3 Curve设计要点元数据节点 MDS 管理元数据信息 收集集群状态信息,自动调度 • 数据节点 Chunkserver 数据存储 数据一致性基本架构 • 元数据节点 MDS 管理元数据信息 收集集群状态信息,自动调度 • 数据节点 Chunkserver 数据存储 副本一致性 • 客户端 Client 对元数据增删改查 对数据增删改查基本架构 • 快照克隆服务器 独立于核心服务 储到支持S3接口的 储到支持S3接口的 对象存储,不限制数量 异步快照、增量快照 从快照/镜像克隆 ( lazy/非lazy ) 从快照回滚数据组织形式 • 底层 可用性 / 可靠性 扩展性 / 负载均衡 向上提供无差别文件流 • Application 块/对象/EC等 感知具体格式 提供不同文件类型支撑不同上层应用数据组织形式 • PageFile/AppendFile/AppendECFile • 逻辑概念,空间分配的基本单元 (减少元数据数量) • 多个连续地址空间chunk(物理文件)的聚合数据组织形式 • CopySet • 逻辑概念 • 减少元数据数量 • 数据放置的基本单元 • 提高数据可靠性 • 包含多个chunk • 减少复制组数量 类似Ceph中的PG 「Copysets: Reducing the Frequency of Data Loss in Cloud Storage」数据组织形式0 码力 | 35 页 | 2.03 MB | 6 月前3
 Curve质量监控与运维 - 网易数帆查、单元测试、集成测 试、覆盖率80%卡点) 邮件通知 Curve所有代码均在github托管。新 代码需要通过CI测试和code review才 能合入master分支,确保新合入代码 的功能、正确性、规范性等都有基本 保障;而每日运行的dailybuild测试在 CI测试基础上增加了异常自动化测试 和混沌测试,确保master分支代码的 bug尽可能早地暴露出来。 通过这种流程,curve可以在一定 500+用例  异常测试 40+自动化用例  混沌测试 20轮自动化随机故障注入 12/33单元测试 单元测试是软件开发的过程中最基本的测试,它用来对一个模块、一个函数或者一个类来进行 正确性检验的测试工作。 curve通过lcov统计代码覆盖率,衡量单元测试的完备程度,如下图所示: 13/33集成测试 测试目的 测试内容 单元测试后,有必要进行集成测试,发现 并排除在模块连接中可能发生的上述问题, 无需绑定特定环境,“随意拉起”  配置化(测试环境、测试负载定义)  控制用例时间(考虑一些折中方案)  Case独立性  Case通用性(兼顾curve、ceph等)  Tag规范(优先级、版本、运行时间)  最大化覆盖率(打乱操作顺序、随机 sleep)  精确性(checkpoint)  稳定性(避免环境因素、其他模块干扰) Curve使用Robotframework框架进行异常自动化测试,0 码力 | 33 页 | 2.64 MB | 6 月前3 Curve质量监控与运维 - 网易数帆查、单元测试、集成测 试、覆盖率80%卡点) 邮件通知 Curve所有代码均在github托管。新 代码需要通过CI测试和code review才 能合入master分支,确保新合入代码 的功能、正确性、规范性等都有基本 保障;而每日运行的dailybuild测试在 CI测试基础上增加了异常自动化测试 和混沌测试,确保master分支代码的 bug尽可能早地暴露出来。 通过这种流程,curve可以在一定 500+用例  异常测试 40+自动化用例  混沌测试 20轮自动化随机故障注入 12/33单元测试 单元测试是软件开发的过程中最基本的测试,它用来对一个模块、一个函数或者一个类来进行 正确性检验的测试工作。 curve通过lcov统计代码覆盖率,衡量单元测试的完备程度,如下图所示: 13/33集成测试 测试目的 测试内容 单元测试后,有必要进行集成测试,发现 并排除在模块连接中可能发生的上述问题, 无需绑定特定环境,“随意拉起”  配置化(测试环境、测试负载定义)  控制用例时间(考虑一些折中方案)  Case独立性  Case通用性(兼顾curve、ceph等)  Tag规范(优先级、版本、运行时间)  最大化覆盖率(打乱操作顺序、随机 sleep)  精确性(checkpoint)  稳定性(避免环境因素、其他模块干扰) Curve使用Robotframework框架进行异常自动化测试,0 码力 | 33 页 | 2.64 MB | 6 月前3
共 28 条
- 1
- 2
- 3













