Nginx的反向代理呢
客户端将需求发送给nginx反向代理服务器,nginx将所需要的请求根据域名再发送到真实的服务器,nginx再将获取到的数据返回给客户端,这样nginx和真实的服务器对外就是一个服务器,只会暴露代理ip地址,不会暴露真实服务器的ip地址。这样的好处呢就是可以保护真实的ip地址,被攻击的是代理服务器的ip,而不是真实服务器的ip地址,从而提高了保护性。
关于负载均衡呢
就是增加服务器的数量,nginx通过轮询,iphash,wegiht等请求将集中在单个服务器的请求分发到不同的服务器。达到平衡每个服务器的负载,提高了系统的稳定性和可靠性。
静态分离呢
我的理解就是严格意义上来说应该是将动态请求和静态请求分割开来。Nginx处理静态页面,tomcat处理动态页面。
Redis缓存击穿
是指一个热点key突然失效,大量的请求直接穿透到数据库或后端服务,导致数据库的压力太大性能下降
应用加锁策略和设置热点永不过期的方法进行解决。
Redis缓存穿透
是指恶意或非法请求,查询一个缓存中不存在也不会存在的数据,导致请求直接穿透到数据库或后端服务
应用缓存控制策略和布隆过滤器进行解决。
Redis缓存雪崩
是指大量缓存同时失效,导致后续的请求穿透到数据库或后端服务,造成系统瞬间压力过大而崩溃。
应用多级缓存策略,缓存失效时间随机,限流和降级等方法进行解决。
为什么三主三从呢
Redis集群中采用主从复制的机制来实现数据的高可用性。在redis集群中服务器之间的连接采用了ping-pong机制,互相进行通信,检测一个节点是否挂起需要进行互相投票,当这个节点被集群中超过一半的节点检测到有问题则被认为该节点已经被挂起。为了实现过半投票所以最少需要三台主服务器,而为了保证数据的安全,每个主服务器都配有一个备用服务器。所以最少是三主三从。
哨兵的工作原理
当哨兵A认为这个主服务器宕机了,并不会对主服务器进行故障转移,仅仅是哨兵a主观认为master宕机了,这只是主观下线,当后续的其他哨兵也认为master宕机了,达到一定数量数量的时候,整个哨兵体系就会认为master宕机了,这是客观下线。此时哨兵体系中投票出一位哨兵首领,哨兵首领将会对宕机的主服务器进行故障转移,然后从salve中选出新的master并对所有salve发出指令。