Socket阻塞模式和非阻塞模式的区别

Socket阻塞模式和非阻塞模式的区别,第1张

1、阻塞:
一般的I/O *** 作可以在新建的流中运用在服务器回应前它等待客户端发送一个空白的行当会话结束时,服务器关闭流和客户端socket如果在队列中没有请示将会出现什么情况呢那个方法将会等待一个的到来这个行为叫阻塞accept()方法将会阻塞服务器线程直到一个呼叫到来当5个连接处理完闭之后,服务器退出任何的在队列中的呼叫将会被取消
2、非阻塞:
非阻塞套接字是指执行此套接字的网络调用时,不管是否执行成功,都立即返回。比如调用recv()函数读取网络缓冲区中数据,不管是否读到数据都立即返回,而不会一直挂在此函数调用上。在实际Windows网络通信软件开发中,异步非阻塞套接字是用的最多的。平常所说的C/S(客户端/服务器)结构的软件就是异步非阻塞模式的。
简单点说:
阻塞就是干不完不准回来,
非组赛就是你先干,我现看看有其他事没有,完了告诉我一声

可能性很多;第一:你的网速很慢,导致会掉线,我以前也是这样。第二;电脑的配置问题(不过一般电脑都不会出现这个问题,但是并不代表没有)第三;你下载的客户端有问题,或者存在病毒解决办法,把不要的程序或者组件删掉,提升电脑的运转速度,再就是杀毒,检查网速,或者猫是否正常。

并发访问就是同时有多个请求请求同一服务。比如我和你现在都同时在请求百度的服务器提供搜索。
大量的并发访问如果超出了服务器的承受能力的话,轻则导致服务器抛弃一部分请求,重则导致服务器资源耗尽,当机。
有一种攻击叫分布式拒绝服务攻击(DDOS),就是利用这个。使得大量的垃圾请求阻塞服务器,使得服务器无法处理正常的请求从而耗尽资源。

我们知道redis是一个 高效的分布式内存数据库 ,由于是 *** 作内存所以性能非常之快,通常用它来做分布式缓存,用来提高微服务的高性能,但是因为是内存 *** 作,所以当出现服务器故障,断电等情况就会造成 内存数据丢失 ,不可恢复,因此redis 引入了持久化机制来将内存数据写入磁盘,从而保障了Redis的数据不被丢失。

Redis有两种持久化的方式,一种是RDB,另外种是AOF。

RDB是将Redis内存中数据的快照存储在磁盘内,是Redis的默认持久化方案。

RDB持久化默认有三种策略

可在redisconf中配置,会以一段时间内达到指定修改的次数为规则来触发快照 *** 作,快照文件名为dumprdb。每当Redis服务重启的时候都会从该文件中把数据加载到内存中。

在60秒内有10000次 *** 作即触发RDB持久化。

没有满足第一种条件时,在900秒内有1次 *** 作即触发RDB持久化。

没有满足第二种条件时,在300秒内有10次 *** 作即触发RDB持久化。

RDB持久化除了可以根据配置中的策略来触发外,还可以使用save和bgsave命令手动来触发。这两个命令的区别在于save会阻塞服务器进程。在执行save命令的过程中,服务器不能处理任何请求,但是bgsave(background save,后台保存)命令会通过一个子进程在后台处理数据RDB持久化。本质上save和bgsave调用的都是rdbSave函数,所以Redis不允许save和bgsave命令同时执行,当然这也是为了避免RDB文件数据出现不一致性的问题。

每次都是一个大文件,备份写入IO *** 作笔记大,很容易耗时,影响进程资源使用。

如果最近一次进程崩溃,那么最近一次数据备份后的数据就被丢失。

文件直接就可以当冷备使用

AOF(Append Only File)以独立日志的方式记录每次的写命令,可以很好地解决了数据持久化的实时性。系统重启时可以重新执行AOF文件中的命令来恢复数据。AOF会先把命令追加在AOF缓冲区,然后根据对应策略写入硬盘。

AOF的实现流程有三个步骤

步骤一

把命令追加到AOF缓冲区,

步骤二

将缓冲区的内容写入程序缓冲区

步骤三

将程序缓冲区的内容写入文件

当AOF持久化功能处于开启状态时,服务器每执行完一个命令就会将命令以协议格式追加写入redisServer结构体的aof_buf缓冲区。而在服务重启的时候会把AOF文件加载到缓冲区中。

AOF有 三种触发机制

·always:每次发生数据变更都会被立即记录到磁盘,性能较差,但数据完整性比较好。

·everysec:每秒钟将aof_buf缓冲区的内容写入AOF文件,如果宕机,就会有1秒内的数据丢失。

·no:将数据同步 *** 作交给 *** 作系统来处理,性能最好,但是数据可靠性最差。在配置文件中设置appendonly=yes后,若没有指定apendfsync,默认会使用everysec选项。

写入指令随着时间的推移,记录了很多重复的指令,导致数据量非常大。

RDB优先级高于AOF

RDB小,AOF较大

RDB慢,AOF快

RDB快,AOF慢



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13445752.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-08
下一篇 2023-08-08

发表评论

登录后才能评论

评论列表(0条)

保存