资讯专栏INFORMATION COLUMN

RPC框架是啥?

xietao3 / 654人阅读

摘要:知乎的点赞,应该还是可以参考的。除了网络通信,还需要有高效的序列化框架,以及一种寻址方式,如果是带会话状态的调用,还需要有会话的状态保持的功能。一般来说,框架实现的架构原理都是类似的。服务端响应主要是服务端业务逻辑实现。

本博客 猫叔的博客,转载请申明出处

在我刚刚了解分布式的时候,经常对RPC和分布式有些混淆,甚至一直以为两者对等,所以我们先看看他们有什么区别

RPC实现了服务消费调用方Client与服务提供实现方Server之间的点对点调用流程,即包括了stub、通信、数据的序列化/反序列化。且Client与Server一般采用直连的调用方式。

而分布式服务框架,除了包括RPC的特性,还包括多台Server提供服务的负载均衡、策略及实现,服务的注册、发布与引入,以及服务的高可用策略、服务治理等等。

那么RPC是什么呢?

百度百科是这样表示的:

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

它甚至给出了工作原理,这一点很惊喜。

1.调用客户端句柄;执行传送参数

2.调用本地系统内核发送网络消息

3.消息传送到远程主机

4.服务器句柄得到消息并取得参数

5.执行远程过程

6.执行的过程将结果返回服务器句柄

7.服务器句柄返回结果,调用远程系统内核

8.消息传回本地主机

9.客户句柄由内核接收消息

10.客户接收句柄返回的数据

我喜欢搜查更多的信息资料,所以我又找到了知乎上的回答。

知乎1.7k的点赞,应该还是可以参考的。

恰如回答提到的,RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

至于为什么使用RPC?答主也提到,无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如不同系统间的通讯,甚至不同组织间的通讯。

这里再说一下关于Netty,Netty框架不局限于RPC,更多的是作为一种网络协议的实现框架,比如HTTP,由于RPC需要高效的网络通信,就可以选择Netty作为基础。除了网络通信,RPC还需要有高效的序列化框架,以及一种寻址方式,如果是带会话(状态)的RPC调用,还需要有会话的状态保持的功能。

好了,让我们再来整理一下,什么是RPC

RPC(远程过程调用)一般用来实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地系统资源一样,通过网络传输去访问远端系统资源。一般来说,RPC框架实现的架构原理都是类似的。

可以这样说,

客户端调用:负责发起RPC调用,为调用方用户提供使用API。

服务端响应:主要是服务端业务逻辑实现。

序列化/反序列化:负责对RPC调用通过网络传输的内容进行序列化与反序列化,不同的RPC框架有不同的实现机制。一般分为文本(XML、JSON)与二进制(Java原生的、Hessian、protobuf、Thrift、Avro、Kryo、MessagePack),需要注意的是,不同的序列化方式在可读性、码流大小、支持的数据类型及性能等方面都存在较大差异,我们可以根据需要自行选择。

Stub:我们看成代理对象,它会屏蔽RPC调用过程中的复杂的网络处理逻辑,使其透明简单,且能够保持与本地调用一样的代码风格。

通信传输:即RPC的底层通信传输模块,一般通过Socket在客户端与服务端之间传递请求与应答消息

公众号:Java猫说

学习交流群:728698035

现架构设计(码农)兼创业技术顾问,不羁平庸,热爱开源,杂谈程序人生与不定期干货。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12005.html

相关文章

  • RPC框架是啥之Apache CXF一款WebService RPC框架入门教程

    摘要:支持相关规范和标准,包括同上。支持多种传输协议和协议绑定数据绑定。构建端还有其服务实现,接口使用注解,标明是一个远程服务接口。然后编写一个的启动程序,并运行,我想你会成功的因为我看到了下图是一种跨平台的技术协议。 本博客 猫叔的博客,转载请申明出处 学习系列 RPC框架是啥? RPC框架是啥之Java自带RPC实现,RMI框架入门 Apache CXF一款WebService RP...

    SolomonXie 评论0 收藏0
  • RPC框架是啥

    摘要:知乎的点赞,应该还是可以参考的。除了网络通信,还需要有高效的序列化框架,以及一种寻址方式,如果是带会话状态的调用,还需要有会话的状态保持的功能。一般来说,框架实现的架构原理都是类似的。服务端响应主要是服务端业务逻辑实现。 本博客 猫叔的博客,转载请申明出处 在我刚刚了解分布式的时候,经常对RPC和分布式有些混淆,甚至一直以为两者对等,所以我们先看看他们有什么区别? RPC实现了服务消费...

    didikee 评论0 收藏0
  • RPC框架是啥之Java自带RPC实现,RMI框架入门

    摘要:让我们优先来实现一个的案例吧。为了防止被防火墙拦截,需要强制制定的通信端口,一般通过自定义一个类来实现。完美支持语言所独有的特性,不支持其他语言。使用了原生序列化,所有序列化对象必须实现接口。 本博客 猫叔的博客,转载请申明出处 学习系列 RPC框架是啥? Java自带RPC实现,RMI框架入门 首先RMI(Remote Method Invocation)是Java特有的一种RPC实...

    ZHAO_ 评论0 收藏0
  • 网络协议 21 - RPC 协议(中)- 基于 JSON 的 RESTful 接口协议

    摘要:服务发现问题对于来讲,我们已经解决了传输协议的问题基于,协议约定问题基于,最后要解决的是服务发现问题。另外一方是服务消费方,向获取服务提供方的注册信息。     上一节我们了解了基于 XML 的 SOAP 协议,SOAP 的 S 是啥意思来着?是 Simple,但是好像一点儿都不简单啊! 传输协议问题     对于 SOAP 来讲,比如我创建一个订单,用 POST,在 XML 里面写明...

    K_B_Z 评论0 收藏0
  • 网络协议 21 - RPC 协议(中)- 基于 JSON 的 RESTful 接口协议

    摘要:服务发现问题对于来讲,我们已经解决了传输协议的问题基于,协议约定问题基于,最后要解决的是服务发现问题。另外一方是服务消费方,向获取服务提供方的注册信息。     上一节我们了解了基于 XML 的 SOAP 协议,SOAP 的 S 是啥意思来着?是 Simple,但是好像一点儿都不简单啊! 传输协议问题     对于 SOAP 来讲,比如我创建一个订单,用 POST,在 XML 里面写明...

    Paul_King 评论0 收藏0

发表评论

0条评论

xietao3

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<