2016 - 2024

感恩一路有你

api设计方法 http的api接口需要设计哪些东西?

浏览量:1130 时间:2023-07-08 07:27:56 作者:采采

http的api接口需要设计哪些东西?

协议主要注意是http,特别是作为的接口,而联合的接口又是bug重灾区,因为比较好有用。

但以后也不先排除可能会直接出现比如说websocket等协议,甚至连很多内部可以使用的协议都是变更土地性质自己定义的,却没名字

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

1限流目的限流管理目的是对系统接受保护。当访问量猛增,达到系统可以不能够承受的流量,则要把远远超过的流量挡住,不通过业务逻辑直接回。

2数据估算系统流量上限常规压测方法。对某个接口通过压测,逐渐调高并发量和持续时间,提升到系统瓶颈时(错误率高,更快的响应时间长)资料记录下并发量,这个值应该是当前系统流量上限。

3临时限流方案3.1系统维度从系统维度来看是可以分成三类单机限流管理和集群临时限流两种。

单机人员限流是对每一台机器限流控制,假设每台机器人员限流100QPS,集群有10台机器,这样整个集群有1000QPS能力。可以不可以使用GuavaRateLimiter、Java并发包Semaphore利用单机限流。

集群限流控制是对整个集群进行人员限流,比如数据估算整个集群能力有1000QPS,也有一种场景是限次,比如整个集群没法内部函数第三方接口多少次。也可以建议使用Redis利用全局限流。

3.2方法维度限流控制正确方法有200元以内三种:

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

漏桶算法漏桶算法强制一个常量的输出速率而不论输入输入数据流的突然性。当键入空闲时,该算法不想执行任何动作,竟像用一个底部开了个洞的漏桶接水一般,水刚刚进入到漏桶里,桶里的水实际下面的孔以单独计算的速率黑色的血。当水淌入速度过大会就逸出。

令牌桶算法我我推荐这种方法。一个容量固定设置的桶,以一个恒定的速率有一种令牌,如果桶内的令牌满了则无用的令牌会被丢弃。不知为什么各位冲进来时,先去桶内拿一个令牌,桶内的令牌拿完了,则前提是耐心的等待桶内有一种令牌才能允许后续的请求(或者直接断然拒绝)。的原因桶内也可以堆积起来一定的令牌(就像为桶容量),所以我令牌桶算法优点是可以不允许一定会量的流量高峰。

Guava可以提供了限流工具RateLimiter实现令牌桶能完成临时限流。也也可以通过编写Lua脚本通过Redis实现程序全局令牌桶。

流量 系统 算法 方法 令牌

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。