RFC简介 RPC(Remote Procedure Call)远程过程调用协议,是一种用于基于客户端服务器的应用程序的解释通信技术。它也称为子例程调用或功能调用。 客户端具有RPC转换并发送到服务器的请
RFC简介
RPC(Remote Procedure Call)远程过程调用协议,是一种用于基于客户端服务器的应用程序的解释通信技术。它也称为子例程调用或功能调用。 客户端具有RPC转换并发送到服务器的请求消息。此请求可以是对远程服务器的过程或函数调用。当服务器收到请求时,它将所需的响应发送给客户端。服务器处理呼叫时,客户端被阻止,并且仅在服务器完成后才恢复执行。
远程过程调用中的事件序列如下:
- 客户端由客户端调用。
- 客户端存根对系统调用,将消息发送到服务器并将参数放在消息中。
- 该消息由客户端的操作系统从客户端发送到服务器。
- 该消息通过服务器操作系统传递给服务器存根。
- 服务器存根将参数从消息中删除。
- 然后,服务器存根调用服务器过程。
流程如下的所示:
Dubbo介绍
Dubbo2021年更新了dubbo3,原理基本一致,但又有些许不同 ---->What’s New in Dubbo3
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口(Dubbo3 应用级服务发现,以应用粒度组织地址数据)的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现,基本工作原理如下图:
Dubbo工作流程
Dubbo支持的负载均衡算法
-
随机:从多个服务提供者随机选择⼀个来处理本次请求,调用量越大则分布越均匀,并支持按权重设置随机概率
- 轮询:依次选择服务提供者来处理请求, 并⽀持按权重进⾏轮询,底层采⽤的是平滑加权轮询算法
- 最小活跃调用数:统计服务提供者当前正在处理的请求,下次请求过来则交给活跃数最小的服务器来处理
- 一致性哈希:相同参数的请求总是发到同⼀个服务提供者