背景引出
线上网站遭受攻击,首页被强刷,导致服务器node性能过载,影响用户正常页面访问。
大致架构:客户端发起请求 --> node(充当中间件,访问后端API渲染页面) --> java(处理业务逻辑)--> database
现象&问题
现象
疑惑
Nodejs cup 满负载
与Nodejs高性能不符?
后端 Java 的负载和Node相反
怎么性能会优于Nodejs?
node和java来个简单测试(偏娱乐向)
前期测试准备
分别用以下方式模拟一个线上获取用户信息的接口:
node直连mysql
node调用java接口来获取数据。
框架:koa+koa-router+sequelize+request+pm2
备注:由于不太清楚后端业务数据取值逻辑,尽可能还原response data,会存在一定的数据包偏差。
简要代码
router.all('/api/java', async function(ctx, next) {
let uid = ctx.cookies.get('uid');
// request代理给后端java API接口
ctx.body = await new Http({ctx}).request({
url: '/user/getbalance'
})
})
router.all('/api/n