apache drill rpc 简单说明

drill 是基于netty 4 做为rpc的底层处理,同时基于了 protobuf 进行通信层的处理(减少堆数据的传输)
客户端以及server 都利用了CompleteRpcMessage protobuf 消息包装进行request,response 以及errors 处理
通信是使用流模式 进行CompleteRpcMessage 想对端消息的处理

CompleteRpcMessage 的构成

CompleteRpcMessage 包含三部分,RpcHeader,Protobuf Body (bytes) RawBody (bytes)

drill channel pipeline 的handlers

drill rpc 层构建在netty,异步网络框架之上
参考处理图

 

 

包含了 Encryption/Decryption handler, ChunkCreation handler 在 sender 端处理 同时LengthFieldBasedFrameDecoder在接收端必须添加
ChunkCreation 主要是对于输出的rpc 消息进行拆分

说明

dremio rpc 处理部分与drill 是类似的,只是dremio 为了方便模块化自己提取了一个通用的模块base-rpc 同时消息格式相对drill 做了不少优化调整,fabric 服务就使用了
此模块的能力,同时搞了一个自己的FabricProtocol协议,不少基于rpc 通信的服务基本都会扩展此接口(内部消息通信基于了
protobuf)

参考资料

services/base-rpc
protocol
services/fabric-rpc/src/main/java/com/dremio/services/fabric/api/FabricProtocol.java
https://drill.apache.org/docs/rpc-overview/

posted on   荣锋亮  阅读(40)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2022-01-12 Appactive 阿里云开源的应用多活基础框架
2022-01-12 juicefs 内部一个定时元数据备份
2021-01-12 postgres fdw extensions 容器镜像
2021-01-12 使用har分析web 应用性能
2021-01-12 postgres-fdw 集成cratedb 的尝试的几个问题
2019-01-12 tile38 server 密码保护
2019-01-12 tile38 roaming-geofences 试用

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示