副本如何用CLup管理PolarDB《PostgreSQL修炼之道:从小工到专家》的作者,中 启乘数科技联合创始人,PostgreSQL中国用户会常委。 从业近20年,拥有20年数据库、操作系统、存储领 域的工作经验,历任过阿里巴巴高级数据库专家、 网易研究院开发专家,从事过阿里巴巴Greenplum、 PostgreSQL、 MySQL数据库的架构设计和运维。 既熟悉数据库的,是最早的Oracle 9i的OCP,又懂开 发,精通C、python。 4台虚拟机器或物理机 1台做CLup管理节点:内存大于2GB 3台做数据库节点:内存需要大于4GB,最好有反亲和性,即能分布在不同的 物理机上以保证高可用性阿里云的环境中创建Polardb的方法 共享盘使用阿里云自带的高性能Nvme盘,注意使用Nvme磁盘对可用 区有要求: • 华东1(杭州)可用区I • 华东2(上海)可用区B • 华北2(北京)可用区K • 华南1(深圳)可用区F。 虚拟机后,在单独添加共享盘创建PolarDB需要的阿里云环境 安装依赖包: * libaio.x86_64 libaio-devel.x86_64 * libicu.x86_64 libicu-devel.x86_64 安装方法: yum install libaio.x86_64 libaio- devel.x86_64 libicu.x86_64 libicu- devel.x86_64-20- @ 使用CLup创0 码力 | 34 页 | 3.59 MB | 6 月前3
Curve 分布式存储设计Polardb for PostgreSQL提供上层高性能数 据库服务 4. 性能测试 1. benchmarkSQL 每分钟事务数提升39% 2. pgbench 延迟降低21% TPS提升26% 研究现状Curve块存储 1. 分布式块存储服务 2. KVM块存储服务 3. iSCSI协议 4. 容器云块存储(CSI) 应用场景Curve块存储 1. 高可用性/高可靠性 (易运维)0 码力 | 20 页 | 4.13 MB | 6 月前3
Open Flags 调研OLLOW和O_NOATIME进行测试(优先级中)。 3,目前I/O模式类flag(O_SYNC, O_DSYNC, O_NONBLOCK)经测试不会“影响“结果的正确性,后面继续对其实现方式进行研究(优先级中)。 参考文献 https://man7.org/linux/man-pages/man2/open.2.html https://www.cnblogs.com/BinBinStory/p/74009930 码力 | 23 页 | 524.47 KB | 6 月前3
Curve质量监控与运维 - 网易数帆作为一个复杂的大型分布式存储系统,Curve 需要利用科学的方法论和专业的工具,在整个 软件生命周期内更好地为用户服务: 质量——向用户交付稳定可靠的软件; 监控——直观地展示Curve运行状态; 运维——保障Curve始终稳定高效运行。 质量 ✓ 质量管理体系(设计、开发、review、CI) ✓ 测试方法论(单元测试、集成测试、系统测试) 监控 ✓ 监控架构 ✓ 。 为了确保最终交付的软件满足需求,必须将质量控制贯穿于设计、开发到测试的整个流程中。 设计 设计流程 文档规范 开发 编码规范与提交流程 版本管理 测试 测试方法论 CI与异常测试 6/33设计流程 Curve团队采用敏捷开发模式,负责人在制定迭代计划时,确认哪些任务需要设计 文档: 小需求(改动小)将实现思路记录到任务管理系统中(JIRA),即可进行开发; 新功能 Bug修复 cherry-pick 11/33测试方法论 从测试粒度看,测试可以分为单元测试、集成测试、系统测试; 从测试角度看,测试可以分为常规测试、性能测试、异常测试、稳定性测试、混沌测试,等等 单元测试 1300+用例 行覆盖80%+,分支覆盖70%+ 集成测试 Given When Then 设计方法 500+用例 异常测试 40+自动化用例 混沌测试0 码力 | 33 页 | 2.64 MB | 6 月前3
CurveFS ChunkID持久化1. 2. 3. 4. 1. 1. 1. 2. 1. 2. 3. 4. 3. 2. 背景 将原有的获取chunkid的方法从space迁入mds中,并持久化写入etcd中; 只考虑单 mds 工作的情况; chunkid全局递增。 实现 proto/space.proto 中的 message AllocateS3 实现; curvefs/src/mds/mds_services.h MdsServiceImp类中增加 ChunkIDGenerator 类对象,方法 AllocateS3Chunk 调用 ChunkIDGenerator对象的GenChunkID方法; ChunkIDGenerator 类 构造函数 初始化 init 函数:用于初始化或者更改 ChunkIdAllocatorImpl 的一些配0 码力 | 3 页 | 79.38 KB | 6 月前3
Curve元数据节点高可用leaderSession *Session // leaderSession sessionnil hdr *pb.ResponseHeader // response } Election提供的方法如下:© XXX Page 4 of 30 1. // Campaign puts a value as eligible for the election on the prefix // *Election) Rev() int64 // response header func (e *Election) Header() *pb.ResponseHeader 我们主要是用其中两个方法:© XXX Page 5 of 30 1. 2. Campagin用于leader竞选 Observe用于监测集群中leader的变化 3.2 Campaign的流程 3.2.1 代码流程说明0 码力 | 30 页 | 2.42 MB | 6 月前3
Curve设计要点自动化部署工具 • 一键部署,一键升级高质量 • 良好的模块化和抽象设计 • 完善的测试体系 • 单元测试 行覆盖80%+,分支覆盖70%+ • 集成测试 Given When Then 方法 完备的测试用例集 • 自动化异常测试 41个异常用例 • 自动化大压力随机故障注入 20轮随机故障注入背景 01 02 03 04 总体设计 系统特性 近期规划• 性能优化 • 满足数据库性能要求0 码力 | 35 页 | 2.03 MB | 6 月前3
Raft在Curve存储中的工程实践存储作为数据存储引擎,为公有云用户提供 高性价比的共享文件存储 • 支持在物理机上挂载使用块设备或FUSE文件 系统开源社区 社区运营 生态共建 开源共建 源码兜底 技术领先 目标 方法 影响力 降本 获客 用户 开发者 操作系统 芯片 数据库 云原生 AI训练 大数据 社区生态Curve介绍 01 02 raft和braft 03 raft在Curve中的应用 050 码力 | 29 页 | 2.20 MB | 6 月前3
共 8 条
- 1













