标题:为什么使用RPC技术?
导语:
在现代分布式系统中,远程过程调用(Remote Procedure Call,简称RPC)技术扮演着重要的角色。它是一种使得分布式系统中的不同节点能够相互通信和协作的关键技术。本文将介绍RPC技术的背景、工作原理以及它为什么成为构建分布式系统的理想选择。
目录
一、背景:
随着分布式计算的兴起,系统架构逐渐从单体应用转向分布式架构。在分布式架构中,各个节点可能部署在不同的机器或网络中,它们需要相互通信来完成协作任务。而RPC技术就是为了实现这种跨网络节点的通信而产生的。
二、工作原理:
RPC技术的核心概念是远程调用,它使得一个节点能够调用另一个节点上的方法,就像调用本地方法一样。RPC技术的工作原理可以简单概括为以下几个步骤:
1. 定义接口:首先,需要在系统中定义接口,描述可供远程调用的方法和参数。这些接口可以使用通用的接口描述语言(如IDL)来定义。
2. 生成代理:接下来,根据接口定义生成代理代码。代理代码负责将本地调用转换为远程调用,并将参数打包发送到目标节点。
3. 通信传输:代理代码通过网络将打包的参数发送到目标节点。这涉及到底层的网络通信协议,如TCP/IP或HTTP。
4. 服务调用:目标节点接收到请求后,将参数解包并调用相应的方法。方法执行完成后,将结果打包并发送回调用方。
5. 解析结果:调用方接收到返回结果后,解包结果并进行相应的处理。调用方可以继续执行后续的逻辑。
三、优势和应用场景:
RPC技术具有以下几个优势,使得它成为构建分布式系统的理想选择:
1. 抽象化通信细节:RPC技术屏蔽了底层通信的细节,使得开发者可以更专注于业务逻辑的实现,而不需要关注网络通信的具体实现。
2. 提高系统性能:通过将计算分布到不同的节点,RPC技术可以提高系统的并发性和吞吐量。同时,RPC技术还可以利用负载均衡和故障转移等机制来提高系统的可用性和稳定性。
3. 模块化和可扩展性:RPC技术可以将系统拆分为多个模块,每个模块可以独立开发、测试和部署。这种模块化的设计使得系统更易于扩展和维护。
4. 跨语言支持:RPC技术通常支持跨语言的调用,这意味着你可以使用不同的编程语言来实现不同的系统组件,从而更好地利用已有的技术栈和开发人员的技能。
RPC技术在以下场景中得到广泛应用:
- 微服务架构:RPC技术可以用于实现微服务架构中的服务间通信,每个微服务可以作为一个独立的节点,通过RPC进行通信和协作。
- 分布式计算:RPC技术可以用于分布式计算场景,如大规模数据处理、机器学习训练等,将计算任务分发到不同的节点上并进行并行处理。
- 跨系统集成:RPC技术可以用于不同系统之间的集成,使得它们能够相互调用和协作,实现数据共享和功能扩展。
四 面试知识点:http协议和rpc协议的不同点在哪里?
主要从三个方面去说:
(1)功能层面
http协议是一个成熟的超文本传输协议,主要是用于用户端和服务端的一个数据通信,而rpc协议只是一种计算机应用之间相互通信的一种协议,屏蔽了底层复杂度
(2)实现方面
http协议是一个已经实现,并且成熟的应用层协议,它规定的通信的报文格式,requestBody requestHeader responseBody responseHeader,符合这些特征的协议才是http协议
而tpc协议,它没有具体的一个实现,只是规定了通信协议的规范,而符合rpc协议去设计的一些rpc框架才是rpc协议的具体实现,比如gRPC还有Dubbo
(3)应用层面
http协议和符合rpc协议的一些框架,他们都能实现跨网络节点之间的一些通信,但是他们底层都是通过tcp协议去作为通信基础,符合rpc规范的框架网络通信层也可以使用http协议去实现。
埋坑:手写rpc框架耗时1小时,清华大佬手把手带我写了一个RPC框架,全程干货,无废话!还看不懂这程序员不当也罢_哔哩哔哩_bilibili