Ribbon,Nginx,Feigin相关概述
Nginx
Nginx是个代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
Feigin
Feign默认集成了Ribbon,具有负载均衡的能力;整合了Hystrix,具有熔断的能力。 Feign基于动态代理模式,根据注解和通过Ribbon选择的机器,拼接请求URL地址,发起请 求。
Ribbon
Springcloud Ribbon是基于Netflix Ribbon实现的一套 客户端 负载均衡的工具
简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。
Ribbon和Nginx的区别
nginx是客户端,所有请求统一交给nginx,由nginx进行实现负载均衡请求转发,属于服务器端负载均衡。即请求由nginx服务器端进行转发。
Ribbon是从eureka注册中心服务器端上获取服务注册信息列表,缓存到本地,让后在本地实现rpc远程调用技术进行调用,轮训负载均衡策略。既在客户端实现负载均衡。
Ribbon和Feigin的区别
Ribbon需要自己构建http请求,模拟http请求然后使用 RestTemplate发送给其他服务,开发步骤繁琐。Feign则是在Ribbon的基础上进行了一次 改进,基于动态代理模式,将需要调用的其他服务的方法定义成抽象方法即可,不需要自己 构建http请求。