Skip to content

面试速答(先看这里)

**一句话结论:**当我们在在对比Ribbon(包括loadbalancer)和Nginx的时候,主要对比的是他们的负载均衡方面的区别。

60秒标准回答:

当我们在在对比Ribbon(包括loadbalancer)和Nginx的时候,主要对比的是他们的负载均衡方面的区别

这两者最主要的区别是Nginx是一种服务端负载均衡的解决方案,而Ribbon是一种客户端负载均衡的解决方案

服务端负载均衡指的是将负载均衡的逻辑集成到服务提供端,通过在服务端对请求进行转发,实现负载均衡

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**这两者最主要的区别是Nginx是一种服务端负载均衡的解决方案,而Ribbon是一种客户端负载均衡的解决方案。
  • **要点2:**服务端负载均衡指的是将负载均衡的逻辑集成到服务提供端,通过在服务端对请求进行转发,实现负载均衡。
  • **要点3:**所以Nginx还是一个反向代理服务器,因为他做的是服务端负载均衡。
  • **要点4:**客户端负载均衡指的是将负载均衡的逻辑集成到服务消费端的代码中,在客户端直接选择需要调用的服务提供端,并发起请求。
  • **要点5:**Nginx是需要单独部署一个Nginx服务的,这样他才能做好服务端负载均衡,而Ribbon是需要在服务消费端的机器代码中引入,和应用部署在一起,这样他才能实现客户端的负载均衡。

**记忆锚点:**Nginx → Ribbon → loadbalancer → 还是一个反向代理

追问准备:

  • 围绕「Nginx」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「Ribbon」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「loadbalancer」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

当我们在在对比Ribbon(包括loadbalancer)和Nginx的时候,主要对比的是他们的负载均衡方面的区别。

这两者最主要的区别是Nginx是一种服务端负载均衡的解决方案,而Ribbon是一种客户端负载均衡的解决方案。

服务端负载均衡指的是将负载均衡的逻辑集成到服务提供端,通过在服务端对请求进行转发,实现负载均衡。

所以Nginx还是一个反向代理服务器,因为他做的是服务端负载均衡。

image.png

客户端负载均衡指的是将负载均衡的逻辑集成到服务消费端的代码中,在客户端直接选择需要调用的服务提供端,并发起请求。这样的好处是可以在客户端直接实现负载均衡、容错等功能,不需要依赖其他组件,使得客户端具有更高的灵活性和可控性。

image.png

Nginx是需要单独部署一个Nginx服务的,这样他才能做好服务端负载均衡,而Ribbon是需要在服务消费端的机器代码中引入,和应用部署在一起,这样他才能实现客户端的负载均衡。