websocket原理是什么?,第1张

WebSocket是一种与HTTP不同的协议。两者都位于OSI模型的应用层,并且都依赖于传输层的TCP协议。 

虽然它们不同,但是RFC 6455中规定:it is designed to work over HTTP ports 80 and 443 as well as to support HTTP proxies and intermediaries;

(WebSocket通过HTTP端口80和443进行工作,并支持HTTP代理和中介),从而使其与HTTP协议兼容。 

为了实现兼容性,WebSocket握手使用HTTP Upgrade头从HTTP协议更改为WebSocket协议。

WebSocket协议支持Web浏览器(或其他客户端应用程序)与Web服务器之间的交互,具有较低的开销,便于实现客户端与服务器的实时数据传输。 

服务器可以通过标准化的方式来实现,而无需客户端首先请求内容,并允许消息在保持连接打开的同时来回传递。

通过这种方式,可以在客户端和服务器之间进行双向持续对话。 通信通过TCP端口80或443完成,这在防火墙阻止非Web网络连接的环境下是有益的。另外,Comet之类的技术以非标准化的方式实现了类似的双向通信。

大多数浏览器都支持该协议,包括Google Chrome、Firefox、Safari、Microsoft Edge、Internet Explorer和Opera。

与HTTP不同,WebSocket提供全双工通信。此外,WebSocket还可以在TCP之上实现消息流。TCP单独处理字节流,没有固有的消息概念。

 在WebSocket之前,使用Comet可以实现全双工通信。但是Comet存在TCP握手和HTTP头的开销,因此对于小消息来说效率很低。WebSocket协议旨在解决这些问题。

WebSocket协议规范将ws(WebSocket)和wss(WebSocket Secure)定义为两个新的统一资源标识符(URI)方案,分别对应明文和加密连接。除了方案名称和片段ID(不支持#)之外,其余的URI组件都被定义为此URI的通用语法。

使用浏览器开发人员工具,开发人员可以检查WebSocket握手以及WebSocket框架。

优点

1、较少的控制开销。在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。

在不包含扩展的情况下,对于服务器到客户端的内容,此头部大小只有2至10字节(和数据包长度有关);对于客户端到服务器的内容,此头部还需要加上额外的4字节的掩码。相对于HTTP请求每次都要携带完整的头部,此项开销显著减少了。

2、更强的实时性。由于协议是全双工的,所以服务器可以随时主动给客户端下发数据。相对于HTTP请求需要等待客户端发起请求服务端才能响应,延迟明显更少;即使是和Comet等类似的长轮询比较,其也能在短时间内更多次地传递数据。

3、保持连接状态。与HTTP不同的是,Websocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。而HTTP请求可能需要在每个请求都携带状态信息(如身份认证等)。

4、更好的二进制支持。Websocket定义了二进制帧,相对HTTP,可以更轻松地处理二进制内容。

5、可以支持扩展。Websocket定义了扩展,用户可以扩展协议、实现部分自定义的子协议。如部分浏览器支持压缩等。

6、更好的压缩效果。相对于HTTP压缩,Websocket在适当的扩展支持下,可以沿用之前内容的上下文,在传递类似的数据时,可以显著地提高压缩率。

阅读本文前,需熟悉OSI七层参考模型。

常见的负载均衡设备,有F5,Haproxy,lvs, nginx等。

F5是商用硬件负载均衡,性能很好,但是价格昂贵,除了负载均衡,还有应用交换、会话交换、状态监控等众多功能。

F5一般做四层负载均衡,但也支持七层负载均衡。

Haproxy(以下简称ha)是软件负载均衡,开源,一般做七层负载均衡,但也支持四层负载均衡。

Linux Virtual Server(以下简称lvs)是软件负载均衡,开源,二层或四层负载均衡,已集成到linux内核,自身有完备的热备方案(keepalived+lvs),稳定性极强。

nginx也是软件负载均衡,开源,通过反向代理实现负载均衡,是七层负载均衡,性能不如上面的几个。

tips1

有些公司,测试环境用ha/lvs/nginx,生产环境用F5。

tips2

nginx做web服务器时,一般做静态资源服务器和php的web服务器,所以很多公司,会采用F5+nginx或者ha+nginx的架构

tips3

微服务中的ribbon属于客户端负载均衡,上面的几种都是服务端负载均衡

二层负载均衡

在数据链路层通过修改mac地址实现,如lvs的DR模式(直接路由模式)

三层负载均衡

在网络层通过DNAT协议修改目标地址实现

四层负载均衡

用ip+端口实现请求转发

备注:tcp报文里并没有ip,但是四层负载均衡可以用ip+端口,是因为server可以拿到ip

七层负载均衡

通过重新发起http请求实现,即client把请求发给lb,lb把请求代发给server,再把server的响应返回给client,因此七层负载均衡也经常被称为代理,七层负载均衡设备也被称为代理设备。

七层负载均衡常用于内网与外网的通信,比如内网无法直接访问外网,需要通过代理设备代发http请求,这种情况下,代理设备需要配置双网卡,以同时与内外网络通信。

由于需要重发http请求,七层负载均衡性能较差,但是更智能和安全,因为应用层可以获取甚至修改请求的真实内容(即应用数据),比如cookie、url等,可以做一些智能的操作,比如根据cookie/url转发请求,也可以做一些安全操作,比如过滤特定报文、防止SYN Flood攻击等。

使用七层负载均衡时,服务的性能受限于代理设备的网卡带宽。

常见的负载均衡策略,有轮询、加权轮询、ip_hash、cookie、url_hash,根据服务器响应时间转发、根据最少连接转发等等。

备注:nginx可以安装第三方插件,使用第三方实现的策略

轮询:按服务器列表顺序转发请求,轮询是nginx默认的策略,本策略适合服务器配置相当、请求无状态(即不依赖session)的场景

加权轮询:如果不同服务器配置不同,可以为配置高的服务器增加权重

ip_hash:根据ip哈希结果转发,可以实现同一用户持续请求同一服务器(即会话保持),适合有状态(即依赖session)的场景,对png、jpg、js、css等静态资源的请求,不适合使用本策略

cookie:根据特定cookie转发请求,一般也是用于实现会话保持,比如为服务器A、B分别增加service-flag=a、service-flag=b的cookie,后续请求根据cookie转发

可以参考 haproxy实现会话保持

url_hash:根据url哈希结果转发,同一个接口始终请求同一台服务器,一般配合缓存使用,缓存接口返回结果

根据服务器响应时间转发:优先转发到响应时间较快的服务器

根据最少连接转发:优先转发到连接数较少的服务器

F5有一些特有的负载均衡策略:利用从应用程序和服务器收集到的各项性能指标,分析并转发

负载均衡有两个步骤:

1根据什么算法选择真实服务端,即负载均衡策略,如轮询、加权轮询、ip_hash、cookie、url_hash等;

2把请求转发到真实服务器,转发方式有二层到七层负载均衡

keepalived软件一开始是专为lvs设计的,后来加入了可以实现高可用的VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)功能,因此,keepalived还可以作为nginx、haproxy、mysql等服务的高可用解决方案。

