BRPC与UCX集成指南BRPC简介 ●Channel类 –代表一个连接,Client通过Channel发 送请求和接收应答 ●Server类 –代表一个服务器,可以注册不同的 接口服务,例如上面的EchoService6 BRPC SERVER7 BRPC SERVER8 BRPC client9 BRPC EndPoint EndPoint是一个代表通讯地址的数据结构, 是一个C++类。 字段: ip,port 应用应开启busy poll。323334 BRPC怎么指定使用UCX?35 修改 BRPC ChannelOptions 增加字段:36 BRPC的Server开启RDMA server类有如下成员函数, 如何指定开启ucx连接?37 修改 BRPC ServerOptions ●ServerOptions添加成员 ●当前取舍的:TCP总是可用的, UCX作为选项38 Ucp Context 运行。41 1个 UcpContext: N个 UcpWorker42 连接管理器UcpCm ●连接管理类 –全局唯一对象 –通过UcpCm * get_or_create_ucp_cm(void)获取 –完成连接的接受 –完成连接的创建 ●监视brpc::Socket类关闭文件句柄 ●连接以文件句柄表示43 连接管理器UcpCm ● 连接以文件句柄返回 –int Acce0 码力 | 66 页 | 16.29 MB | 6 月前3
CurveFS ChunkID持久化.h MdsServiceImp类中增加 AllocateS3Chunk 实现; curvefs/src/mds/mds_services.h MdsServiceImp类中增加 ChunkIDGenerator 类对象,方法 AllocateS3Chunk 调用 ChunkIDGenerator对象的GenChunkID方法; ChunkIDGenerator 类 构造函数 初始化 init 函数:用于初始化或者更改0 码力 | 3 页 | 79.38 KB | 6 月前3
Open Flags 调研flags的含义 libfuse open open flags 在curvefs上的测试 open flags 实现方式 整体flags支持方案 具体flag的实现方案 O_TRUNC I/O模式类 O_DIRECT O_SYNC, O_DSYNC O_NONBLOCK(O_NDELAY ), FASYNC, O_TMPFILE 结论 参考文献 open接口原型 # man page open root@pubbeta1-nostest2:/tmp/fsmount# echo "aaa" > f root@pubbeta1-nostest2:/tmp/fsmount# cat f aaa I/O模式类 O_DIRECT, O_SYNC, O_DSYNC, FASYNC, O_NONBLOCK(O_NDELAY ),这类flags应该是内核进行了支持,在用户态文件系统中进行相应设置,例如O_DIR flag(优先级高)。 2,待curvefs支持链接和支持对inode中atime、ctime、mtime的修改后,对O_NOFOLLOW和O_NOATIME进行测试(优先级中)。 3,目前I/O模式类flag(O_SYNC, O_DSYNC, O_NONBLOCK)经测试不会“影响“结果的正确性,后面继续对其实现方式进行研究(优先级中)。 参考文献 https://man7.org/linux0 码力 | 23 页 | 524.47 KB | 6 月前3
CurveFS S3数据整理(合并碎片、清理冗余)试, 入队inodekey, 如果是已有inode任务, enqueue直接返回, 不入队 任务开始执行, 尝试根据inodekey获取inode信息, 获取不到就退出; 不是s3类型的inode退出 对于每一个s3类型的inode来说, 对每一个index内的chunkinfo按照chunkid升序排序. 对于一个chunk来说,chunkinfo数量大于20即进行处理 计算变更 - 记录整个chunk最大的chunkid0 码力 | 3 页 | 101.58 KB | 6 月前3
PFS SPDK: Storage Performance Development Kit●读写都需要CPU拷贝数据 ●不能发挥某些NVME的功能,例如write zero10/17/22 5 为什么用PFS ●对代码比较熟悉 ●找一个能管理裸盘,具有产品级可靠性的代码挺难的 ●PFS支持类POSIX文件的接口,与使用EXT4的存储引擎代码很像, 所以容易移植现有代码到PFS存储引擎 ●CurveBS对文件系统元数据的操作非常少,对文件系统的要求不高, 所以不需要元数据高性能,这方面PFS也合适10/17/22 int fd, off_t offset, size_t max_count) ●这个函数的实现是按PRP的规定来做的 ●IOPortal就是IOBuf,是BRPC存放数据的类 ●CurveBS 使用brpc::Controller 的attachment 发送数据 ●attachment是一个IOBuf ●IOBuf直接通过rdma发送出去 ●以上过程在读chun0 码力 | 23 页 | 4.21 MB | 6 月前3
Curve质量监控与运维 - 网易数帆设计方法 500+用例 异常测试 40+自动化用例 混沌测试 20轮自动化随机故障注入 12/33单元测试 单元测试是软件开发的过程中最基本的测试,它用来对一个模块、一个函数或者一个类来进行 正确性检验的测试工作。 curve通过lcov统计代码覆盖率,衡量单元测试的完备程度,如下图所示: 13/33集成测试 测试目的 测试内容 单元测试后,有必要进行集成测试,发现 并排除在模块连接中可能发生的上述问题, 日报,并通过邮件发送。 Grafana——开源的度量分析和可视化工具, curve利用它进行数据可视化展示。 20/33监控指标(metric)的生成 Curve使用brpc内置的bvar计数器类库,来生成监控指标,其特点是: thread local存储,减少了cache bouncing,性能开销极小; 支持在 brpc server 服务的端口上以web portal的方式导出和查询监控指标:0 码力 | 33 页 | 2.64 MB | 6 月前3
CurveFS方案设计根据之前的调研,分级元数据可以分为两种实现方式。一是类似 fastcfs 把 inode 和 dentry 合并为一个 dentry 的结构,dentry 中包含一些指针,通过指针实现数据的共享;第二类类似 moosefs 和 chubaofs,使用 inode 和 dentry 两种结构,dentry 中记录 parentID、InodeID、filename 等信息,inode 中记录文件空间占用、文件属性等信息,通过共享 CurveFS空间分配调研#chubaofs moosefs: moosefs空间分配调研 polarfs: CurveFS文件存储设计参考方案(元数据存储在卷上方案)#PolarFS 上述fs可以分为两类 chubaofs/moosefs 属于利用本地文件系统去构建分布式fs。一个文件的数据对应本地文件系统上的一个文件,通过本地文件系统的打洞功能实现部分空间的回收。 blustore/polarfs0 码力 | 14 页 | 619.32 KB | 6 月前3
PolarDB开源生态介绍 - 杭州Meetup 2022.10.15PolarDB开源生态介绍 阿里云 digoal为什么开源是未来?阿里巴巴开源缩略图数据库开源大图PolarDB开源云原生分布式数据库家族 : 兼容MySQL&PostgreSQL用户 生态伙伴 人才 降本提效 团队成长 商业服务 用户合作 • 联合实验室 PolarDB云原生分布式开源数据库产品 高校合作 • 课程合作 • 科研项目合作 • 工作组 高校 协同育人、教学优化成果0 码力 | 7 页 | 1.45 MB | 6 月前3
CurveFS对接S3方案设计curve块存储就有的模块,负责将快照数据上传到S3,这里我们对于s3的操作主要复用了这 个模块。该模块使用的AWS的sdk,并没有实现append接口 write流程 主要流程逻辑见上面的流程图,对流程补充有以下几点: 1.对于overlap的场景,会将inode中的versio+1,但是不会处理被overlap的相关数据,由后台进行处理。 2.如果是带了append flag则在writ0 码力 | 11 页 | 145.77 KB | 6 月前3
Curve核心组件之mds – 网易数帆segment是给文件分配空间的最小单位 。 • PageFileChunkInfo: chunk是数据分片的最小单元。 segment 和 chunk的关系如下图:NAMESERVER Namespace的文件的目录层次关系如右图。 文件的元数据以KV的方式存储。 • Key:ParentID + “/”+ BaseName; • Value:自身的文件ID。 这种方式可以很好地平衡几个需求: • 文件列目录:列出目录下的所有文件和目0 码力 | 23 页 | 1.74 MB | 6 月前3
共 16 条
- 1
- 2













