go-rpc概要与暂停更新说明
Posted 一眼花开
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go-rpc概要与暂停更新说明相关的知识,希望对你有一定的参考价值。
暂停
由于最近工作上面需要赶进度,另外也有些个人事情需要处理。本订阅号将暂停2周更新哈~,五一劳动节过后再更新。谢谢大家的理解~~
先简单说下我的RPC实现思路,具体可以看我的github代码:https://github.com/polariseye/rpc-go.git。
设计初衷:
1. 同一个链路可以两边RPC(当然这个使用不当也会有陷阱)
2. 能够比较方便地在其他语言中实现client端
3. 能够方便扩展序列化反序列化的实现(比如Bson)
4. 使用简单,客户端和服务端在对外接口上面应该是保持一致的(因为是双向RPC)
采用分层实现:
协议部分处理:RpcConnection 协议处理和请求应答包解析
事件监听:RpcWatcher 提供对整个rpc过程的响应处理
客户端包装:RpcClient 客户端连接时使用
服务端包装:RpcServer 服务端连接管理的包装
实现了两种对象序列化解析:
1. Json序列化反序列化实现 JsonConvertor
2. protobuf序列化反序列化实现 ProtobufConvertor
待完善的内容:
1. 底层协议解析部分没有做内存管理,会带来较多的GC
2. 如果返回值为nil,则会直接跳过。而client端直接会使用默认值(这个可以业务要求不能为nil)
3. 代码注释和文档需要后续再完善
结语:
1. 整个实现已初步完成功能性测试。欢迎大家试用和反馈问题哈
以上是关于go-rpc概要与暂停更新说明的主要内容,如果未能解决你的问题,请参考以下文章