BRPC与UCX集成指南
1 用UCX实现BRPC对RDMA的支持 徐逸锋2 BRPC简介 ●BRPC是Curve的基础通讯框架 ●支持远程过程调用 –C++ –TCP传输 –bthread协程(m:n调度,减少基于内核的下文切换 ,减少cache miss) ●多协议支持 –baidu_std,http,grpc… ●protobuf3 BRPC简介 ●Client/Server架构 ●使用Protobuf定义协议文件 proto:4 BRPC简介 client server EchoRequest EchoResponse5 BRPC简介 ●Channel类 –代表一个连接,Client通过Channel发 送请求和接收应答 ●Server类 –代表一个服务器,可以注册不同的 接口服务,例如上面的EchoService6 BRPC SERVER7 BRPC SERVER8 BRPC client9 client9 BRPC EndPoint EndPoint是一个代表通讯地址的数据结构, 是一个C++类。 字段: ip,port ●在Socket创建时需要提供EndPoint ●Socket::Connect时需要Remote EndPoint ●Accept的Socket可以获得Remote EndPoint10 BRPC Socket对象 ●brpc最终的网络通讯都集中在socket对象里面0 码力 | 66 页 | 16.29 MB | 5 月前3PFS SPDK: Storage Performance Development Kit
●ssize_t pfs_pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset); ●IO vector的接口主要是为了与brpc的iobuf对接,iobuf由若干地址不连 续的block组成,一次IO提交可以提高效率。10/17/22 8 PFS+SPDK 的部分读写的实现 ●某些盘只支持4k单位读写,但是CurveBS支持512字节读写 的hugetlb内存 ●必须符合NVME 内存读写地址对齐要求 ●offset 512对齐 ●为零copy提供接口10/17/22 10 BRPC IOBuf DMA ●修改BRPC,允许使用dpdk内存作为IOBuf的内存分配器 ●BRPC接收到的数据在IOBuf中,IOBuf直接使用于NVME DMA传输 ●使用IOBuf内存读nvme,避免自己写PRP页面对齐内存分配代码10/17/22 fd, off_t offset, size_t max_count) ●这个函数的实现是按PRP的规定来做的 ●IOPortal就是IOBuf,是BRPC存放数据的类 ●CurveBS 使用brpc::Controller 的attachment 发送数据 ●attachment是一个IOBuf ●IOBuf直接通过rdma发送出去 ●以上过程在读chunk的代码0 码力 | 23 页 | 4.21 MB | 5 月前3Curve质量监控与运维 - 网易数帆
Client Daily reporter MDS MDS SnapshotClone Server HTTP采集 bvar数据 定时获取图表 并发送邮件 获取集群拓扑信息 Curve利用brpc内置的bvar组件生成监控指标,并 使用部署在docker的三个组件进行监控指标的处 理与展示: Prometheus——面向云原生应用程序的开源 的监控&报警工具,curve利用它进行监控指标 Grafana——开源的度量分析和可视化工具, curve利用它进行数据可视化展示。 20/33监控指标(metric)的生成 Curve使用brpc内置的bvar计数器类库,来生成监控指标,其特点是: thread local存储,减少了cache bouncing,性能开销极小; 支持在 brpc server 服务的端口上以web portal的方式导出和查询监控指标: 常用的bvar数据类型: bvar::Adder2. Prometheus依据上述配置文件,发现相应服务。 3. Prometheus server以pull的方式,定期从Curve集群中 MDS、ChunkServer、Client等组件的brpc Server拉取 相应的监控指标,并存储在本地。 22/33监控指标的可视化 Curve通过Grafana实现监控指标的可视化,其展示效果如下: 23/33丰富的metric 24/33每日报表 0 码力 | 33 页 | 2.64 MB | 5 月前32021 中国开源年度报告
675 11 apache/incubator- kyuubi 2910 340 771 2494 42 12 apache/incubator-brpc 484.79766944803200 2162 12 apache/incubator- brpc 688 184 107 82 64 13 WeBankFinTech/Linkis 446.81373349117800 753 13 WeBankFinTech/ 675 11 apache/incubator- kyuubi 2910 340 771 2494 42 12 apache/incubator-brpc 484.79766944803200 2162 12 apache/incubator- brpc 688 184 107 82 64 13 WeBankFinTech/Linkis 446.81373349117800 753 13 WeBankFinTech/ 2020/6/22 Apache InLong Apache 软件基金会 腾讯 2019/11/3 Apache Teaclave Apache 软件基金会 百度 2019/8/19 Apache brpc Apache 软件基金会 百度 2018/11/13 Apache Doris Apache 软件基金会 百度 2018/7/18 126 中国开源人当选国际基金会重要职位 ● 吴晟0 码力 | 132 页 | 14.24 MB | 1 年前32023 中国开源开发者报告
前端技术复杂吗?这应该是技术和供应链进步带来的结果。就跟城市化一 样,不可逆,不可阻挡。 32 / 87 1 1 开源中国完成 B+ 轮战略融资,7.75 亿 开源开发者事件回顾 Apache bRPC 正式毕业,成为 ASF 顶级项目 近日,开源共识(上海)网络技术有限公司(开源中国 / Gitee)完成了 B+ 轮战略融资,此轮融资由天际资本领投,上海科创旗下海望资本联合泰 达实业、浦东软 日,Apache 软件基金 会官方宣布 Apache bRPC 正式毕业,成 为 Apache 顶级项目(TLP)。 bRPC 于 2014 年诞生于百度基础架构 部,用 C++ 编写的工业级 RPC 框架, 常用于搜索、存储、机器学习、广告、推 荐等高性能系统。2017 年开源,2018 年 11 月正式捐献给 Apache 软件基金会。 Apache bRPC 是 百 度 继 ECharts 和 Doris0 码力 | 87 页 | 31.99 MB | 1 年前3Curve核心组件之chunkserver
能,底层基于ext4文件系统,操 作实际的磁盘。 ChunkServer架构ChunkServer通过RPC网络层与client, MDS,其他ChunkServer通信。RPC 网络层是由brpc框架去完成的。包 括读写socket,rpc协议解析等。 ChunkServer架构RPC Service层是对外提供的一些RPC服 务的接口。包含的RPC服务有: • ChunkService。IO相关操作 关的功 能,内部是一个线程池,主要负责异 步完成克隆chunk的数据补全。关于克 隆相关的内容将会在快照克隆相关介 绍文档中详细介绍。 ChunkServer架构Metric统计模块使用brpc中的bvar计数 器,统计一些IO层面和copyset层面的 一些指标,方便监控和跟踪。 ChunkServer架构并发控制层,负责对chunkserver的IO 请求进行并发控制,对上层的读写请0 码力 | 29 页 | 1.61 MB | 5 月前3TGT服务器的优化
一般用于输出内核本地块设备 • TCMU • 作为LILO支持用户态的接口 • 如何评价LILO • 输出内核块设备I/O效率高 • 不利于把复杂的存储协议代码搬进内核,例如(curve, brpc, c++, protobuf 等) • TCMU多了一层转接,配置过程复杂,业界踩的坑不够多。 • TCMU的用户态代码会受到框架约束,不够灵活。iSCSI target 服务器 • TGT(STGT)0 码力 | 15 页 | 637.11 KB | 5 月前3Curve核心组件之Client - 网易数帆
IO线程模型 IO分发线程 7. 从队列中取出子请求准备发送 8. 发送依赖复制组leader,可能会向 Chunkserver查询复制组leader 9. 发送写请求给Chunkserver BRPC线程 10.Chunkserver处理完成后返回RPC Response 11.用户请求的所有子请求完成后,调用 IOTracker::Done 12.调用异步请求回调,返回用户CLIENT0 码力 | 27 页 | 1.57 MB | 5 月前3Curve核心组件之snapshotclone
• 克隆的特点 • 支持Lazy和非Lazy两种模式克隆 • 支持从快照克隆和从镜像(卷)克隆 • 支持从快照回滚 • 高可用,克隆任务中断自动拉起继续克隆快照克隆服务器架构 • 基于brpc提供restful API的对外http接口 HttpService: • Serivce层面区分上层请求为同步接口调用,还是异步接口调用, 同步接口调用直接调用Core层接口实现功能,异步接口创建Task,0 码力 | 23 页 | 1.32 MB | 5 月前32021 中国开源年度报告
2327026122800 298 2897 11 apache/incubator-kyuubi 622.060165093585 675 2910 12 apache/incubator-brpc 484.79766944803200 2162 688 13 WeBankFinTech/Linkis 446.81373349117800 753 281 14 ap InLong Apache 软 件基金会 腾讯 2019/11/3 Apache Teaclave Apache 软 件基金会 百度 2019/8/19 Apache brpc Apache 软 件基金会 百度 2018/11/13 Apache Doris Apache 软 件基金会 百度 2018/7/18 中国开源人当选国际基金会重要职位0 码力 | 199 页 | 9.63 MB | 1 年前3
共 10 条
- 1