BRPC与UCX集成指南●构建于uct之上,实现更加高级的功能,容易使用,但有一定开销。 ●UCT和UCP两者都有context概念,但是UCT只对一块网卡,而UCP把若干个UCT组合起 来,自动选择最快路径传输。 ●高级特性 –大消息报文的自动分片传输 –Active message, atomic operation, tag match, stream27 典型的RDMA栈28 UCX 编程的一些基本概念 ●Context ●Ep –连接对象,在ep上请求发送和接收29 UCP 消息接口类型 ●Active message –速度最快,被brpc使用作为消息传递 –消息通过回调函数接收 –消息异步发送 ●Tag –MPI使用 ●Stream –官方不推荐30 WORKER ●worker是UCX通讯中的核心概念,它是一个进度引擎(progress engine) ●worker既不是协程也 ●提供Release Connection。 –在UcpCm决定关闭连接时53 UcpWorker的实现 ●使用了ucp active message –当消息很短时,ucx使用内部缓冲提供给brpc(比较快) –当消息很大时,由brpc提供接收缓冲区(rndv,rendezvous) ●阀值可调 –接收和发送使用无锁队列 ●UcpWorker接收时写入UcpConnection的无锁队列0 码力 | 66 页 | 16.29 MB | 6 月前3
Raft在Curve存储中的工程实践等类 型的持久化存储卷 • 对接PolarFS作为云原生数据库的高性能存储 底座,完美支持云原生数据库的存算分离架 构 • Curve作为云存储中间件使用S3兼容的对象 存储作为数据存储引擎,为公有云用户提供 高性价比的共享文件存储 • 支持在物理机上挂载使用块设备或FUSE文件 系统开源社区 社区运营 生态共建 开源共建 源码兜底 技术领先 目标 方法 影响力 降本 获客 他服务器,当保证安全性的时候告诉其他服务器应用 日志条目到他们的状态机中。 • Candidate: 发起选举。获取大多数选票的候选人将 成为领导者。 • Follower: 响应来自其他服务器的请求,如果接受不 到消息,就变成候选人并发起一次选举。 • 时间被划分成一个个的任期,每个任期开始都是一次 选举。 • 选举成功,领导⼈会管理整个集群直到任期结束。 • 选举失败,这个任期就会没有领导⼈⽽结束。 raft选举leader 基于rocksdb的存储引擎 • 要求存储的元数据的大小不超过内存的大小 • raft apply的请求,数据都在内存,直接修改 内存中的数据 • raft snapshot,为避免快照对正常操作的影 响,利用操作系统的内存写时复制技术, fork一个进程创建完整的状态机的内存快照, 后台遍历内存,把内存的数据持久化到本地 磁盘 基于memory的存储引擎 • 存储元数据量不受内存大小限制0 码力 | 29 页 | 2.20 MB | 6 月前3
PFS SPDK: Storage Performance Development Kit1 基于SPDK的CurveBS PFS存储引擎10/17/22 2 Why ●为了减少使用cpu做内存copy,减少系统调用 ●发挥某些被操作系统屏蔽的功能,例如nvme write zero ●根据阿里《When Cloud Storage Meets RDMA》的说法 ●在100Gbps网络带宽时,内存带宽成为瓶颈 ●Intel Memory Latency Checker (MLC)测试得到的CPU内存带宽是 磁盘的读写 ●基于EXT4的存储引擎,依然需要通过系统调用来回切换 ●读写都需要CPU拷贝数据 ●不能发挥某些NVME的功能,例如write zero10/17/22 5 为什么用PFS ●对代码比较熟悉 ●找一个能管理裸盘,具有产品级可靠性的代码挺难的 ●PFS支持类POSIX文件的接口,与使用EXT4的存储引擎代码很像, 所以容易移植现有代码到PFS存储引擎 ●CurveBS对文件系0 码力 | 23 页 | 4.21 MB | 6 月前3
Curve元数据节点高可用revision:3], 因此watch Leader/MDS2。 step3: MDS1退出后,MDS2收到MDS1的key被删除的消息,Campagin成功© XXX Page 13 of 30 异常情况1:备MDS2中途退出 step1:MDS3收到MDS2的key被删除的消息 step2: MDS3重新获取到有相同前缀Leader的key为{ [Leader/MDS1, revision:2]} etcd集群leader失效,到重新选举出leader的耗时 ElectionTime > ElectionTimeout 4.2.2 异常情况1:MDS1退出,可以正常处理 MDS2收到leader/MDS1被删除的消息,Campaign成功,成为leader© XXX Page 20 of 30 2. mds2当选leader之后,同样与etcd server有三类交互: ①与etcd server维持租约。 PeriodicGetTime ① 红色的点是etcd集群选主成功的时间点,选主成功之后MDS1的lease过期,Leader/MDS1被删除 ② 绿色的点是MDS2收到Leader/MDS1删除消息的时间点。此时MDS2启动并提供服务 ③ 黄色的点是最坏情况,MDS1在绿色点和红色点之间成功get到leader/MDS1, 在下一个周期get失败 这种情况下出现双主的最长时间为PeriodicGetTime(蓝色直线段),0 码力 | 30 页 | 2.42 MB | 6 月前3
Curve 分布式存储设计主要挑战和支持场景Curve Roadmap 1. 架构 1. 文件存储支持分布式缓存、完善冷热数据分层存储能力 2. 完善混合云、公有云上部署架构 3. 完善高性能3副本存储引擎,支持混合盘 4. 文件存储支持数据存储到HDFS、rados等引擎 2. 性能 1. 完善RDMA/SPDK方案,发布稳定版本 2. 更高性能硬件选型、适配及性能调优 3. 大文件读写性能优化,RAFT优化,降低写放大 30 码力 | 20 页 | 4.13 MB | 6 月前3
CurveFS Client 概要设计server接口获取文件和目录信息等 与现有块设备client交互,调用块设备接口,对卷进行读写。 向上对接fuse接口,协调上述模块交互,实现功能。 main 主函数模块,类似deamon,接收mount消息并处理(fuse session)。 除上述功能以外,还需实现文件系统创建和fuse挂载工具,功能主要是: 创建文件系统,指定文件系统的名字、卷大小(多文件系统)、 扩展文件系统? 挂载fuse0 码力 | 11 页 | 487.92 KB | 6 月前3
curvefs client删除文件和目录功能设计件节点才会从 被清除。 reserve 使用了session机制,记录client端的open状态 通过META文件系统访问reserve 使用CUTOMA_FUSE_RESERVED_INODES消息保持和释放inode 实现了Timer,定期判断是否还有session,如果没有client打开,则进行清理。 优点: 通过meta文件系统来管理trash,更为优雅。© XXX Page0 码力 | 15 页 | 325.42 KB | 6 月前3
共 7 条
- 1













