流控实现

背景

         访问控制在业务开发中是一种很常见的防雪崩策略,当后端系统容量有限或者受到其它业务接口访问频率限制的时候,必须在业务前端做好流量控制,避免系统过载或恶意的请求对系统造成冲击,影响业务的运营。

        一般情况下公司为了赶进度,首先考虑的是实现功能,一切把功能实现放在第一位。

IP流量控制方法

        通过NG来控制单个ip的访问频率。

        优点:简单,业务无需做任何调整。

        缺点:粗暴,当访问者的ip发送变化时无法起到拦截的作用。当业务达到一定层度后,这个拦截将会是一个瓶颈。

        业务实现:利用技术架构部提供的kv缓存服务可以在短时间内快速实现全局流量控制问题。使用kv实现该方案的主要原因是,1kv提供了数据自动过期功能、累加器功能和支持cas操作;2kv读写并发能力达到1w/s以上;3kv支持热备容灾和负载均衡。kv的这些特性为实现全局流控提供了技术保障。比如腾讯云的云缓存memcached,是腾讯自主研发的极高性能、内存级、持久化、分布式Key-Value存储服务,适用于高速缓存的场景,兼容Memcached协议,为您提供主从热备、自动容灾切换、数据备份、故障迁移、实例监控全套服务,您无需关注以上服务的底层细节。

        算法实现:使用kv提供的数据自动过期功能实现全局流控加锁问题,设置key的过期时间,当过期时间到,kv会将该key设置为已过期;使用kv提供的累加器功能实现频率限制的累加,当累加器未超过限制值时返回可以访问;当累加值超过限制值时,且全局锁未过期拒绝请求,给用户友好提示;当全局锁已过期时,重新设置全局锁的过期时间,并重置累加器值为1

        结论:

       1.该方法实现精简,外部依赖小,能有效的控制用户的访问并发量,并且解决全局流控问题;

       2.对系统的开销小,仅增加了对cache的访问,理论上访问同一个机房内的cache访问5ms以内。

       3.可动态控制,当某个业务的访问量达到瓶颈或者是某些请求有异常时,可以通过该控制实现业务上的流量控制,比如单个商户主体对某个接口的访问频率限制,单个ip对某个接口的访问频率限制,单个用户对某个接口的访问频率限制。总之,能提取出访问者的唯一身份的情况下都是可以做到控制的。

       当然,道高一尺,魔高一丈,如果系统真正被破坏分子给盯上的时候,上面这些是远远不够的,要结合实际业务做更多维度的控制,真正的做到不影响真正的业务而达到清洗恶意流量的作用的话就需要在实际工作中不断的分析接口的访问者的数据,不断的调整并改善流量控制策略。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值