RPC框架解释

谁能用通俗的语言解释一下什么是RPC框架? -远程过程调用协议RPC(Remote Procedure Call Protocol)

首先了解什么叫RPC,为什么要RPC,RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。比如说,一个方法可能是这样定义的:Employee getEmployeeByName(String fullName)那么:

1.首先,要解决通讯的问题,主要是通过在客户端和服务器之间建立TCP连接,远程过程所调用的所有交换的数据都在这个连接里传输。连接可以是按需连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享同一个连接。

2.第二,要解决寻址的问题,也就是说,A服务器上的应用怎么告诉底层的RPC框架,如何连接到B服务器(如主机或者IP地址)以及特定的端口,方法的名称是什么,这样才能完成调用。比如基于Web服务协议栈的RPC,就要提供一个endpoint URI,或者是从UDDI服务上查找。如果是RMI调用的haul,还需要一个RMI Registry来注册服务的地址。

3.第三,当A服务器上的应用发起远程调用时,方法的参数需要通过底层的网络协议如TCP传递到B服务器,由于网络协议是基于二进制的,内存中的参数的值要序列化的形式,也就是序列化(Serialize)或编组(marshal),通过寻址和传输将序列化的二进制发送给B服务器。

4.第四,B服务器收到请求后,需要对参数进行反序列化(序列化的逆操作),恢复为内存中的表达式,然后找到对应的方法(寻址的一部分),然后找到对应的方法(寻址的一部分)进行本地调用,然后得到返回值。

5.第五,返回值还要发送回服务器A上的应用,也要经过序列化的方式发送,服务器A接收到后,再反序列化,恢复为内存中的表达式,交给A服务器上的应用。

为什么RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如不同系统间的通讯,甚至不同组织间的通讯。由于计算能力需要横向扩展,需要在多台机器组成的集群上部署应用,RPC的协议有很多,比如最早的CORBA,Java RMI,Web Service的RPC风格,Hessian,Thrift,甚至Rest API。关于Netty,其框架不局限于RPC,更多的是作为一种网络协议的实现框架,比如http,由于RPC需要高效的网络通信,就可能选择以Netty作为基础。除了网络通信,RPC还需要有比较高效的序列化框架,以及一种寻址方式。如果带会话(状态)的RPC调用,还需要有会话和状态保持的功能。大体上来说,Netty就是提供一种事件驱动的,责任链式(也可以说是流水线)的网络协议实现方式。网络协议包含处理逻辑,怎么能够更好的复用,扩展,业界通用的方法就是责任链,一个请求应答网络交互通常包含两条链,一条链(Upstream)是从传输层,经过一系列步骤,如身份认证,解密,日志,流控,最后到达业务层,一条链(DownStream)是业务层返回后,又经过一系列步骤,如加密等,又回到传输层。

转载文章:  https://blog.csdn.net/weixin_37705192/article/details/82020327

转载于:https://www.cnblogs.com/jiangjian123/p/11303076.html

RPC(远程过程调用协议)介绍相关推荐

  1. RPC 远程过程调用协议

    RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. RPC协议假定某些传输协议的存 ...

  2. RPC——RPC协议介绍及原理详解

    common wx:CodingTechWork 介绍 RPC框架 概念 RPC(Remote Procedure Call Protocol) 远程过程调用协议. RPC是一种通过网络从远程计算机程 ...

  3. RPC简介(远程过程调用协议)

    RPC RPC在rfc 1831中收录 ,RPC(Remote Procedure Call) 远程过程调用协议 RPC协议规定允许互联网中一台主机程序调用另一台主机程序,而程序员无需对这个交互过程进 ...

  4. RPC(远程过程调用协议)

    RPC(Remote Procedure Call Protocol)--远程过程调用协议,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.它假定某些传输协议的存在,如TCP ...

  5. NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成...

    原文:NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成 本篇内容属于非实用性(拿来即用)介绍,如对框架设计没兴趣的朋友,请略过. 快一个月没有写博 ...

  6. 微服务之RPC(远程过程调用)的四种方式

    微服务思想 微服务思想-注册中心zookeeper 微服务: 架构设计采用分布式思想,当服务器发生故障时,可以实现自动化的故障迁移.无需人为干预. 注册中心实现原理: ZK工作原理说明 Zookeep ...

  7. 为什么redis在陌陌上使用的这么广泛?当NoSQL数据库,微服务的注册中心,RPC的调用协议都能用

    前言 说到redis,可能大家的脑海中蹦出的关键词是:NoSQL.KV.高性能.缓存等.但今天的文章从另一个角度--微服务来展开. 这篇文章的起因也是源自一次面试经历,在面试一位来自陌陌的候选人(就是 ...

  8. UPnP协议介绍和Android代码实现

    UPnP协议介绍 一. UPnP简介 英文名称:Universal Plug and Play 中文译名:通用即插即用 UPnP是由"通用即插即用论坛"(UPnP™ Forum)推 ...

  9. Go语言:RPC简介及原理介绍

    背景 在前面的课程<Go语言微服务理论与实践课程>课程中,我们已经学习了微服务的理论知识,了解了微服务实践中需要解决哪些问题.从本篇技术文档开始,我们进入新的微服务内容的学习.在本系列课程 ...

最新文章

  1. 浅谈Linux下的EXT3文件系统
  2. Understand Execution Context
  3. C# 6.0的字典(Dictionary)的语法
  4. 空投坐标怎么看6_装修时,怎么确认自己买的“瓷砖”是优等品?看“6点”很重要...
  5. Unity 游戏框架搭建 (七) 减少加班利器-QApp类
  6. SAP 电商云 Spartacus UI feature level 的一个测试
  7. 在mac上用文本编辑器写python_Mac系统Python解释器、PyCharm编辑器安装及使用方法详解...
  8. Joomla css类后缀
  9. python画大对勾_python+selenium个人学习笔记8-获取信息和勾选框
  10. python两张图片融合_python实现两张图片的像素融合
  11. Skyfire-在移动设备上体验silverlight的效果
  12. SQL 存儲過程加密
  13. ArcGIS拓扑检查教程
  14. correl函数相关系数大小意义_Excel使用Correl函数返回相关系数并确定属性关系的方法...
  15. GEC6818 移植 rtl8723bu wifi驱动
  16. Dota 2 with Large Scale Deep Reinforcement Learning翻译
  17. postman脚本批量请求
  18. C/C++关于string.h头文件和string类
  19. 0x80073712_处理win10更新提示错误代码“0x80073712”的方法
  20. 小优机器人系统恢复_解决一键还原ghost

热门文章

  1. 伍六七带你学算法——栈的使用
  2. debian10 简单搭建squid
  3. virtualenv创建虚拟环境为主_多版本
  4. Http请求之优雅的RestTemplate
  5. LeetCode简单题之检查某单词是否等于两单词之和
  6. 高通为何46亿美元ADAS Veoneer Arriver
  7. CPU/GPU/TPU/NPU...XPU都是什么意思?
  8. ST为飞行时间传感器增加了多目标测距
  9. Android多进程引发的问题
  10. 2021年大数据ZooKeeper(四):ZooKeeper的shell操作