说说限流那些事

本文探讨了限流的重要性,特别是在高并发场景下。通过一个生产推送系统雪崩的问题,阐述了限流的必要性和解决方案,包括限流的三要素:识别核心调用接口、评估限流影响和设置限流值。同时介绍了几种常见的限流算法,如固定计数法、滑动窗口计数法、漏桶算法和令牌桶算法,并推荐了阿里巴巴的Sentinel限流项目。
摘要由CSDN通过智能技术生成

说说限流那些事

限流就是限制流量。原来是物理名词。限流是通过限流电阻使得电路中的某一段电流不超过一个上限。


后面限流使用到多个场景,道路限流、接口限流、景区限流等。直观理解,就是控制流量,那么其它流量如何处理呢?常见的处理方式就是拒绝请求。比如道路限流,超过限流值的车辆就不允许上路;接口限流,超过限流值的请求就直接丢弃返回失败;景区限流,超过限流值的人就阻挡在景区外。


一般来说,限流更为关注如何限制流量,至于超过限流的处理方式一般不在限流范围内讨论。基本上可以根据具体业务选择丢弃或者降级处理。


一个雪崩的问题产生

一个生产推送系统,除了正向的推送外,超过一定员工数量的组织变无法全员推达,涉及到一个写扩散的问题,即一次无法推达所有用户,此时需要有另外的策略来实现数据推送。


写扩散,即通过写入的方式将数据存储到用户的存储空间中,不再依赖服务提供方的数据。比如邮箱就是一种写扩散的模式,公司老板给全员写了一封邮件,全员每个人的收件箱都会收到一封信,无论老板或者其他员工对信件如何处理,不影响用户自己的信件数据。


那么问题来了,写扩散对于任何系统来说都有一个上限,如果一封邮件同时发给100万的员工,相信哪个系统也顶不住。对于邮箱来说,可以做一些异步的优化。但是对于实际推送系统来说,往往还依赖很多的系统,比如100万的用户名就不大可能能查出来。


那么这里可以使用一个非常常见也经典的模式,就是推拉结合。那就是利用用户客户端上线等时机来调用服务端数据增量计算,然后下发到客户端。


开始跑的正常,但是突然某一天业务量暴涨,系统就崩溃了,正向推送成功率极具下跌

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值