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/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用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 试用