
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在上文中给大家简单介绍了软件编程负载均衡的一些常见问题与算法等基础知识,而本文我们就继续来学习一下,降低系统运行压力的限流方法都有哪些。
1、限流
限流是保证系统可用的一个重要手段,防止超负荷的流量直接打在服务上,限流算法主要有令牌桶、漏桶。
漏桶和令牌桶可以在很多层面做限流,例如服务层网关限流、消息队列限流、Redis限流,这些主要是业务上的限流。
这里我们主要讨论的是接入层的限流,直接在流量入口上限流。
对于Nginx接入层限流可以使用Nginx自带的两个模块:连接数限流模块ngx_http_limit_conn_module和漏桶算法实现的请求限流模块ngx_http_limit_req_moduleo
还可以使用OpenResty提供的Lua限流模块ua-resty-limit-traffic应对更复杂的限流场景。
limmit_conn用来对某个key对应的总的网络连接数进行限流,可以按照如IP、域名维度进行限流。limit_req用来对某个key对应的请求的平均速率进行限流,有两种用法:平滑模式(delay)和允许突发模式(nodelay)。
2、流量过滤
很多时候,一个网站有很多流量是爬虫流量,或者直接是恶意的流量。
可以在接入层,对请求的参数进行校验,如果参数校验不合法,则直接拒绝请求,或者把请求打到专门用来处理非法请求的服务。
3、降级
降级也是保证高可用的一把利剑,降级的思路是“弃车保帅”,在眼看着不能保证全局可用的情况下,抛弃或者限制一些不重要的服务。
降级一般分为多个层级,例如在应用层进行降级,通过配置中心设置降级的阈值,一旦达到阈值,根据不同的降级策略进行降级。
也可以把降级开关前置到接入层,在接入层配置功能降级开发,然后根据情况行自动/人工降级。后端应用服务出问题时,通过接入层降级,可以避免无谓的流量再打到后端服务,从而给应用服务有足够的时间恢复服务。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。