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

RPC 框架简介

原创
作者头像
羽毛球初学者
发布2024-10-16 15:55:48
890
发布2024-10-16 15:55:48
举报
文章被收录于专栏:JAVA基础知识

RPC 简介

RPC(Remote Procedure Call,远程过程调用)是一种用于在不同的计算机之间进行通信的技术,允许一个程序调用另一个程序中的函数或方法,就像调用本地函数一样,而无需程序员显式地编写通信代码。RPC 的底层原理涉及通信协议、序列化和反序列化、网络传输、服务注册与发现等方面。

最简单的 RPC 调用可分为以下几步:

  • 定义接口:RPC 的第一步是定义客户端和服务端之间通信的接口。这些接口中包含需要在远程服务器上调用的方法。
  • 序列化:当客户端调用远程方法时,客户端程序将方法的参数序列化为字节流,以便在网络上传输。
  • 网络传输:序列化后的请求被传输到远程服务器,这通常通过网络协议实现(如HTTP、TCP等)。
  • 反序列化:一旦请求到达远程服务器,服务器程序将接收到的字节流反序列化为方法调用所需的参数。
  • 调用远程方法:远程服务器根据反序列化后的参数调用相应的方法或函数。
  • 序列化结果:服务器程序将方法执行的结果序列化为字节流。
  • 网络传输结果:序列化后的结果通过网络传输回客户端。
  • 反序列化结果:客户端程序接收到结果后,将结果字节流反序列化为方法调用的返回值。
  • 返回结果:最终,客户端程序将调用远程方法的返回值返回给调用方。

在实际的 RPC 实现中,还可能涉及到一些额外的步骤,如:

  • 服务注册与发现:RPC 框架通常会提供服务注册与发现的功能,允许服务提供者将其提供的服务注册到注册中心,并允许服务消费者从注册中心获取可用的服务地址。
  • 负载均衡与容错:RPC 框架通常还包括负载均衡和容错机制,以确保请求能够被均匀分布到不同的服务节点,并在某些节点发生故障时能够进行故障转移或重试。
  • 连接管理:RPC 框架通常会管理与远程服务之间的连接,包括连接的建立、保持和释放等。

RPC 和 RESTful 区别

使用 RPC 和 RESTful 都可以对其他服务进行调用,那么它们有什么区别呢?

首先是面对的对象不同,RESTful 是面向资源的设计架构,但在系统中有很多对象不能抽象成资源,比如登录,修改密码等。而 RPC 可以通过动作去操作资源。所以在操作的全面性上 RPC 大于 RESTful。

其次是传输效率有区别。RPC使用自定义的 TCP 协议,可以让请求报文体积更小,或者使用 HTTP2 协议,也可以很好的减少报文的体积,提高传输效率,所以传输效率上 RPC 比 RESTful 更快。

再者从调用复杂度来说,RPC 实现需要实现编码、序列化、网络传输等,而 RESTful 不要关注这些,实现更简单。

最后是灵活性,RESTful 使用 HTTP协议进行传输,HTTP 相对更规范、更标准、更通用,无论哪种语言都支持 HTTP 协议,所以 RPC 整体灵活性不如 RESTful。

总体来说,RPC 更适用于需要高性能的场景,而 RESTful 适用于Web服务的前后端交互,易于理解和使用。

RPC 框架

目前有很多成熟的 RPC 框架,比如dubbo、thrift 和 spring cloud,它们都广泛应用于各种分布式服务中,具有以下优点:

  • 一般使用长链接,不必每次通信都要3次握手,减少网络开销。
  • 一般都有注册中心,有丰富的监控管理,发布,下线接口,动态扩展等,对调用方来说是无感知,统一化的操作,协议私密,安全性较高
  • RPC 协议更简单内容更小,效率更高,服务化架构,服务化治理。
  • 可以基于 TCP 或 HTTP2 实现。
  • 使远程服务的调用过程像本地调用一样简单,隐藏了底层网络通信细节,提供了更高层次的抽象。
  • 许多 RPC 框架支持跨多种编程语言进行通信(如thrift),这使得不同语言编写的服务可以轻松地相互调用。
  • 低延迟和高吞吐量。
  • 提供了完善的服务注册、发现、负载均衡、容错处理等服务治理功能,帮助管理和监控分布式系统中的服务。
  • 具有良好的扩展性,能够满足不断变化的业务需求和规模扩展。
  • 许多 RPC 框架支持自动生成客户端和服务端的代码,减少了开发人员的工作量。
  • RPC 框架通常提供了安全机制,包括数据传输加密、身份认证和授权等功能。
  • RPC 框架可以提供透明的远程调用,使得调用方无需关心调用的具体实现细节,从而降低了系统的耦合度。

总的来说,RPC 框架可以帮助开发人员构建可靠、高效、易于管理的分布式系统,使得不同服务之间的通信变得更加简单和可靠。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RPC 简介
  • RPC 和 RESTful 区别
  • RPC 框架
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的四七层流量分发服务,访问流量经由 CLB 可以自动分配到多台后端服务器上,扩展系统的服务能力并消除单点故障。轻松应对大流量访问场景。 网关负载均衡(Gateway Load Balancer,GWLB)是运行在网络层的负载均衡。通过 GWLB 可以帮助客户部署、扩展和管理第三方虚拟设备,操作简单,安全性强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档