深度思维者

永远年轻,永远热泪盈眶

上一页 1 2 3 4 5 6 7 8 ··· 14 下一页
摘要: 1. 限流对比 类型 实现 优点 缺点 单机限流 令牌桶 1. 稳定可靠,实现简单,性能高2. 支持突发流量应对 1. 流量不均匀会导致误限制2. 阈值设置较为困难,需要提前压测 漏桶 1. 稳定可靠,实现简单,性能高 1. 流量不均匀会导致误限制2. 阈值设置较为困难,需要提前压测3.不支持突发流 阅读全文
posted @ 2021-09-10 07:58 failymao 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 无论是令牌桶, 漏桶 还是 自适应限流的方法,总的来说都是服务端的单机限流方式。虽然服务端限流虽然可以帮助我们抗住一定的压力,但是拒绝请求毕竟还是有成本的。如果我们的本来流量可以支撑 1w rps,加了限流可以支撑在 10w rps 的情况下仍然可以提供 1w rps 的有效请求,但是流 阅读全文
posted @ 2021-09-09 00:10 failymao 阅读(731) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 令牌桶与 漏桶 两种算法最大的一个问题就是他们都属于需要提前设置阈值的算法,基于 QPS 进行限流的时候最麻烦的就是这个阈值应该怎么设定。一般来说我们可以通过压测来决定这个阈值。但是也会存在问题 如果每个系统上线前都要经过很严格的压测,那么成本相对来说会比较大 很多时候压测都会在测试环境 阅读全文
posted @ 2021-09-06 07:56 failymao 阅读(790) 评论(0) 推荐(0) 编辑
摘要: 1.序 除开前面章节讲到的令牌桶算法实现的网络限流外, 还有另外一种常见的限流算法, 漏桶算法 2. 漏桶算法 漏桶算法(Leaky Bucket) 是网络世界中 流量整形(Traffic Shaping)或速率限制(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络 阅读全文
posted @ 2021-09-05 00:23 failymao 阅读(1384) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 在上一篇文章 Go微服务: 令牌桶 当中简单的介绍了令牌桶实现的原理,然后利用 /x/time/rate 这个库 10 行代码写了一个基于 ip 的 gin 限流中间件,那这个功能是怎么实现的呢?接下来我们就从源码层面来了解一下这个库的实现。这个实现很有意思,并没有真正的使用一个定时器不 阅读全文
posted @ 2021-09-03 07:32 failymao 阅读(813) 评论(0) 推荐(0) 编辑
摘要: 1. 令牌桶 1.1 原理 我们以 r/s 的速度向桶内放置令牌,桶的容量为 b , 如果桶满了令牌将会丢弃 当请求到达时,我们向桶内获取令牌,如果令牌足够,我们就通过转发请求 如果桶内的令牌数量不够,那么这个请求会被缓存等待令牌足够时转发,或者是被直接丢弃掉 由于桶的存在,所以令牌桶算法不仅可以限 阅读全文
posted @ 2021-09-01 07:57 failymao 阅读(1048) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 隔离设计源于船舶行业,一般而言无论大船还是小船,都会有一些隔板,将船分为不同的空间,这样如果有船舱漏水一般只会影响这一小块空间,不至于把整个船都给搞沉了。 同样我们的软件服务也是一个道理,我们要尽量避免出现一个问题就把这个业务给搞挂的情况出现 那什么是「服务隔离」呢? 顾名思义,它是指将 阅读全文
posted @ 2021-08-30 23:29 failymao 阅读(970) 评论(1) 推荐(0) 编辑
摘要: 1.前言 前面的章节讲述了项目结构, 依赖注入,API设计,包管理,单元测试。。。基本上还是将工程化当中的大部分东西都讲到了。 结合前面文章中提到的各种知识来看一下如何将一个老的项目迁移到新的项目结构当中来,这里面的坑也非常的多。 2. 重构前 2.1 目录结构 你的目录结构可能是这样的。 ├── 阅读全文
posted @ 2021-08-25 23:36 failymao 阅读(727) 评论(3) 推荐(0) 编辑
摘要: 1. 前言 很多人都提到过测试的重要性,而在所有的测试类型当中,以单元测试为代表的单元测试无疑是成本最小,性价比最高的一种,而且有的公司为了保证质量会要求单元测试覆盖率的指标 那么对于Go程序而言,项目结构上进行单元测试的编写,如何可以做到又快又好? 2. 单元测试简明教程 2.1 go test 阅读全文
posted @ 2021-08-20 22:15 failymao 阅读(634) 评论(0) 推荐(0) 编辑
摘要: 1. panic 在什么情况下使用panic? 在程序启动的时候,如果有强依赖的服务出现故障时panic退出 在程序启动的时候,如果发现有配置明显不符合要求,可以panic退出(预防编程) 其他情况下只要不是不可恢复的程序错误,都不应该直接panic,应该返回error 在程序入口处,例如gin中间 阅读全文
posted @ 2021-08-08 23:51 failymao 阅读(600) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 14 下一页