nginx和lvs都作为反向代理的代表,都有什么不同呢
nginx是基于第七层协议开发的,采用异步转发的原则,即在保持客户端链接的同时新起一个链接到负载均衡的服务端,等待服务端返回数据再返回给客户端。这么做有一个好处,nginx可以失败转移(failover),即如果和某个服务端的链接不通畅,可以换一个链接,可以服务的稳定性。
lvs是基于第四层协议开发的,采用同步转发的原则,即lvs监听到端口有链接时,会直接redirect到服务端,让服务端直接与客户端进行链接。这样做有一个弊端,就是一锤子买卖,如果请求失败了不会再做失败转移。
那么为什么有了nginx还有lvs
- 因为nginx这种转发模式注定所有流量都要打在nginx上,有带宽瓶颈。lvs实际上是不直接建立链接的。采用nginx和lvs混合使用可以高质量的服务更多的链接