【网络笔记】SOA、REST、RPC分不清楚

起因

这仨词经常见,但他们到底是什么,怎么用我也不是很清楚,甚至他们是不是一类东西我都不是很清楚,心里默认都是网络相关的…所以简单的学习下,并不会研究的很透彻,只是能区分知道什么时候用什么比较好就可以了

概念

SOA(Service-Oriented Architecture):面向服务的结构
RPC(Remote Procedure Call):远程过程调用
REST(Representational State Transfer):表述性状态传递

SOA

SOA 是一种设计方法,其中包含多个服务,而服务之间通过配合最终会提供一系列功能。一个服务通常以独立形式存在于操作系统进程中。服务之间通过网络调用,而非进程内调用的方式进行通信。简单的理解 SOA 就是一种粗粒度、松耦合的服务架构。再简单的理解就是拆
拆完之后解决了臃肿等等问题,但也有新的问题产生了,细粒度的服务之间怎么通信呢?于是便可以引出 RPC(socket) 和 REST(http+json) 了,其实还有 SOAP(http+xml),这里不详细展开了

RPC

RPC 即远程过程调用,就是 A 和 B 服务在两台机器(容器环境也可以理解为两个pod)上,不能直接调用,需要通过网络来表达调用的语义和数据。简单的理解就是 RPC 可以让像调用本地方法一样去调用远程方法
RPC 采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行
一次 RPC 调用

    服务消费者(Client 客户端)通过本地调用的方式调用服务
    客户端存根(Client Stub)接收到调用请求后负责将方法、入参等信息序列化(组装)成能够进行网络传输的消息体
    客户端存根(Client Stub)找到远程的服务地址,并且将消息通过网络发送给服务端
    服务端存根(Server Stub)收到消息后进行解码(反序列化操作)
    服务端存根(Server Stub)根据解码结果调用本地的服务进行相关处理
    服务端(Server)本地服务业务处理
    处理结果返回给服务端存根(Server Stub)
    服务端存根(Server Stub)序列化结果
    服务端存根(Server Stub)将结果通过网络发送至消费方
    客户端存根(Client Stub)接收到消息,并进行解码(反序列化)
    服务消费方得到最终结果

RPC 框架假定一些网络传输协议(TCP/UDP)的存在,我们不用关心具体是什么。常见的 RPC 框架有阿里的 dubbo(采用RPC协议),Spring Cloud(采用http restful协议)。所以这里可以引出真正的引用 REST 了

REST

REST 采用 Web 服务使用标准的 HTTP 方法 (GET/PUT/POST/DELETE) 将所有 Web 系统的服务抽象为资源,REST 不是一种协议,它是一种架构,一种 Web Service 能够如果满足 REST 的几个条件,通常就称这个系统是 Restful 的
REST 是面向资源的,这点很重要。REST 从资源的角度来观察整个网络,分布在各处的资源由 URI 确定,而客户端的应用通过 URI 来获取资源的表征。Http协议所抽象的 get,post,put,delete 就好比数据库中最基本的增删改查
项目里使用 RESTful 的都会比较容易理解 REST,比如服务请求必须使用名字,不能使用动词;请求类型不同 POST 一撸到底等等

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值