`
hj111
  • 浏览: 2017 次
  • 性别: 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分布式流控系统...

    VC串口流控信号检测

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

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

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

    LTE系统中事件驱动M2M业务的流量控制随机接入协议

    提出了一种LTE系统中事件驱动M2M业务的流量控制随机接入协议。采用贝塔分布对事件驱动M2M业务建模,通过统计一段时隙内的随机接入前导码空闲比来估计信道流量,从而设计控制因子进行流量控制。建模分析了采用该协议...

    使用串口软流控的详细说明

    - **硬件流控**:利用物理信号线(如RTS/CTS、DTR/DSR)上的电平变化来实现流控。这种流控方式实时性较好,但需要硬件支持。 - **软件流控**:通过数据包中的特殊字符(如XON/XOFF)来实现流控。软件流控无需额外的...

    FlowCtrl.zip

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

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

    微流控芯片作为微流控技术的物理实现载体,成为研究的热点和难点。微流控芯片中的微阀是实现流体控制的核心部件,它的性能直接影响到整个芯片的可靠性、精确性和可用性。 为了满足微流控芯片在不同场合的应用需求,...

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

    微流控芯片能够模拟生化实验的环境,实现自动化、快速和微型化检测,进而推动了实验室自动化技术(Lab-on-a-Chip,LOC)的不断进步。 介电微流控芯片技术是微流控领域中一种重要的技术手段。其中,电润湿介电...

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

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

    H3C流控原理介绍ppt

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

    以太网流控机制及其基于VSC7323的实现

    VSC7323的流控实现通常涉及以太网MAC层以及与之相关的协议栈配置。通过编程设置这些硬件组件,网络设备可以在不损失性能的前提下,根据缓存状态发送流控信息给对方,进而协调双方的发送速率,确保数据传输的顺畅。 ...

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

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

    ros 单线多线流控脚本

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

    很好的流控系统

    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 客户端需要支持...

    串口流控 串口收发转换

    对于DB9接口,主要关注的是DTR、DSR、RTS和CTS这几个引脚,它们被用于实现流控机制。 #### 三、串口流控机制 流控机制是指在串行通信过程中为了防止数据丢失而采取的一种控制手段。流控主要有两种类型:硬件流控和...

Global site tag (gtag.js) - Google Analytics