RPC核心原理:组件与调用流程
RPC核心原理组件与调用流程RPCRemote Procedure Call远程过程调用的核心价值是屏蔽网络通信的底层复杂性让开发者调用远程服务的方法时体验与调用本地方法完全一致。其实现可拆解为5个核心组件和1个完整调用流程。一、RPC的5个核心组件1. 客户端Consumer发起远程方法调用的一方即业务代码中“像调用本地方法一样”调用远程服务的主体。2. 服务端Provider提供远程方法实现的一方即实际执行业务逻辑的主体。3. 客户端StubClient Stub也称为“客户端代理”是RPC框架在客户端的核心封装接收客户端的方法调用请求方法名、参数等将调用信息序列化为可网络传输的二进制数据负责服务发现通过注册中心获取服务端地址将序列化后的消息发送给服务端。4. 服务端StubServer StubRPC框架在服务端的核心封装接收客户端发送的二进制消息将消息反序列化为Java对象包含方法名、参数等根据反序列化后的信息调用服务端本地的业务方法将方法执行结果序列化后返回给客户端。5. 网络传输层负责客户端与服务端之间的二进制数据传输底层可基于Socket实现但主流RPC框架如Dubbo、gRPC通常使用Netty高性能NIO网络框架以提升传输效率和稳定性。二、RPC的完整调用流程客户端发起调用业务代码像调用本地方法一样调用远程服务的接口方法。客户端Stub处理请求拦截调用请求提取方法名、参数等信息将信息组装为可传输的结构体并序列化为二进制数据通过注册中心如Nacos、Zookeeper获取服务端的IP和端口。网络传输客户端Stub通过Netty等网络框架将序列化后的消息发送给服务端。服务端Stub处理请求接收二进制消息反序列化为包含方法名、参数的Java对象根据对象信息调用服务端本地的业务方法。服务端返回结果服务端Stub将方法执行结果组装为结构体并序列化为二进制数据通过网络传输层将结果发送回客户端。客户端获取结果客户端Stub接收二进制消息反序列化为Java对象将结果返回给业务代码完成整个远程调用。补充为什么需要StubStub的核心作用是**“解耦业务代码与网络细节”**对客户端而言无需关心序列化、服务发现、网络传输等底层逻辑只需关注业务调用对服务端而言无需关心网络接收、反序列化等逻辑只需专注于业务方法的实现。这正是RPC能让远程调用像本地调用一样简单的关键。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2425669.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!