前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何实现一个简单的rpc

如何实现一个简单的rpc

作者头像
路行的亚洲
发布2021-07-23 12:30:21
5630
发布2021-07-23 12:30:21
举报
文章被收录于专栏:后端技术学习

为了实现一个自定义的rpc,如果想实现一个rpc,其本质是将远程调用可以和本地调用一样。而要实现这样的功能,首先我们需要一个解码器Decoder和一个编码器Encoder、对半包粘包的处理。同时为了保证网络传输的高性能,我们采用Netty做数据传输。调用采用动态代理去进行调用。对应标签的解析,采用自定义标签,因此可以考虑使用spring的自定义标签进行解析。采用观察者模式或者采用后置处理器对自定义bean进行注入到spring bean的注册表中。对应服务的维护可以考虑使用注册中心对服务信息进行维护。对于协议可以采用适配器模式进行适配。

1.编解码

解码编码器的实现Netty中的MessageToByteEncoder、ByteToMessageDecoder,同时自定义一个序列化器进行序列化和反序列化:

代码语言:javascript
复制
1.消息转换成字节的过程 是编码Encoder的过程,同时这个过程是一个序列化的过程,同时使用Netty的byteBuf写入数据长度和字节信息
2.字节转换成消息的过程 是解码Decoder的过程,同时这个过程是一个反序列化的过程,同时使用ByteBuf对数据进行读取、反序列化,同时拿到长度

2.请求和响应

代码语言:javascript
复制
请求Request:请求的id、类名称、方法名称、参数类型、参数对象
响应Response:请求的id、响应的状态、结果

3.服务端调用流程

4.客户端调用流程

如果使用异步,可以考虑实现在ObjectProxy中实现InvocationHandler#invoke,拿到当前的请求中的类名称、方法名称、参数类型、参数对象等,选择相应的handler进行业务处理。这个过程包括创建请求createRequest和发送请sendRequest。

5.更多

考虑到服务的高可用性、配置中心、元数据中心、注册中心等。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后端技术学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.编解码
  • 2.请求和响应
  • 3.服务端调用流程
  • 4.客户端调用流程
  • 5.更多
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档