RPC:
概念
远程过程调用(Remote Procedure Call),一个节点请求另一个节点提供的服务
是一个远程调用的抽象,支持 负载均衡、容灾 和 集群
负载均衡
- 负载均衡:建立在现有网络之上,提供了一种有效透明的方法扩展 网络设备 和 服务器 的 带宽、增加吞吐量,增强网络数据处理能力、提高网络的灵活性和可用性
- 负载均衡(Load Balance)意思是分摊到多个单元上进行执行,例如Web服务器、FTP服务器,企业关键应用服务器和其他关键任务服务器等,从而共同完成工作任务
容灾
容灾系统是指在相隔较远的异地,建立两套或多套功能相同的IT系统,互相之间可以进行健康监视和功能切换,当一处系统因意外(火灾 地震等)停止工作时,整个应用系统可以切换到另一处,使得该系统可以继续正常工作
集群
集群通信系统是一种用于集团调度指挥通信的移动通信系统,主要应用在专业移动通信领域,该系统具有的可用信道可为系统的全体用户共用,具有自动选择信道功能,是共享资源 分担费用 共用信道设备及服务的多用途,高效能的无线调度通信系统
过程:
- Client端:
- 触发语句:
Student student = Call(ServerAdd, addAge, student0);
- 将这个调用映射为Call ID
- 将Call ID ,student(params)序列化,以二进制的形式打包
- 将打包好的数据发送给ServerAddr,需要使用网络传输层
- 等待服务器返回结果
- 如果服务器调用成功,那么就将结果序列化,并赋值给student,年龄更新
- 触发语句:
- Server端
- 在本地维护一个Call ID 到函数的指针的映射call_id_map,可以使用
Map<String, Method)> callIdMap
- 等待客户端请求
- 得到一个请求后,将其数据包反序列化,得到Call ID
- 通过在callIdMap中查找,得到相应的函数指针
- 将student(params)反序列化后,在本地调用addAge()函数,得到结果
- 将student结果序列化后通过网络返回给Client
- 在本地维护一个Call ID 到函数的指针的映射call_id_map,可以使用