• RPC和HTTP


    RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议的,我们都知道HTTP协议是在传输层协议TCP之上的,所以效率来看的话,RPC当然是要更胜一筹。

    OSI网络七层模型

    • 第一层:应用层。定义了用于在网络中进行通信和传输数据的接口;
    • 第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等;
    • 第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断;
    • 第四层:传输层。管理着网络中的端到端的数据传输;
    • 第五层:网络层。定义网络设备间如何传输数据;
    • 第六层:链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输;
    • 第七层:物理层。这一层主要就是传输这些二进制数据。

    RPC架构

    一个完整的RPC架构里面包含了四个核心的组件,分别是Client ,Server,Client Stub以及Server Stub

    • 客户端(Client),服务的调用方。
    • 服务端(Server),真正的服务提供者。
    • 客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
    • 服务端存根,接收客户端发送过来的消息,将消息解包,并调用本地的方法。

    流行的RPC框架

    (1)gRPC是Google最近公布的开源软件,基于最新的HTTP2.0协议,并支持常见的众多编程语言。我们知道HTTP2.0是基于二进制的HTTP协议升级版本,目前各大浏览器都在快马加鞭的加以支持。这个RPC框架是基于HTTP协议实现的,底层使用到了Netty框架的支持。

    (2)Thrift是Facebook的一个开源项目,主要是一个跨语言的服务开发框架。它有一个代码生成器来对它所定义的IDL定义文件自动生成服务代码框架。用户只要在其之前进行二次开发就行,对于底层的RPC通讯等都是透明的。

    (3)Dubbo是阿里集团开源的一个极为出名的RPC框架,在很多互联网公司和企业应用中广泛使用。协议和序列化框架都可以插拔是及其鲜明的特色。同样 的远程接口是基于Java Interface,并且依托于spring框架方便开发。可以方便的打包成单一文件,独立进程运行,和现在的微服务概念一致。

  • 相关阅读:
    RSA加密及加签
    间隔Ns请求某函数并且有timeout
    关于Erlang中的behaviour
    Erlang&RabbitMQ服务安装配置
    java IO流详解
    Uncaught TypeError: Cannot read property 'options' of undefined
    sql server 数据修改不了的设计
    Android多点触控详解
    java实现图的遍历(深度优先遍历和广度优先遍历)
    判断输入的8个数字不是符合8X8皇后棋盘
  • 原文地址:https://www.cnblogs.com/KL2016/p/14681003.html
Copyright © 2020-2023  润新知