@
thewei 我试着回答一下。
除了开发者体验(DX, Developer Experience), Meteor 的技术优势在于实时同步数据,它在浏览器与服务器之间建立一个可长时间保持连接状态的管道,数据可来去自如,并且在浏览器里创建一个迷你数据库,便于存储、提取、对比数据。再来看事物的反面,由于允许浏览器长时间保持连接,用户的每次操作都有可能发送到服务器进行验证,如果操作是合法的,那么由该操作影响到的数据会相应的发送到其他用户的浏览器中,这一过程需要服务器进行对比计算,以保证将正确的数据发送给正确的用户。正面是技术优势,反面是资源消耗。
不过这里面有很多优化的路子,比如在数据库端建立 Index ,比如用 Kadira 监视性能、分析原因,比如进行分布式托管,比如干脆在没必要的时候关掉实时连接特性(Oplog Tailing),转为间隔式获取数据(polling)。
面向未来, Meteor 团队的新项目 Apollo 正是从数据层提供解决方案,官方声称支持 "multiple DBs, scalable from day 1, built for Microservices"。
再回到现在,如果你已经有了一个 Meteor 项目,完全可以试着放到 Galaxy 上,它就是一个分布式托管的云平台。花钱把 DevOps 的那份操心给省了,还是值得的。
我重新读了一遍,好像并没有直接回答你的提问,很抱歉,因为情况确实复杂。
附上一些资料,有兴趣可以看看:
0.
https://paper.dropbox.com/doc/Blog-post-Tuning-Meteor-Mongo-Livedata-for-Scalability-SrfsTDmq9W65AAW8WD36H1.
https://meteorhacks.com/does-meteor-scale.html2.
https://kadira.io/academy/meteor-performance-101/content/make-your-app-faster3.
https://www.discovermeteor.com/blog/scaling-meteor-the-challenges-of-realtime-apps/4.
https://www.quora.com/Is-Meteor-faster-than-Node-js5.
https://news.ycombinator.com/item?id=9231200