以nginx为例,为了防止nginx本身由于宕机等原因导致网站不可用,一般会搭两套nginx反向代理,用keepalived提供一个VIP。

一般情况下,VIP只在nginx主节点上工作,如果nginx主节点不可用了,VIP会自动漂移到从节点,自动漂移的原理即VRRP协议。

VIP漂移到从节点后,如果主节点恢复正常了,VIP是否漂移回主节点,取决于当前模式是抢占模式还是非抢占模式。

下图是一张简单的架构图,解释如下:

以上观点纯属个人意见,如果错误,欢迎指出,有些地方写的很简单,是因为我也不懂~

APEX无法连接ea服务器的原因主要是网络质量不好、游戏文件损坏等等。

1、网络质量不好

玩家网络质量不足,导致无法连接EA服务器进入游戏,玩家电脑配置为满足游戏最低配置要求,无法启动游戏。《APEX》对国内玩家的网络质量要求很高,直连基本没法连接上EA服务器游玩,用加速器,搜索并加速《APEX》英雄就可以解决这个问题,正常进入游戏了。

2、游戏文件损坏

游戏文件损坏,导致无法正常运行游戏,或者是游戏服务器崩溃,导致所有玩家暂时都无法进入游戏游玩。游戏服务器还不稳定,经常会出现服务器崩溃的情况,因为服务器崩溃导致的进不去游戏,玩家只能等待官方完成服务器维护,可以查看游戏官方公告,了解维护进度和预计维护时间。

《APEX》角色设定介绍:

1、机动性高,跑起来很快(只是感觉上,其实所有角色移动速度是一样的),队伍中的突击手,侦察兵。

2、Q技能:以自身为圆心小范围内探索敌人,范围较小,一般在资源集中的房区使用。会放出一道红光特效,敌人也能看见。

3、Z技能:狩猎野兽,强化感知,提升移动速度并标示玩家的猎物。这个技能对于看不到敌人的萌新来说简直就是神技能,只要有人出现在玩家的视野里,就能有红色人物轮廓显现,但除了敌人全屏黑白,范围不清楚有多大。

4、被动技能:追踪器,看见敌人所留下的踪迹。会提示敌人状态(如重伤),踪迹产生时间。踪迹残留一段时间后会消失。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » websocket原理是什么?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情