【RPC】远程过程调用

3 篇文章 0 订阅
本文深入解析了远程过程调用(RPC)的概念,探讨了其如何支持负载均衡以扩展服务器能力,实现容灾系统保障服务连续性,以及集群通信在专业应用中的角色。通过客户端和服务端交互流程的实例,展示了RPC在实际场景中的应用和关键技术细节。
摘要由CSDN通过智能技术生成

RPC:

参考文章

概念

远程过程调用(Remote Procedure Call),一个节点请求另一个节点提供的服务

是一个远程调用的抽象,支持 负载均衡、容灾 和 集群
负载均衡

  1. 负载均衡:建立在现有网络之上,提供了一种有效透明的方法扩展 网络设备 和 服务器 的 带宽、增加吞吐量,增强网络数据处理能力、提高网络的灵活性和可用性
  2. 负载均衡(Load Balance)意思是分摊到多个单元上进行执行,例如Web服务器、FTP服务器,企业关键应用服务器和其他关键任务服务器等,从而共同完成工作任务

容灾

容灾系统是指在相隔较远的异地,建立两套或多套功能相同的IT系统,互相之间可以进行健康监视和功能切换,当一处系统因意外(火灾 地震等)停止工作时,整个应用系统可以切换到另一处,使得该系统可以继续正常工作

集群

集群通信系统是一种用于集团调度指挥通信的移动通信系统,主要应用在专业移动通信领域,该系统具有的可用信道可为系统的全体用户共用,具有自动选择信道功能,是共享资源 分担费用 共用信道设备及服务的多用途,高效能的无线调度通信系统

过程:

  1. Client端:
    • 触发语句:Student student = Call(ServerAdd, addAge, student0);
    • 将这个调用映射为Call ID
    • 将Call ID ,student(params)序列化,以二进制的形式打包
    • 将打包好的数据发送给ServerAddr,需要使用网络传输层
    • 等待服务器返回结果
    • 如果服务器调用成功,那么就将结果序列化,并赋值给student,年龄更新
  2. Server端
    • 在本地维护一个Call ID 到函数的指针的映射call_id_map,可以使用Map<String, Method)> callIdMap
    • 等待客户端请求
    • 得到一个请求后,将其数据包反序列化,得到Call ID
    • 通过在callIdMap中查找,得到相应的函数指针
    • 将student(params)反序列化后,在本地调用addAge()函数,得到结果
    • 将student结果序列化后通过网络返回给Client
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值