Curve质量监控与运维 - 网易数帆
运维——保障Curve始终稳定高效运行。 质量 ✓ 质量管理体系(设计、开发、review、CI) ✓ 测试方法论(单元测试、集成测试、系统测试) 监控 ✓ 监控架构 ✓ 指标采集、后端处理、可视化展示 运维 ✓ 运维特性 (易部署、易升级、自治) ✓ 运维工具(部署工具、管理工具) 4/33背景 01 02 03 04 Curve质量控制 Curve监控体系 Curve运维体系软件质量 异常自动化 测试 混沌测试 (每周一次) CI测试(编译、静态检 查、单元测试、集成测 试、覆盖率80%卡点) 邮件通知 Curve所有代码均在github托管。新 代码需要通过CI测试和code review才 能合入master分支,确保新合入代码 的功能、正确性、规范性等都有基本 保障;而每日运行的dailybuild测试在 CI测试基础上增加了异常自动化测试 和混沌测试,确保master分支代码的 单元测试 1300+用例 行覆盖80%+,分支覆盖70%+ 集成测试 Given When Then 设计方法 500+用例 异常测试 40+自动化用例 混沌测试 20轮自动化随机故障注入 12/33单元测试 单元测试是软件开发的过程中最基本的测试,它用来对一个模块、一个函数或者一个类来进行 正确性检验的测试工作。 curve通过lcov统计代码覆盖率,衡量单元测试的完备程度,如下图所示:0 码力 | 33 页 | 2.64 MB | 5 月前3Curve核心组件之chunkserver
de封装了braft的Node,并 实现了braft的状态机,完成与raft的交 互。详细交互流程后面展开。 CopysetNodeManager负责管理 CopysetNode的创建、初始化、删除等 ChunkServer架构心跳模块有两方面的职责: 1、向MDS节点上报心跳,心跳中包括 ChunkServer本身的一些统计信息 2、解析MDS的心跳response中的raft ChunkserverID,token,chunkserver持久化这些信息,并在后续心跳上报时携带这些信息。ChunkServer核心模块-CopysetNode 写请求: 1. Client发送写请求给Leader ChunkServer 2. 请求封装,提交给Raft node 3. 本地持久化entry的同时发送给其他peer 4. 本地持久化log entry成功,并且有一个peer也落 盘成功,则commit 初始状态,copyset1,copyset2,copyset3的三个副本分别在 CS2,CS3,CS4上,完成恢复后,CS2上的copyset1,2,3迁移到CS1上 ① CS1换了新盘,并重新格式化后启动chunkserver ② CS1重新向MDS注册 ③ MDS生成新的chunkserver id和token给CS1 ④ MDS的copyset scheduler发现CS1上的copyset数量为0,CS2上0 码力 | 29 页 | 1.61 MB | 5 月前3
共 2 条
- 1