【后端】RPC
不定期更新。
- 定义
RPC 是 Remote Procedure Call 的缩写,中文通常翻译为远程过程调用。 - 作用
- 简化分布式系统开发。
- 实现微服务架构,便于模块化、复用。
- 提高系统性能和可伸缩性。提供高性能通信、负载均衡、容错重试机制。
在现代分布式系统、微服务架构中,服务之间需要频繁通信。如果服务间的通信效率低下,会严重影响整个系统性能和响应时间。
- 跨语言/跨平台通信,语言无关性。
- 对分布式服务进行统一管理和运维。
- 核心思想
RPC 是一种进程间通信(IPC Inter-Process Communication)技术,允许一个计算机程序在不了解底层网络技术的情况下,调用另一个地址空间(通常是另一台计算机上的程序)中的子程序或函数。
一句话总结:调用远程计算机上的函数或方法,就像调用本地函数一样简单。 - 原理
客户端(Client) 调用本地的某个函数(这个函数在内部会做一些特殊处理)。
这个本地函数会把参数进行编码(Marshalling/Serialization),把数据转换成可以通过网络传输的格式(例如 JSON, XML, Protobuf 等)。
编码后的请求通过网络传输到服务端(Server)。
服务端接收到请求后,对数据进行解码(Unmarshalling/Deserialization),还原成原始参数。
服务端根据请求找到对应的远程函数,并执行它。
远程函数执行完毕后,将结果进行编码。
编码后的结果通过网络传输回客户端。
客户端接收到结果后,进行解码,并将结果返回给最初调用的本地函数。 - 常用高性能RPC框架
gRPC (Google 开发,基于 HTTP/2 和 Protobuf)
Dubbo (阿里巴巴开源,Java 生态常用)
Thrift (Apache 开源,支持多种语言)
ServiceMesh 技术 (如 Istio、Envoy,在基础设施层面提供了 RPC 增强能力)