最近公司有一个团队要搭建 bff 层,顺应了他们的要求,准备了一波分享。
具体从当前业务痛点、BFF 是什么、解决了什么问题、实现一个 BFF 要做哪些事情这几个方面去讲解。
项目演示: https://github.com/weiyuan0609/egg-server-template
wrk
ppt 中有提到 wrk 这个工具,这里做个具体的讲解
我用的是 mac, 所以下面都是基于此系统来讲解的
1. wrk 介绍
wrk 是一个用来做 HTTP benchmark 测试的工具。可以产生显著的压力。相比于 Apache ab 功能更为强大,可以使用 lua 脚本来支持更为复杂的测试场景,例如 POST 请求等。在对于 Restful 架构的 API 接口来说,测试起来更加便捷。
2. 下载 wrk
brew install wrk
- 如果这里卡住,可以调整
1 | # 替换brew.git: |
- 再执行一次 brew install wrk 即可
3. 使用方式
可以使用 wrk -help 查看
1 | 使用方法: wrk <选项> <被测HTTP服务的URL> |
4. 测试
1 | wrk -t8 -c500 -d2s --latency "http://localhost:8080/test" |
- 我这服务跑在本地 http://localhost://8080
- 采用 8 个线程,500个长链接,压测 2 秒
1 | Running 2s test @ http://localhost:8080/test |
- 可以看出 2s 内完成了 7920 个请求,2.02mb 的数据读取
- 当然你也可以用 lua 脚本个性化测试,这里不做过度的讲解,有兴趣可以去学习下
- wrk 使用方便,结果清晰。并且因为非阻塞 IO 的使用,可以在普通的测试机上创建出大量的连接,从而达到较好的压测效果。
- 同时又做过极限压测,出现了 OOM 的情况,记得 Node.js 版本还是 12.x 版本