计算机网络--面试总结四(HTTP、RPC、WebSocket、SSE)

ops/2024/9/23 12:28:49/

当前:计算机网络--面试总结四(HTTP、RPC、WebSocket、SSE)

计算机网络--面试知识总结一

计算机网络-----面试知识总结二

计算机网络--面试总结三(Http与Https)

知识积累之ThreadLocal---InheritableThreadLocal总结

HTTP和RPC

RPC的特点:

  • 1、调用方便:调用远程服务就像调用本地方法一样
  • 2、性能较好:RPC通常使用二进制进行传输,这样可以减少数据的体积并且提高传输效率,由于RPC考虑的是服务之间的调用不像HTTP那样需要兼容各种场景,因此请求头部内容也相对比较简单,并且RPC可以选择各种传输协议,比如TCP、UDP等等,而HTTP传输层使用的是TCP

其实通过前面的学习,我们不难知道HTTP2.0,3.0其实给予1.1都改进了很多,性能也非常不错,可能比很多RPC协议都要好,但是2.0是这几年才出的,而RPC出现的时间比HTTP1.1还早,所以也不太可能取代RPC

为什么要有WebSocket

传统HTTP想要及时拿到服务端数据的方法

现在有这样一种场景,需要客户端-服务端进行频繁的交互,比如聊天室、网页小游戏等,如果使用传统的HTTP来拿到服务端响应后的数据主要就是两种方案

  • 1、定时轮训获取
  • 2、长轮训获取
定是轮询

对于定时轮寻来说,就是客户端浏览器每隔一段时间发送一个请求去问服务端好了没有,如果没好就直接返回,然后进行下一次的请求发送,这样一次往复,比如我们轮询时间定的是1s那么就是,当第一次访问服务端,服务端还没好之后,客服端需要等待1s后又重新发送请求,知道拿到数据为止

  • 缺点:由于是定时轮询,因此,客户端拿到数据可能有延迟
长轮训

对于长轮询来说:其实长轮寻,其实可以看作是一个被延迟的HTTP请求过程,即,比如客服端发送一个请求,然后就一直等待服务端的响应,只要没到超时时间,那么就一直等待如果服务端做出了响应了,那么客户端就能马上收到消息,如果超时了,那么只需要重新发送HTTP请求就可以了,从而达到能够立刻知道服务端响应

优点
  1. 减少请求次数:相比于短轮询,长轮询减少了无效的请求次数,因为服务器会在有数据时才返回响应。
  2. 降低带宽和服务器负载:由于减少了请求次数,长轮询也降低了对带宽和服务器资源的消耗。
  3. 实时性较好:虽然长轮询不是真正的实时推送,但它可以在一定程度上模拟实时效果,因为服务器在有新数据时会立即响应。
缺点
  1. 延迟:虽然长轮询可以减少请求次数,但它仍然存在一定的延迟,因为客户端需要等待服务器响应才能获取新数据。
  2. 资源占用:在长时间没有新数据的情况下,服务器需要保持连接打开状态,这可能会占用一定的服务器资源。
应用场景

长轮询适用于那些对实时性要求不是特别高,但又不希望频繁发送请求的Web应用程序场景,新闻更新提示等。在这些场景中,长轮询可以在不增加过多服务器负载的情况下,提供较好的实时性体验。

WebSocket与SSE的区别和应用场景

WebSocket

定义与特点
WebSocket是一种在单个TCP连接上进行全双工通讯的协议。它允许客户端和服务器之间通过持久连接进行实时通信,而无需像传统的HTTP请求那样频繁地建立和断开连接。WebSocket协议建立在HTTP之上,但一旦连接建立,通信就独立于HTTP。

使用场景
WebSocket适用于需要高频率、双向数据交换的应用场景,如在线游戏、实时聊天应用、实时协作工具、股票交易平台等。这些场景要求服务器能够主动向客户端推送数据,并且客户端也需要能够随时向服务器发送数据。

优点

  • 实时性强:WebSocket提供了低延迟的实时通信能力。
  • 双向通信:支持客户端和服务器之间的双向数据传输。
  • 减少服务器负担:由于减少了HTTP连接的建立和断开次数,减轻了服务器的负担。
  • 支持自定义协议:开发者可以自定义二进制帧,支持更灵活的数据传输方式。

