首页互联网技术j***a互联网技术架构

j***a互联网技术架构

cysgjjcysgjj时间2024-09-25 08:28:59分类互联网技术浏览32
导读:Java互联网架构-如何设计服务接口API限流功能?Java互联网架构-如何设计服务接口API限流功能?限流目的是对系统进行保护。当访问量激增,超过系统可以承受的流量,则需要把超出的流量挡住,不进行业务逻辑直接返回。采用压测方法。对某个接口进行压测,逐步调高并发量和持续时间,达到系统瓶颈时(错误率高,响应时间长)记录下并发量,这个值就……...
  1. Java互联网架构-如何设计服务接口API限流功能?

java互联网架构-如何设计服务接口API限流功能

限流目的是对系统进行保护。当访问量激增,超过系统可以承受的流量,则需要把超出的流量挡住,不进行业逻辑直接返回。

***用压测方法。对某个接口进行压测,逐步调高并发量和持续时间,达到系统瓶颈时(错误率高,响应时间长)记录下并发量,这个就是当前系统流量上限。

从系统维度来看可以分为单机限流和集群限流两种方式

java互联网技术架构
图片来源网络,侵删)

单机限流是对每一台机器限流,***设每台机器限流100QPS,集群有10台机器,那么整个集群有1000QPS能力。可以使用Gu***a RateLimiter、Java并发包Semaphore实现单机限流。

集群限流是对整个集群进行限流,比如预估整个集群能力有1000QPS,还有一种场景是限次,比如整个集群只能调用第三方接口多少次。可以使用Redis实现全局限流。

限流常用方法有以下三种:

java互联网技术架构
(图片来源网络,侵删)

维护一个计数器,这个计数器有一个时间窗口,在当前时间窗口,每当一个新请求到来时,计数器自增,当计数器自增达到设置的上限时,不再提供服务。滑动到下一个时间窗口时,计数器重置。这种方法的特点简单但是在时间窗口临界点,可能会出现超出流量的问题

漏桶算法强制一个常量的输出速率而不管输入数据流的突发性。当输入空闲时,该算法不执行任何动作,就像用一个底部开了个洞的漏桶接水一样,水进入到漏桶里,桶里的水通过下面的孔以固定的速率流出。当水流入速度过大会直接溢出。

java互联网技术架构
(图片来源网络,侵删)

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.wnpsw.com/post/19745.html

集群计数器时间
科技创新类企业名单公示 互联网技术展会2019年