socket.io node.js 可以负载均衡吗
答案:2 悬赏:80
解决时间 2021-02-11 05:08
- 提问者网友:你在我眼中是最帅
- 2021-02-10 18:05
socket.io node.js 可以负载均衡吗
最佳答案
- 二级知识专家网友:我颠覆世界
- 2021-02-10 18:21
我们在用 Node.js 处理知乎主站的 web 实时推送。你现在看到的 Feed 、消息的实时更新,背后就是几个 node 进程扛起来的。
优点:
1. 处理高并发场景性能更高
在用 socket.io 之前,推送服务是用 ajax polling 做的。我们用 Tornado 和 Node.js 做过两个版本的推送服务。在当时的测试环境下,Node.js 的 CPU 时间是 Tornado 的三分之一,内存使用是 Tornado 的一半,代码行数只有 Tornado 的三分之一(Node.js 版是用 coffee 写的)。后来我们使用了 socket.io,CPU 开销进一步降低。
2. 函数式编程非常适合写异步回调链
用 Node.js 配合 CoffeeScript 写异步操作链非常便利,相比之下 Tornado 无论是写命名函数的回调,还是 yield 一个 Task 都没那么自然。
缺点:
1. 大量匿名函数使异常栈变得不好看。
2. 无法以 request 为单位 catch 异常,必须确保不要在不 catch 异常的第三方库的回调里的抛异常,这在一个异步操作链条里是一件比较麻烦的事。解决方法之一是对那些不 catch 异常的第三方库做一些封装,把所有的异常变成事件,改成 on('error') 形式的 API。
优点:
1. 处理高并发场景性能更高
在用 socket.io 之前,推送服务是用 ajax polling 做的。我们用 Tornado 和 Node.js 做过两个版本的推送服务。在当时的测试环境下,Node.js 的 CPU 时间是 Tornado 的三分之一,内存使用是 Tornado 的一半,代码行数只有 Tornado 的三分之一(Node.js 版是用 coffee 写的)。后来我们使用了 socket.io,CPU 开销进一步降低。
2. 函数式编程非常适合写异步回调链
用 Node.js 配合 CoffeeScript 写异步操作链非常便利,相比之下 Tornado 无论是写命名函数的回调,还是 yield 一个 Task 都没那么自然。
缺点:
1. 大量匿名函数使异常栈变得不好看。
2. 无法以 request 为单位 catch 异常,必须确保不要在不 catch 异常的第三方库的回调里的抛异常,这在一个异步操作链条里是一件比较麻烦的事。解决方法之一是对那些不 catch 异常的第三方库做一些封装,把所有的异常变成事件,改成 on('error') 形式的 API。
全部回答
- 1楼网友:我们只是兮以城空
- 2021-02-10 19:33
我们在用 node.js 处理知乎主站的 web 实时推送。你现在看到的 feed 、消息的实时更新,背后就是几个 node 进程扛起来的。 优点: 1. 处理高并发场景性能更高 在用 socket.io 之前,推送服务是用 ajax polling 做的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