`
hj111
  • 浏览: 1884 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

流控实现

阅读更多

背景

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

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

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对某个接口的访问频率限制,单个用户对某个接口的访问频率限制。总之,能提取出访问者的唯一身份的情况下都是可以做到控制的。

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

 

分享到:
评论

相关推荐

    ros流控脚本

    可以通过在回调函数中添加控制逻辑来实现流控,例如,如果缓冲区已满,可以暂时停止接收新消息。 7. **Nodelets and Dynamic Reconfigure**: Nodelets可以提高效率,减少内存开销,而Dynamic Reconfigure则允许在...

    dimit分布式流控系统

    《Dimit分布式流控系统详解》 在当今的互联网时代,高并发、大数据量的业务场景日益常见,如何有效地管理和控制这些流量,防止系统过载,确保服务的稳定性和可用性,成为了一个至关重要的问题。Dimit分布式流控系统...

    通过流控机制看rabbimq的性能1

    在RabbitMQ中,流控实现于`credit_flow`模块。通过追踪`credit_flow:send/1`和`credit_flow:ack/1`这两个函数,可以揭示哪些进程在流控机制中以及它们的上下游关系。例如,`send`函数的参数是下游进程的PID,而`ack`...

    VC串口流控信号检测

    本文将详细探讨标题"VC串口流控信号检测"所涉及的知识点,以及如何在Visual Studio 2005环境下实现串口的流控信号设置和检测。 首先,串口通信的基本元素包括波特率、数据位、停止位、校验位等,而流控信号则为确保...

    FlowCtrl.zip

    总之,"FlowCtrl.zip" 提供了一个实用的流控实现,特别是令牌桶算法,可以帮助开发人员在项目中实施有效的流量控制,保障系统稳定性和可靠性。通过深入理解和正确应用这个库,可以显著提升项目面对高并发、突发流量...

    流控项目_流控_流控后台管理系统_源码

    流控项目是一个专注于流量控制与后台管理系统的源码实现,旨在提供一套完善的解决方案,帮助开发者或运维人员有效地管理和监控服务的流量,确保系统的稳定性和性能。在这个项目中,我们可以深入理解流量控制的关键...

    ros 单线多线流控脚本

    ROS提供了Nodelets和Dynamic Reconfiguration等工具来支持多线程和动态调整配置,从而实现更灵活的流控策略。Nodelets可以在多个线程中运行,减少数据拷贝,提高性能;Dynamic Reconfiguration则允许在运行时改变...

    Wince下串口类,流控信号检测

    这个主题涵盖了串口通信的基础知识、Windows API的使用以及流控机制的理解和实现,对于开发Wince环境下的嵌入式应用非常重要。通过使用如`CommDIwince`这样的库,开发者可以简化这部分工作,专注于应用程序的核心...

    基于介电微流控芯片的集成电化学传感器

    基于介电微流控芯片的集成电化学传感器

    很好的流控系统

    2. **策略设置**:用户可以设定各种访问策略,例如限制某些应用的带宽使用、设定优先级级别、限制特定时间段的网络使用等,以实现更有效的资源分配。 3. **带宽管理**:通过智能带宽控制,流控系统可以确保关键业务...

    网络流控管理系统

    网络流控管理系统是一种高效能的解决方案,用于管理和优化网络中的数据传输流量。它的重要性在于能够帮助网络管理员控制和分配带宽资源,确保网络性能的稳定和关键服务的优先级。在现代网络环境中,随着大数据、...

    支持流控的串口调试终端

    硬件流控通常采用RTS/CTS(Request To Send/Clear To Send)或DTR/DSR(Data Terminal Ready/Data Set Ready)信号线来实现。当发送端准备发送数据时,它会先检查接收端是否准备好接收(通过RTS或DTR信号),只有在...

    sentinel-global-flow全局流控管理

    2. **API 网关集成**:在微服务架构中,通常会在 API 网关层统一处理流量控制,因此需要在网关中集成 Sentinel,并与规则中心交互,实现动态获取和应用流控规则。 3. **客户端动态感知**:Sentinel 客户端需要支持...

    Wince下串口流控信号检测

    本文将深入探讨如何在Wince下进行串口流控信号的检测,并介绍一个强大的串口类库——CommDIwince。 串口通信是基于RS-232标准的电平信号,通常包括TTL或RS-485等不同类型的接口。在Wince系统中,串口通信主要涉及...

    串口流控信号检测

    通过研究和应用这个类库,开发者可以轻松地实现串口流控信号的检测和控制,从而确保串口通信的稳定性和可靠性。 总之,串口流控信号检测是串口通信中不可或缺的一部分,通过编程手段可以有效地管理和监控这些信号,...

    LINUX操作系统流控

    在Linux环境中,流控(Traffic Control)主要通过内核中的QoS(Quality of Service)机制实现,它允许系统管理员对数据包进行分类、标记、限速和排队,从而更好地控制网络资源的分配。 LARTC(Linux Advanced ...

    微流控芯片通用性微阀的设计实现与性能.pdf

    微流控芯片通用性微阀的设计实现与性能.pdf

    数字微流控系统动态模型研究

    数字微流控芯片不仅具有传统微流控芯片的试剂消耗量小、分析速度快、体积小、便于集成化优点,更具有可配置、可并行处理及易实现自动化的优势,其中介电润湿是数字微流控最重要和最有前景的驱动方式。首先介绍了数字微...

    H3C流控原理介绍ppt

    2. **深度包检测(DPI)**:分析数据包内容,识别应用类型,实现精细化的流量控制,如区分HTTP、FTP、SMTP等不同协议的流量。 3. **带宽预留**:为特定业务或用户预留固定带宽,确保其服务质量和响应速度。 4. **...

    fas_fas流控_fas一键脚本_fas自启脚本_fas免流脚本_fas搭建脚本_

    ** fas流控详解** FAS,全称Flow Admission Control(流量准入控制),是一种网络流量管理技术,主要用于控制网络中的数据传输速率,以防止拥塞并确保关键服务的稳定性。在IT行业中,FAS流控是网络管理员的重要工具...

Global site tag (gtag.js) - Google Analytics