Redis哨兵模式实现网站限流

一、Redis介绍

        Redis是一个开源的使用C语言编写,支持网络,可基于内存亦可持久化的日志型、key-value 数据库,并提供多种语言的API。

        1、Redis的特性

        速度快,持久化,支持多种数据结构,支持多种编程语言,功能丰富,主从复制,高可用及分布式。

        2、 Redis的应用场景

        Redis是一个开源。内存存储的数据结构服务器,可用作数据库,高速缓存和消息代理。采用单进程单线程模型,并发能力强大。是当前互联网架构中主流的分布式缓存工具。

二、什么是高可用及Redis的实现方法

        高可用一般指服务器的冗余,一个服务器挂了,可以自动切换到另外一个服务器上,不影响客户使用。

        Reids如何提供高可用:

        主从,哨兵,分布式集群。

三、 Redis 主从模式实现高可用

        1、主从模式网络拓扑图

主从模式网络拓扑图

        主节点(master)工作,从节点数据备份。

        web应用连接到redis主节点进行工作。

        主节点将变化的数据同步给从节点。

        主节点宕机,开发人员手动将 redis.properties 修改为将要成为主节点的从节点的配置。

        手动将其中一台从节点修改为主节点,并重启。

        从上面的步骤来看,主从模式在主节点宕机时,需要进行手动修改配置文件,把从节点变成主节点,开发人员需要修改配置文件。

四、哨兵模式实现高可用

        1、哨兵模式网络拓扑图

哨兵模式网络拓扑图

        添加3个sentinel哨兵节点(奇数个),配置好监听的redis。

        web应用的 redis.properties 直接连接哨兵的 ip 和端口。

        应用向哨兵询问 redis 主节点的 ip 和端口,执行业务操作。

        当master主节点挂机后,哨兵自动把从节点切换为主节点,无需人工干预。

        从上面的步骤可以看到,哨兵模式不需要修改配置文件,即可实现高可用。

五、Redis哨兵模式实现网站限流

        1、业务场景

        对于系统或平台而言,被终端攻击是一件不可避免的事情:

        短时间多次操作系统;

        重复操作导致缓存击穿甚至雪崩。

        2、解决方案

        (1)在 nginx 层拦截,防止多次提交。

        (2)在 nginx 层+lua+redis做拦截,防止多次提交。

        (3)在业务层面拦截,防止多次提交。

        3、在业务层面拦截的解决方案

        使用 Inteceptor 和 Redis。

        1、当用户访问时,以ip或username+日期作为键,访问次数作为值,将其加入缓存,并设置过期时间。

        2、如果没有达到一段时间内访问次数的阈值,每次访问将键值加1。

        3、如果在过期时间内超过访问次数的阈值,直接返回并提示用户。

        


        

你可能感兴趣的:(Redis哨兵模式实现网站限流)