zoukankan      html  css  js  c++  java
  • 主流RPC框架详解,以及与SOA、REST的区别

    什么是RPC

    RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

    简言之,RPC使得程序能够像访问本地系统资源一样,去访问远端系统资源。

    比较关键的一些方面包括:

    通讯协议

    序列化

    资源(接口)描述

    服务框架

    性能

    语言支持等。

    REST 和 SOAP、RPC

    1.REST

    可以看着是http协议的一种直接应用,默认基于json作为传输格式,使用简单,学习成本低效率高,但是安全性较低。

    2.SOAP

    SOAP是一种数据交换协议规范,是一种轻量的、简单的、基于XML的协议的规范。而SOAP可以看着是一个重量级的协议,基于xml,SOAP在安全方面是通过使用XML-Security和XML-Signature两个规范组成了WS-Security来实现安全控制的,当前已经得到了各个厂商的支持 。

    它有什么优点?简单总结为: 易用,灵活,跨语言,跨平台。

    3.RPC(远程过程调用)是什么?

    简单的说,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。

    REST 和 SOAP、RPC 有何区别呢?没什么太大区别,他们的本质都是提供可支持分布式的基础服务,最大的区别在于他们各自的的特点所带来的不同应用场景 。

    RPC工作原理

    运行时,一次客户机对服务器的RPC调用,其内部操作大致有如下十步:

    1.调用客户端句柄;执行传送参数

    2.调用本地系统内核发送网络消息

    3.消息传送到远程主机

    4.服务器句柄得到消息并取得参数

    5.执行远程过程

    6.执行的过程将结果返回服务器句柄

    7.服务器句柄返回结果,调用远程系统内核

    8.消息传回本地主机

    9.客户句柄由内核接收消息

    10.客户接收句柄返回的数据

    主流RPC框架

    简单介绍其中几种比较典型的:

    1.RMI

    利用java.rmi包实现,基于Java远程方法协议(Java Remote Method Protocol) 和java的原生序列化。

    2.Hessian

    是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 基于HTTP协议,采用二进制编解码。

    3.protobuf-rpc-pro

    是一个Java类库,提供了基于 Google 的 Protocol Buffers 协议的远程方法调用的框架。基于 Netty 底层的 NIO 技术。支持 TCP 重用/ keep-alive、SSL加密、RPC 调用取消操作、嵌入式日志等功能。

    4.Thrift

    是一种可伸缩的跨语言服务的软件框架。它拥有功能强大的代码生成引擎,无缝地支持C + +,C#,Java,Python和PHP和Ruby。thrift允许你定义一个描述文件,描述数据类型和服务接口。依据该文件,编译器方便地生成RPC客户端和服务器通信代码。

    最初由facebook开发用做系统内个语言之间的RPC通信,2007年由facebook贡献到apache基金 ,现在是apache下的opensource之一 。支持多种语言之间的RPC方式的通信:php语言client可以构造一个对象,调用相应的服务方法来调用java语言的服务,跨越语言的C/S RPC调用。底层通讯基于SOCKET。

    5.Avro

    出自Hadoop之父Doug Cutting, 在Thrift已经相当流行的情况下推出Avro的目标不仅是提供一套类似Thrift的通讯中间件,更是要建立一个新的,标准性的云计算的数据交换和存储的Protocol。支持HTTP,TCP两种协议。

    6.Dubbo

    Dubbo是 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。

    简单的使用方法:

    1、被远程调用的接口,需要在zookeeper中进行注册;

    2、需要远程调用的服务在zookeeper中声明自己需要的接口;

    3、zookeeper将已经注册的接口通知给需要的服务;

    以上就是主流RPC的介绍,以及与soap等的区别。

  • 相关阅读:
    希尔排序
    折半插入排序
    自学git心得-2
    读书笔记-1 《人月神话》
    USTCCourseCommunity 项目介绍
    自学git心得-1
    HDU 2006 求奇数的乘积
    HDU 2007 平方和与立方和
    HDU 2005 第几天?
    HDU 2004 成绩转换
  • 原文地址:https://www.cnblogs.com/Jeremy2001/p/11789596.html
Copyright © 2011-2022 走看看