BRPC与UCX集成指南## 用UCX实现BRPC对RDMA的支持 徐逸锋 ## BRPC简介 ·BRPC是Curve的基础通讯框架 ·支持远程过程调用 -C++ -TCP传输 -bthread协程(m:n调度,减少基于内核的下文切换,减少cache miss) ·多协议支持 -baidu_std,http,grpc... .protobuf BRPC简介 Client/Server架构 使用Protobuf定义协议文件 (EchoResponse); }; ## BRPC简介 EchoRequest client EchoResponse server ## BRPC简介 •Channel类 - 代表一个连接,Client通过Channel发送请求和接收应答 Server类 - 代表一个服务器,可以注册不同的接口服务,例如上面的EchoService ## BRPC SERVER // Generally Generally you only need one Server. brpc::Server server; // Instance of your service. example::EchoServiceImpl echo_service_impl; // Add the service into server. Notice the second parameter, because the // service0 码力 | 66 页 | 16.29 MB | 1 年前3
PFS SPDK: Storage Performance Development Kitssize_t pfs_pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset); • IO vector的接口主要是为了与brpc的iobuf对接,iobuf由若干地址不连续的block组成,一次IO提交可以提高效率。 ## PFS+SPDK 的部分读写的实现 某些盘只支持4k单位读写,但是CurveBS支持512字节读写 ·直接DMA读写,要求的内存必须是DPDK的hugetlb内存 ·必须符合NVME内存读写地址对齐要求 offset 512对齐 ·为零copy提供接口 ## BRPC IOBuf DMA ·修改BRPC,允许使用dpdk内存作为IOBuf的内存分配器 ·BRPC接收到的数据在IOBuf中,IOBuf直接使用于NVME DMA传输 ·使用IOBuf内存读nvme,避免自己写PRP页面对齐内存分配代码 criptor(int fd, off_t offset, size_t max_count) 这个函数的实现是按PRP的规定来做的 ·IOPortal就是IOBuf,是BRPC存放数据的类 CurveBS 使用brpc::Controller 的attachment 发送数据 attachment是一个IOBuf .IOBuf直接通过rdma发送出去 ·以上过程在读chunk的代码路径上实现了零copy。0 码力 | 23 页 | 4.21 MB | 1 年前3
Curve质量监控与运维 - 网易数帆测试方法论 Curve监控体系 总体架构 | 指标生成 | 后端采集 | 可视化展示 Curve运维体系 Curve运维特性 | 运维工具 ## Curve监控架构 Curve利用brpc内置的bvar组件生成监控指标,并使用部署在docker的三个组件进行监控指标的处理与展示: ☐ Prometheus——面向云原生应用程序的开源的监控&报警工具,curve利用它进行监控指标的采集与存储。 e1bc65b200b7676a/p21_1.jpg) ## 监控指标(metric)的生成 Curve使用brpc内置的bvar计数器类库,来生成监控指标,其特点是: ☐ thread local存储,减少了cache bouncing,性能开销极小; ☐ 支持在 brpc server 服务的端口上以web portal的方式导出和查询监控指标: @ -curve: ~$ curl 2. Prometheus依据上述配置文件,发现相应服务。 3. Prometheus server以pull的方式,定期从Curve集群中MDS、ChunkServer、Client等组件的brpc Server拉取相应的监控指标,并存储在本地。  Metadata store MDS Master select ## ChunkServer Clients MDS Peers BRPC RAFT Service RAFT Service RAFT Service ..... CopySet..... CopySet..... RAFT WAL RaftMeta d/1/36d12a333823f1a2a29fcb2a7fbb256d/p16_1.jpg) ## CurveFS Metadata Server Clients MDS Peers BRPC SSD log entry (term, data ...) log entry (term, data ...) log entry (term, data ...) Term VoteFor0 码力 | 23 页 | 6.53 MB | 1 年前3
Curve核心组件之chunkservera254fa15bd989/p6_3.jpg) ## ChunkServer架构 ChunkServer通过RPC网络层与client,MDS,其他ChunkServer通信。RPC网络层是由brpc框架去完成的。包括读写socket,rpc协议解析等。  ## ChunkServer架构 Metric统计模块使用brpc中的bvar计数器,统计一些IO层面和copyset层面的一些指标,方便监控和跟踪。  ## Apache bRPC 正式毕业,成为 ASF 顶级项目 2023 年 1 月 26 日, Apache 软件基金会官方宣布 Apache bRPC 正式毕业, 成为 Apache 顶级项目(TLP)。 bRPC 于 2014 年诞生于百度基础架构部,用 C++ 编写的工业级 RPC 框架,常用于搜索、存储、机 框架,常用于搜索、存储、机器学习、广告、推荐等高性能系统。2017 年开源,2018 年 11 月正式捐献给 Apache 软件基金会。 Apache bRPC 是百度继 ECharts 和 Doris 之后,又一里程碑式的开源项目。  ## Apache Kvrocks0 码力 | 87 页 | 31.99 MB | 2 年前3
2021 中国开源年度报告|10|apache/ozone|1097.2327026122800|298| |11|apache/incubator-kyuubi|622.060165093585|675| |12|apache/incubator-brpc|484.79766944803200|2162| |13|WeBankFinTech/Linkis|446.81373349117800|753| |14|apache/servicecomb-java-chassis|436 |10|apache/ozone|2897|0|1062|4130|900| |11|apache/incubator-kyuubi|2910|340|771|2494|42| |12|apache/incubator-brpc|688|184|107|82|64| |13|WeBankFinTech/Linkis|281|273|321|277|231| |14|apache/servicecomb-java-chas 软件基金会|小米|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|| 中国开源人当选国际基金会重要职位 • 吴晟:当选 Apache0 码力 | 132 页 | 14.24 MB | 2 年前3
TGT服务器的优化一般用于输出内核本地块设备 • TCMU • 作为LILO支持用户态的接口 • 如何评价LILO • 输出内核块设备I/O效率高 - 不利于把复杂的存储协议代码搬进内核,例如(curve, brpc, c++, protobuf 等) • TCMU多了一层转接,配置过程复杂,业界踩的坑不够多。 • TCMU的用户态代码会受到框架约束,不够灵活。 ## iSCSI target 服务器 •0 码力 | 15 页 | 637.11 KB | 1 年前3
Curve核心组件之Client - 网易数帆## I O分发线程 7. 从队列中取出子请求准备发送 8. 发送依赖复制组leader,可能会向Chunkserver查询复制组leader 9. 发送写请求给Chunkserver ## BRPC线程 10. Chunkserver处理完成后返回RPC Response 11. 用户请求的所有子请求完成后,调用 IOTracker::Done 12. 调用异步请求回调,返回用户 ##0 码力 | 27 页 | 1.57 MB | 1 年前3
Curve核心组件之snapshotclone支持Lazy和非Lazy两种模式克隆 • 支持从快照克隆和从镜像(卷)克隆 • 支持从快照回滚 • 高可用,克隆任务中断自动拉起继续克隆 ## 快照克隆服务器架构 ## HttpService: • 基于brpc提供restful API的对外http接口 ## SnapshotService & CloneService: • Service层面区分上层请求为同步接口调用,还是异步接口调用,0 码力 | 23 页 | 1.32 MB | 1 年前3
共 12 条
- 1
- 2













