admin管理员组文章数量:1794759
RPC 框架简介
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 框架可以帮助开发人员构建可靠、高效、易于管理的分布式系统,使得不同服务之间的通信变得更加简单和可靠。
本文标签: RPC 框架简介
版权声明:本文标题:RPC 框架简介 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754778705a1706306.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论