正反向代理
-
正向代理:
客户端A知道服务端B的地址,但是A没办法直接和B通信,需要引入一个中间代理C协助通信。A—》C----》B -
反向代理:(Nginx
客户端A不知道服务端B的地址,只是将请求发送给服务器C,C将请求转发出去。主要区别:A是否知道自己想通信的服务端是谁
服务端/客户端负载
- 服务端负载
客户端A直接将请求发给服务端C,服务端C根据负载算法选择调用哪个服务B(系统直接将客户端所有的请求统一交给nginx)
常见:Nignx - 客户端负载
客户端A内部集成一个负载中间件,通过内置的负载均衡器选择调用哪一个下游服务B
常见负载中间件:ribbon、springcloudloadbalancer - 对比
nginx性能好,但是ribbon可以剔除不健康的节点,并且可以配合熔断器一起工作。
Nginx适合于服务器端实现负载均衡比如 Tomcat ,Ribbon适合与在微服务中RPC远程调用实现本地服务负载均衡,比如 Dubbo、SpringCloud 中都是采用本地负载均衡。
四层/七层负载
所谓的分层负载是指依据哪一层的信息进行负载。
- 从一到七层依次:
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层 - 四层负载(传输层):
基于IP+端口号的负载 - 七层负载(应用层):
基于URL等应用层信息的负载
Ribbon是基于 HTTP 和 TCP 客户端负载均衡器
参考文章:
https://blog.youkuaiyun.com/qq_50685659/article/details/126347190