zenoh rpc 内部实现简单说明

以前简单提过zenoh rpc,整体来说功能点很不错,但是目前实现上相对简单,以下简单说明下内部实现处理

整体内部实现

整体上并没有太多特殊的地方,核心还是利用了zenoh 的declare_queryable 能力,对于服务的发现,服务访问,基于了key_exps

Server 处理

  • 参考图

如下图,zenoh rpc 对于服务定义了一个rpc 抽象接口,具体的服务需要实现定义(call 进行实际方法的处理,属于一个服务的dispatcher ),每个服务注册基于session zid 作为唯一标识进行区分,会在@rpc/<id>/** 上注册 declare_queryable 处理能力,包含了rpc 实际方法处理以及metadata 的查询,对于实际服务的方法调用都是query.replay 进行数据response 处理,当然还注册了基于服务名的liveliness token(此能力很强大,可以进行实时状态的追踪,但是目前的rpc 实现缺少使用),在内部方法调用处理上基于了server 提供的service_call 会基于key 进行拆分(包含了id,服务名称,方法名称)

client 处理

client 处理部分基于了server 抽象的一个RPCClientChannel,处理上如下图,目前比较多,client 部分需要自己实现一个获取服务id 找服务的方法,实际client 做的事情比较多,官方代码中有一个示例可以参考

说明

基于zenoh 作为rpc 的传输层是一个很不错的选择,可以实现灵活的跨网络访问,目前zenoh rpc 上有利用到zenoh 的一些新特性(比如liveliness)但是目前能力上还是比较弱的,实际上我们可以参考官方的机制,自己扩展,同时也可以实现灵活的跨语言处理(目前zenoh 以及提供了不少语言的sdk),当前源码也相对比较简单,可以阅读学习下

参考资料

https://github.com/ZettaScaleLabs/zenoh-rpc

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

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2023-01-14 caddyserver 新架构
2022-01-14 How Sandstorm Works
2022-01-14 jimfs java 内存文件系统实现
2022-01-14 使用kind 部署k8s in docker
2022-01-14 来自Castled 官方的一篇性能对比
2020-01-14 grok_exporter v1.0 rc 发布
2020-01-14 Linux libreoffice 字体问题解决

导航

< 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
点击右上角即可分享
微信分享提示