缺点

  • 复杂度较高:相对于SSE,WebSocket的实现和维护复杂度更高。
  • 兼容性:虽然WebSocket的兼容性较好,但在一些老旧的浏览器或服务器环境中可能仍存在问题。

  1. 服务器向客户端推送数据。
  2. 客户端接收数据。
定义与特点:
 

SSE是一种基于HTTP的服务器推送技术他是半双工通信,它允许服务器主动向客户端推送数据。SSE通过建立一个持久的HTTP连接(实际上是长轮询的一种变种),服务器可以在有数据更新时主动向客户端发送事件通知。客户端使用浏览器内置的EventSource接口来接收这些事件。

使用场景
SSE适用于需要从服务器向客户端单向推送实时信息的场景,如现在的AI回答基本上使用的都是SSE技术,新闻更新、股票价格变动、社交媒体通知等。这些场景通常不需要客户端向服务器发送大量数据,而是需要服务器能够实时地向客户端推送最新的信息。

优点

  • 实现简单:SSE的实现相对简单,客户端只需使用EventSource接口即可。
  • 浏览器兼容性好:SSE得到了大多数现代浏览器的支持。
  • 服务器负担较轻:由于基于HTTP协议,SSE可以利用现有的HTTP服务器和基础设施。

缺点

  • 单向通信:SSE只支持服务器向客户端的单向推送,不支持客户端向服务器发送数据(除非使用其他机制,如Ajax)。
  • 连接限制:在某些情况下,浏览器可能对SSE连接数有限制,这可能会影响大规模应用的性能。
  • 安全性:SSE本身不提供加密机制,需要依赖TLS等协议来保证数据传输的安全性。

总结

WebSocket和SSE都是实现实时通信的有效技术,它们各有优劣和适用场景。WebSocket适用于需要高频率、双向数据交换的应用场景,而SSE则适用于从服务器向客户端单向推送实时信息的场景。在选择使用哪种技术时,需要根据具体的应用需求和场景来综合考虑。


http://www.ppmy.cn/ops/100582.html

相关文章

九州通“最差“半年报:股价今年跌超三成,第二利润曲线毛利下滑

《港湾商业观察》施子夫 王璐 从最新公布的半年报业绩来看,九州通(600998.SH)延续了一季度业绩欠佳的态势:营收和净利润双双下滑。 营收净利润下滑,中报创多年来“最差” 今年上半年(报告期内&#xff…

6.Linux_服务器搭建

TFTP服务器 1、概述 什么是TFTP服务器: TFTP(Trivial File Transfer Protocol)即简单文件传输协议是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69 介…

Docker方式部署K8s集群

1.1 集群创建说明 Kubernetes支持多种容器运行时,包括Containerd、Docker和CRI-O。以下是这三种方式的详细说明: Containerd:Containerd是Kubernetes默认使用的容器运行时。它是一个轻量级的容器运行时,专为Kubernetes设计&#…

商品详情API返回值中的商品重量与体积信息

商品详情API(Application Programming Interface)的返回值中关于商品重量与体积的信息,通常会以结构化的数据格式呈现,比如JSON(JavaScript Object Notation)或XML(Extensible Markup Language&…

如何使用ssm实现基于SSM的旅游管理系统

TOC ssm285基于SSM的旅游管理系统jsp 第1章 绪论 1.1 课题背景 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。所以各行业&…

安科瑞智能物联网关:重塑能源管理新纪元,远程智控尽在“掌”握

在数字化转型浪潮中,能源管理与工业自动化领域正经历着前所未有的变革。安科瑞智能物联网关-智能通信管理机不仅重新定义了智能监控与保护装置的通信管理模式,更为能源数据采集与远程控制提供了前所未有的高效解决方案。 安科瑞智能物联网关&#xff0c…

mac os 外接设备使用win习惯快捷键

目录 1. 简单映射版本(常用快捷键)2. 如果想追求完全的win匹配3. 关于外接鼠标滚动设置 1. 简单映射版本(常用快捷键) 就把ctrl和Command键互换一下就行 点击设置-键盘-键盘快捷键 然后在修饰键中,将control和comm…

MySQL——高级查询(5)函数(列表)

MySQL 中提供了丰富的函数,通过这些函数可以简化用户对数据的操作。MySQL中的函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、加密函数等。由于函数数量较多,不可能一一进行讲解,接下来通过 5 张表对其中一些常用函数的作用进…