zoukankan      html  css  js  c++  java
  • 手写RPC框架(一)——RPC是什么

      为了加深对RPC的了解和应用,近期手写了一个简易的RPC框架,在介绍代码前,先来说说什么是RPC。

    一、RPC是什么

      RPC全称remote procedure call,翻译过来就是远程过程调用。在分布式系统中,一个模块像调用本地方法一样调用远程方法的过程,就叫RPC。

      我们耳熟能详的webservice、restful接口调用都是RPC,只是消息的组织方式和消息协议不同。

    二、RPC流程

      

      RPC的流程大致如上图所示:

    1. 客户端调用client stub(client stub位于本地,就和调用本地方法一样),传递参数;
    2. client stub将参数编组为消息,然后通过系统调用向服务的发送消息;
    3. 客户端本地操作系统将消息从客户端机器发送到服务端机器;
    4. 服务的操作系统将接收到的数据包传递给Server stub;
    5. Server stub解组消息为参数;
    6. Server stub再调用服务端的过程,过程执行结果以相同的方式回传给客户端。

     三、RPC协议 

      涉及到通信,自然需要协议,比如tcp、udp、http、ftp、sftp等等;相信有很多小伙伴也马上联想到了netty,事实上,很多RPC框架都用到了netty。

      常用的RPC协议有SOAP、XML-RPC、JSON-RPC、JSON-WSP,传统的webservice框架apache cxf、apache axis2等大多基于标准的SOAP协议,而新兴的微服务框架springcloud中的eureka、springcloud-zookeeper使用的是http协议,dubbo使用的是自定义的协议,在dubbo官网明确说明了协议的内容。

      关于RPC的基本概念,目前能想到的就这些了,后续想到我会继续补充。

  • 相关阅读:
    手机怎么知道5G基站的存在?(小区搜索和SSB简介)
    Python中*args,**kwargs两个参数的作用?
    python之jupyter的安装
    国内安装python库速度慢的解决办法
    MOSFET:金属-氧化物半导体场效应晶体管
    C# 小知识点汇总
    ajax和form和七个中间件
    BBS功能分析
    MVC和MTV
    自关联和auth模块
  • 原文地址:https://www.cnblogs.com/RingWu/p/13049917.html
Copyright © 2011-2022 走看看