ansible nginx redis mysql事务 CC攻击 DOS攻击 DNS

问题一:ansible执行过程:

1.首先用户执行命令或者执行playbook

2.INI解析配置文件(从主机清单中解析出IP

3.主机建立ssh连接

4.在被控主机创建临时目录

5.给创建的目录加权限

6.执行python脚本

7.删除脚本

问题二:显性URL和隐形URL区别:

域名解析URL转发分为显性和隐性,

显性URL:将域名重定向到另一个地址

隐性URL:与显性URL类似,但是会隐藏真实的目标地址

假设将域名A跳转到域名B来说下隐形URL和显性URL的区别:

  • 显性URL:当浏览器地址栏输入域名A,网站打开后会重定向跳转到域名B;
  • 隐形URL:当浏览器地址栏输入域名A,网站打开后浏览器地址栏依旧是域名A,但是显示的是网站域名B的内容。
  • !显性URL是利用301或302重定向的方式进行URL转发的;隐形URL是利用iframe框架技术来隐藏目标地址

域名转发显性URL跳转和隐性URL跳转都属于域名转发,只是从一个域名跳转到另外一个域名而已,不须要在服务器端作域名解析便可生效。cname解析和隐性URL跳转后,在浏览器的地址栏中输入域名A(域名A被cname解析到域名B),则地址栏中的地址仍是域名A,而显性URL跳转后,浏览器地址栏中的域名会变成作了URL跳转后的域名。

问题三:有时候删除文件但是内存还没有被释放还在占用

1.某个进程正在使用资源还没有被释放,所以内存空间也没有被释放,可以杀掉进程

2.也可能是僵尸进程

问题四:redis的持

目录

问题一:ansible执行过程:

问题二:显性URL和隐形URL区别:

问题三:有时候删除文件但是内存还没有被释放还在占用

问题四:redis的持久化方式:(为了减少数据库的压力)

RDB与AOF区别:

AOF重写适合在AOF运行了很久的写命令之后执行

1.缓存穿透,缓存击穿,缓存雪崩的原理

5.redis事务:

6.Watch监控(很重要)

问题五:nginx的负载均衡策略:

 问题六:DOS攻击,CC攻击,DDOS攻击的介绍和解决办法

问题七:MySQL数据库事务的特性:

原子性【Atomicity】

一致性(Consistency)

隔离性(Isolation)

持久性(Durability)


持久化方式:(为了减少数据库的压力)

RDB:(全量)

(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),

 AOF:(增量) Append Only File  追加写入同步三个步骤完成命令

(原理是将Reids的操作日志以追加的方式写入文件)

RDB与AOF区别

  • RDB可以理解为是一种全量数据更新机制,AOF可以理解为是一种增量的更新机制,AOF重写可以理解为是一种全量+增量的更新机制(第一次是全量,后面都是增量)
  • RDB适合服务器数据库数据量小写命令频繁的场景
  • AOF适合数据量大,写命令少的场景
  • AOF重写适合在AOF运行了很久的写命令之后执行

1.缓存穿透,缓存击穿,缓存雪崩的原理

  • 缓存穿透:key中对应的缓存数据不存在,导致去请求数据库,造成数据库的压力倍增的情况
  • 缓存击穿:redis过期后的一瞬间,有大量用户请求同一个缓存数据,导致这些请求都去请求数据库,造成数据库压力倍增的情,针对一个key而言
  • 缓存雪崩:缓存服务器宕机或者大量缓存集中某个时间段失效,导致请求全部去到数据库,造成数据库压力倍增的情况,这个是针对多个key而言

2.缓存穿透的解决办法

1.采用布隆过滤器进行数据拦截

2.如果数据为空也可以进行缓存,就不会发生穿透情况

 

3.缓存击穿解决办法

使用互斥锁(mutex key),就是一个key过期时,多个请求过来允许其中一个请求去操作数据库,其他请求等待第一个请求成功返回结果后再请求。

4.缓存雪崩的解决办法

  • 这种情况是因为多个key同时过期导致的数据库压力,一种方法可以在key过期时间基础上增加时间随机数,让过期时间分散开,减少缓存时间过期的重复率
  • 另一种方法就是加锁排队,这种有点像上面缓存击穿的解决方式,但是这种请求量太大,比如5000个请求过来,4999个都需要等待,这必然是指标不治本,不仅用户体验性差,分布式环境下就更加复杂,因此在高并发场景下很少使用
  • 最好的解决方法,是使用缓存标记,判断该标记是否过期,过期则去请求数据库,而缓存数据的过期时间要设置的比缓存标记的长,这样当一个请求去操作数据库的时候,其他请求拿的是上一次缓存数据

5.redis事务:

redis事务可以一次性执行多个命令:

  • 批量操作在发送 EXEC 命令前被放入队列缓存。
  • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

一个事务从开始到执行会经历以下三个阶段:

  • 开始事务。
  • 命令入队。
  • 执行事务。

 

6.Watch监控(很重要)

1.)表锁与行锁:表锁是锁住整张表,使用这张表的这一瞬间只能一个人在使用

