我假设您不需要 nginx 来服务器静态资产,否则 LVS 将不是一个选项。
1) nginx 仅支持 TCP 通过 3rd 方模块https://github.com/yaoweibin/nginx_tcp_proxy_module 如果你不需要网络服务器,我会说 LVS 更合适,但请参阅我在#末尾的附加评论会回答。
2)LVS支持优先级,nginx不支持。
3)可能是LVS:nginx是用户态,LVS内核。
4)谎言,该死的谎言和基准。您必须在设备上模拟负载,编写节点客户端脚本并完善您的设置。
我们正在考虑将所有节点从前到后进行https://github.com/LearnBoost/up 尚未投入生产,但我们正在追求这条路线,原因如下:
1)我们也有优先级要求,但它们是自定义的并且是动态变化的。我们正在运行时调整优先级,我们用了不到一个小时的时间来对节点进行编程。
2)我们部署了大量的代码更新,up 允许我们在不中断现有客户端的情况下完成它。因为您可以对其进行编码以做任何您想做的事情,所以我们可以启动全新的流程来处理新的连接,并在现有的连接全部消失时让旧的流程消失。
3)我们可以看到一切,因为我们将任何我们想看到的指标推送到 redis 服务器中。
我确信它不是每个进程/服务器性能最高的,但是拥有如此多的程序控制的优势是值得的,并且横向扩展具有更多冗余的优势,因此我们不会考虑挤出最后一点性能堆栈。
我只是快速检查一下是否可以复制/粘贴一堆代码,但我们正在快速对其进行编码,并且它有很多不适合公众消费的东西的引用。