zoukankan      html  css  js  c++  java
  • 什么是RPC?它干了些什么?

    RPC

    远程过程调用协议。通过网络从远程计算机程序请求服务,不关心底层网络技术的协议。简而言之,RPC从一台机器(客户端)通过参数传递的方式调用另一台机器(服务器)的方法(服务)并得到返回结果。

    RPC干了什么?

    • 确定客户端与服务端间的通信协议
    • 高效网络通信(一般选择Netty作为网络通信框架)
    • 服务器提供的服务如何暴露给客户端(zookeeper注册服务)
    • 客户端如何发现暴露的服务(寻址找到服务)
    • 请求和响应高效序列化和反序列化(json,protobuf)

    RPC实现原理架构图

    组成说明

    1、客户端:服务调用端

    2、client stub:存放服务器地址信息,打包客户端数据成网络消息,再通过网络传输发送给服务器

    3、server stub:解压客户端发送的请求消息,调用服务器

    4、服务端:服务真正提供者

    工作流程

    1. 建立连接。建议长连接,心跳定期检查连接是否还在
    2. 服务寻址。提供者向注册中心(zookeeper)注册服务,调用者向注册中心查询订阅服务,调用者找到IP和Port调用提供者的接口。提供者定期向注册中心发送心跳检测
    3. 网络传输数据。序列化和反序列化
    4. 服务调用。调用者调用提供者接口得到返回结果,进行业务处理

    RPC主流框架有哪些?

    • RMI
      • java实现
    • Hession 
      • 基于http协议,采用二进制编码
    • protobuf-rpc-pro   
      • java类库,基于Protocol Buffers 协议,Netty底层的NIO
    • Thrift
      • 支持多种语言
    • Avro 
      • 云计算的数据交换和存储的Protocol,支持HTTP,TCP协议
    • Dubbo
      • 高性能服务框架     
  • 相关阅读:
    配合网页滚屏播放,做解说词
    @enable跟@import注解
    组合注解与元注解
    Spring Aware
    https的设计原理
    用信鸽来解释 HTTPS
    http三次握手四次挥手
    一致性哈希
    redis cluster原理
    redis cluster集群搭建
  • 原文地址:https://www.cnblogs.com/ivy-xu/p/12578707.html
Copyright © 2011-2022 走看看