前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单说说 RPC 框架,你 悟到了吗?

简单说说 RPC 框架,你 悟到了吗?

作者头像
看、未来
发布2021-10-09 12:00:17
2440
发布2021-10-09 12:00:17
举报
文章被收录于专栏:CSDN搜“看,未来”

愿打开此篇对你有所帮助。

请添加图片描述
请添加图片描述

网上讲的不明不白的居多,我来试试,争取让做过后端开发项目的学生能看明白,基础再往下我就没办法了。

如果有大佬,可以帮我看看我理解的是不是有错。


最基本的 CS 框架先说一下是怎么交流业务的吧,不画图,画图麻烦,几句话的事情而已。

1、客户端把请求打个包,发给服务端。 2、服务端收到请求包,解包,判断业务类型。 3、根据业务类型,调用相应方法,有数据返回则返回,没有则结束。 4、若有数据返回,服务端再打个包,发回给客户端。

熟悉吧。

写个简单架构设计哈:

代码语言:javascript
复制
客户端

网络层

业务转发层

业务层

model层

持久层

这个难道不是RPC吗?有点迷


RPC,远程过程调用协议,Remote Procedure Call Protocol。网上有一部分人把 RPC 和 什么传入服务端类、函数名及参数,然后直接调用服务端方法扯在一起,以去掉上面的业务转发层。不晓得,云里雾里的,就看那一层业务转发层那么讨厌吗,曾经我也有点喜欢这种直接传函数名的方式,感觉真直接。但是去思考如何实现的时候有点想不明白。


来张 RPC 调用的图吧:

在这里插入图片描述
在这里插入图片描述

其实吧,把 ORM 和 RPC 放在一起理解我觉得会比较好一些,初学的时候,我们调用数据库,是在业务层面直接拿数据库句柄,传SQL语句进去,获取结果。 后来使用 ORM 框架,将数据库和业务层解耦,我们在业务层只需要将参数传入数据库映射层,由映射层去构造SQL语言,执数据库句柄,和数据库交互,如果有结果就把结果返回给业务层。 从此我们在业务层再也不用关心数据库选型、数据表、SQL语句等具体实现。

那 RPC 呢,我是不是可以这样理解。我们在业务层要向服务端发送请求包的时候,我们要拿着通信套接字,然后构造数据包,往里面 send。(别说数据包模块是分离出来的,分离出来了不要调用数据包模块接口吗?)当服务端返回结果时,又要拿着通信套接字,从里面 recv 数据包,然后分包,解包,获取数据。 这一切细节都要放在业务层,亲力亲为。如果是长连接还稍微好点,短链接像HTTP,我还交流一次连一次啊? 所以,我们就把和网络交流的这些流程都抽象到一个层,上面是写个 RPCruntime 哈,咱也叫它 model 层呗,网络映射层。

ORM 框架使得业务层调用数据库就像调用本地方法一样,RPC 则使得调用网络通信接口如同调用本地方法一样。 这样讲,明白吗?流程还是我们最开始的那个C/S流程,只是加了个网络通信映射层。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/10/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档