ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

访问远程服务——RPC-REST

2022-06-18 18:04:09  阅读:123  来源: 互联网

标签:HTTP 接口 RPC REST 进程 服务 远程 客户端


远程服务调用 Remote Procedure Call RPC

位于互不重合的内存地址空间中的两个程序,在语言层面上,以同步的方式使用带宽有限的信道来传输程序控制信息

 

最初目的:为了让计算机能够跟调用本地方法一样去调用远程方法

 

解决的三个基本问题:

  • 表示数据:序列化与反序列化(将交互双方所涉及的数据转换为某种事先约定好的中立数据流格式来进行传输,将数据流转换回不同语言中对应的数据类型来进行使用)

  • 传递数据:通过网络,在两个服务的 Endpoint 之间相互操作、交换数据。处理异常、超时、安全、认证、授权、事务

  • 确定方法:“如何表示同一个方法”,“如何找到对应的方法” 分布式全局唯一ID 雪花算法

朝着更高层次、与插件化方向发展的趋势,提供负载均衡、服务注册、可观察性等方面的支持。

 

RPC协议:RMI(Sun/Oracle)、Thrift(Facebook/Apache)、Dubbo(阿里巴巴/Apache)、gRPC(Google)

语言私有、跨越多门语言、运行在应用层 HTTP 协议之上、运行于传输层 TCP/UDP 协议之上

 

IPC进程间通信 Inter-Process Communication:

  • 管道(Pipe)或者具名管道(Named Pipe):两个进程间的桥梁,可通过管道在进程间传递少量的字符流或字节流。普通管道只用于有亲缘关系进程(由一个进程启动的另外一个进程)间的通信,具名管道允许无亲缘关系进程间的通信。

  • 信号(Signal):信号用于通知目标进程有某种事件发生

  • 信号量(Semaphore):信号量用于两个进程之间同步协作手段

  • 消息队列(Message Queue):用于进程间数据量较多的通信。

  • 共享内存(Shared Memory):允许多个进程访问同一块公共的内存空间,效率最高。常常与其它通信机制,譬如信号量结合使用,来达到进程间同步及互斥的协调操作。

  • 套接字接口(Socket):用于不同机器之间的进程通信。当仅限于本机进程间通信时,套接字接口是被优化过的,不会经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等操作。

 

 

REST 表现层状态转换 Representational State Transfer

面向资源的编程思想,REST是风格不是协议

REST是对HTT(Hypertext Transfer)的进一步抽象,如接口与实现类

"超文本 "指的是能够进行分支判断和差异响应的文本, "超媒体 "指的是能够进行分支判断和差异响应的图形、电影和声音(也包括文本)的复合体。

  • 表征(表现层):信息与用户交互式的表现形式

  • 状态:在特定语境中才能产生的上下文信息

  • 转移:服务器通过某种方式,把“用户当前阅读的文章”转变成“下一篇文章”,这就被称为“表征状态转移”。

  • 统一接口:GET、HEAD、POST、PUT、DELETE、TRACE、OPTIONS

  • 自描述消息:资源的表征可能存在多种不同形态,在消息中应当有明确的信息来告知客户端该消息的类型以及应如何处理这条消息。如“Content-Type : application/json; charset=utf-8”

 

RESTful 系统六大原则

服务端与客户端分离(Client-Server)

无状态(Stateless)

服务器不去负责维护状态,每一次从客户端发送的请求中,应包括所有的必要的上下文信息,会话信息也由客户端负责保存维护,服务端依据客户端传递的状态来执行业务处理逻辑,驱动整个应用的状态变迁。

可缓存(Cacheability)

分层系统(Layered System)

中间服务器可以通过负载均衡和共享缓存的机制提高系统的可扩展性,这样也便于缓存、伸缩和安全策略的部署。

内容分发网络(Content Distribution Network,CDN)

统一接口(Uniform Interface)

按需代码Code-On-Demand

 

REST 提出以资源为主体进行服务设计的风格的好处

  1. 降低的服务接口的学习成本

  2. 资源天然具有集合与层次结构

  3. REST 绑定于 HTTP 协议

 

REST缺点:

  1. REST 与 HTTP 完全绑定,不适合应用于要求高性能传输的场景中

  2. REST 没有传输可靠性支持

    服务应具有幂等性:即服务被重复执行多次的效果与执行一次是相等的。HTTP 协议要求 GET、PUT 和 DELETE 应具有幂等性

  3. REST 缺乏对资源进行“部分”和“批量”的处理能力

标签:HTTP,接口,RPC,REST,进程,服务,远程,客户端
来源: https://www.cnblogs.com/raybin-7/p/16388866.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有