浅谈 RPC 和 REST: SOAP, gRPC, REST

本文从RPC模式出发,探讨了RPC框架如ONC RPC、SOAP、gRPC以及REST的工作原理、协议约定、传输协议和服务发现。对比了SOAP与REST的优缺点,指出REST在性能、无状态操作和广泛支持上的优势,而SOAP在安全性上有更强保障。
摘要由CSDN通过智能技术生成

在一次高盛面试中,被问到了一个问题,SOAPREST 之间的区别是什么?当时东一榔头西一棒槌的答了几条,总感觉很了解的很肤浅。怎么从一个比较全面的角度,去了解 SOAP 和 REST ?最近看了个专栏,文章里相对详细的介绍了他们,加上一些别的搜索和理解,在这里做个总结和梳理。

首先,第一个问题应该是 为什么会将 SOAP 和 REST 进行对比?为了搞清楚这个问题,这篇文章会先介绍 SOAP 基于的模式 RPC,然后依次介绍 RPC 框架 ONC RPC、SOAP、gRPC,最后讲讲 REST ,以及他们的对比。

RPC

在网络世界里,不同机器要怎么互相通信?最基础的方法是基于 TCP/IP 通过 Socket 编程去实现调用方和被调用方。但是 Socket 编程的难度大,需要比较强的专业性,实现又复杂,如果每一次机器之间要通信时,程序员都要手动去处理这么多,这就让新手能做的,变成了要精通网络的老师傅才能完成。有没有什么更好的办法呢?

在 1984 年,Bruce Jay Nelson 发表了奠定基础性的论文 Implementing Remote Procedure Call,定义了机器之间互通这种远程调用的标准。RPC (Remote Procedure Call) 即远程过程调用,有了它,客户端可以像调用本地接口一样调用远程的服务端。

怎么实现远程调用像本地调用一样呢?RPC 模式分为三层,RPCRuntime 负责最底层的网络传输,Stub 处理客户端和服务端约定好的语法、语义的封装和解封装,这些调用远程的细节都被这两层搞定了,用户和服务器这层就只要负责处理业务逻辑,调用本地 Stub 就可以调用远程。

做个比较通俗的类比,你要叫朋友打游戏,如果你和朋友在同一个地方,面对面,你直接跟他说就行了,但是如果你们不在同一个地方,你可以打个电话,你说的和面对面时说的还是一样的,只是通过了电话把这个消息远程的传递给了对方。

RPC 框架要解决的三个问题

基于上述 RPC 模式,一个 RPC 框架基本需要解决 协议约定、网络传输、服务发现 这三个问题。

协议约定问题 指的是怎么规定远程调用的语法,怎么传参数等。用上面的类比,你怎么告诉你的朋友要玩什么游戏?是直接说游戏的名字,王者荣耀,绝地求生,还是说简称,王者,吃鸡,或者用 1 代表王者,2 代表吃鸡,只说 1 或 2。

传输协议问题 指的是在网络发生错误、重传、丢包或者有性能问题时怎么办?用上面的类比,你打电话时,刚说了打什么游戏,但是还没有收到对方回复,电话信号不好断了,这时候怎么处理?

服务发现问题 指的是如果知道服务端有哪些服务可以调用,从哪个端口访问?服务端可能实现多个远程调用,在不同的进程上,随机监听端口,客户端要怎么才能知道这些端口呢?

接下来,对比几个 RPC 框架是如何解决这几个问题的。

ONC RPC

ONC RPC 算是最早 RPC 的一种实现方式,由 Sun 公司开发,在 NFS (Network File S

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值