二.Go微服务--令牌桶

1. 令牌桶1.1 原理 我们以 r/s 的速度向桶内放置令牌,桶的容量为 b , 如果桶满了令牌将会丢弃当请求到达时,我们向桶内获取令牌,如果令牌足够,我们就通过转发请求如果桶内的令牌数量不够,那么这个请求会被缓存等待令牌足够时转发,或者是被直接丢弃掉 由于桶的存在,所以令牌桶算法不仅可以限流还可以应对突发流量的情况举个例子:假设我们桶的容量是 100,速度是 10 rps,那么在我们桶满的情况下...

一. Go微服务--隔离设计

1. 前言隔离设计源于船舶行业,一般而言无论大船还是小船,都会有一些隔板,将船分为不同的空间,这样如果有船舱漏水一般只会影响这一小块空间,不至于把整个船都给搞沉了。同样我们的软件服务也是一个道理,我们要尽量避免出现一个问题就把这个业务给搞挂的情况出现那什么是「服务隔离」呢?顾名思义,它是指将系统按照一定的原则划分为若干个服务模块,各个模块之间相对独立,无强依赖。当有故障发生时,能将问题和影响隔离在某...

三.Go微服务--令牌桶实现原理

1. 前言在上一篇文章 Go微服务: 令牌桶 当中简单的介绍了令牌桶实现的原理,然后利用 /x/time/rate 这个库 10 行代码写了一个基于 ip 的 gin 限流中间件,那这个功能是怎么实现的呢?接下来我们就从源码层面来了解一下这个库的实现。这个实现很有意思,并没有真正的使用一个定时器不断的生成令牌,而是靠计算的方式来完成2.rate/limt在golang.org/x/time/rate库...
© 2021 LMLPHP 关于我们 联系我们 友情链接 耗时0.006901(s)
2021-09-24 08:30:48 1632443448