特点:并发性差但数据一致性高

行锁:锁住一行记录

特点:并发性好,一致性差。

2. )乐观锁、悲观锁: 悲观锁就类似与表锁,它保证了数据一致性但牺牲了效率。而乐观锁虽与行锁有相似之处,但是它在行锁的基础之上做了提升。

3. Watch:监控

监控某一个或多个key,在执行事务之前如果被其他命令所打断那么事务终止。

 

!!!注意:只要执行了EXEC,之前加的监控锁都会被取消!Redis的事务不保证原子性,一条命令执行失败了,其他的仍然会执行,且不会回滚

问题五:nginx的负载均衡策略:

目前Nginx服务器的upstream模块支持6种方式的分配:

轮询

默认方式

weight

权重方式

ip_hash

依据ip分配方式

least_conn

最少连接方式

fair(第三方)

响应时间方式

url_hash(第三方)

依据URL分配方式

 问题六:DOS攻击,CC攻击,DDOS攻击的介绍和解决办法

一、DDoS攻击介绍

    DDoS攻击(Distributed Denial of Service)是分布式拒绝服务。

    DOS攻击想办法让目标机器停止服务或资源访问,这些资源包括磁盘空间、内存、进程甚至网络

带宽,从而阻止正常用户的访问。

        1.将大量流量像洪水一样涌向服务器(FLOOD),阻止合法的网络通讯

        2.破坏两个机器间的连接,阻止访问服务

        3.阻止特殊用户访问服务

        4.破坏服务器的访问或者导致服务器死机

    不过DOS攻击单独使用的较少,通常是将DOS攻击作为一次入侵的一部分,比如用大量的攻击攻击服务器,导致防入侵检测系统的日志过多,反应迟钝,这样就可以绕过检测系统

二、DDos攻击原理

    TCP是提供可靠的、端到端的字节流通讯协议。

    在TCP/IP协议中,IP层不保证将数据报正确传送到目的地,TCP从本地机器接受用户的数据流,将其分成不超过64K字节的数据片段,将每个数据片段作为单独的IP数据包发送出去,最后在目的地

机器中再组合成完整的字节流,TCP协议必须保证可靠性。

    1.SYN Flood:利用TCP协议的原理,这种攻击方法是非常经典的DDOS方法。主要是通过受害主机发送大量伪造源IP和源端口的SYNACK包,导致主机的缓存组员被耗尽或忙于发送回应包而造成拒绝服务。

TCP三次握手:

        1.客户端发送一个包含SYN标志的TCP报文,同步报文指明客户端所需要的端口号和TCP连接的初始化序列号

        2.服务器收到SYN报文之后,返回一个SYN+ACK报文 表示客户端被接受 TCP初始序列号+1

        3.客户端也返回一个确认报文ACK给服务器,同样TCP序列号+1

        4.如果服务器端没有收到客户端的确认报文ACK,则处于等待状态,将客户IP加入等待队列,然后轮询发送SYN+ACK报文

    所以攻击者可以通过伪造大量的TCP握手请求,耗尽服务器端的资源

    2.慢速攻击:Http协议中规定,HTTPRequest以\r\n\r\n结尾表示客户端发送成功。攻击者打开一个Http1.1的连接,将Connection设置为keep-Alive,然后保持与服务器的TCP长连接。始终不打送\r\n\r\b,每隔几分钟写入一些无意义的数据流,拖死机器。

三、DDoS攻击防御方法

    1.过滤不必要的服务和端口

    2.异常流量的清洗过滤:通过DDoS硬件防火墙对异常流量的清洗过滤,通过数据包的规则过滤、数据流指纹检测过滤、数据包内容定制过滤等技术能准确判断外来访问流量是否正常,进一步将异常流量禁止过滤。

四、CC攻击

    CC攻击(Challenge Collapsar)是DDOS的一种,也是一种常见的网站攻击方法。攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。相比其它的DDOS攻击CC似乎更有技术含量一些。这种攻击你见不到真实源IP,见不到特别大的异常流量,但造成服务器无法进行正常连接。

五、CC攻击防御

    1.把网站做成静态页面:把网站尽可能做成静态页面,能大大提高抗攻击能力。

    2.存在多站的服务器上,严格限制每一个站允许的IP连接数和CPU的使用时间。

问题七:MySQL数据库事务的特性:

 

 

原子性【Atomicity】

原子性指的指的就是这个操作,要么全部成功,要么全部失败回滚。不存在其他的情况。

一致性(Consistency)

一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。

隔离性(Isolation)

隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离

持久性(Durability)

持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王盐盐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值