Any.Run使用Meteor.js的成功经验
本文摘译自How Any.Run Became the Most Popular Malware Sandbox in the World using Meteor.js
Any.Run 是首个提供实时交互式并自定义流程的网络安全检测分析服务,其基于 Meteor.js 构建。
目前有 2 百万公开任务,每个任务有许多恶意软件样本感染指标。
解决 Meteor 的扩展和高负荷
nginx 负载均衡 + pm2 + 多个 meteor 实例 这个没什么问题
后来发现 mongo oplog 性能上不去,导致 CPU 一直 100%. 解决方案是使用 redis-oplog 其原理是禁用 mongo-oplog 而使用 redis 的 pub/sub 特性(redis 支持百万级的是没问题的)。通过修改了 Mongo.Collection 的 insert/update/remove 方法监听数据改动通过 redis 分发消息。 实践证明性能大幅提高,cpu 再没超过 20%。
参见Events for Meteor (+ Redis Oplog, Grapher and GraphQL/Apollo)
依然存在的问题 - websocket 安全
websocket 缺少安全保护,DDP limiter 的限制有限,目前 Galaxy Hosting 将会提供 App Protection 特性。