文章目录
- 什么是Ribbon?
- Ribbon的作用?
- 什么是Feign?
- Feign的作用?
什么是Ribbon?
Spring Cloud Ribbon 是基于Netflix Ribbon实现的一套客户端负载均衡的工具.
Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起,Ribbon的客户端组件提供一系列完整的配置项,如:连接超时、重试等等。
就是是说,在配置文件中列出LoadBalancer(LB:负载均衡)后面所有的机器,Ribbon会自动帮助我们基于某种规则(如简单轮询、随机连接等)去连接这些机器,我们可以使用Ribbon实现自定义的负载均衡算法。
Ribbon的作用?
1.进行负载均衡(LB),负载均衡简单来说就是将用户的请求平摊到多个服务上,从而达到HA(高可用)。
常见的负载均衡的软件有Nginx,Lvs等。
dubbo、SpringCloud中都提供了负载均衡,SpringCloud的负载均衡算法可以自定义。
负载均衡可以分为:
(1)集中式LB
在服务的消费方和提供方之间使用独立的LB设备,如Nginx(反向代理服务器),由该设备把请求通过某种策略转发给服务的提供方。
(2)进程式LB
将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选出一个合适的服务器。
Ribbon属于进程内LB,它是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址
什么是Feign?
feign是声明式 web service客户端,它让微服务之间的调用变得更简单了,类似于controller调用service.
SpringCloud集成了Ribbon和Eureka,可在使用Feign时提供负载均衡的Http客户端.
Feign的作用?
1.使编写Java Http客户端变得更加容易
2.前面在使用Ribbon+RestTemplate时,利用RestTemplate对Http请求的封装处理,形成了一套模板化的调用方法。在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常会针对每个微服务自行封装一些客户端类来包装这些这些依赖服务的调用。
Feign在此基础上做了进一步封装,在Feign的实现下,我们只需要创建一个接口并使用注解的方式来配置它(类似于dao接口上标注Mapper注解,现在是一个微服务上标注一个Feign注解)。
这样就完成对服务提供方的接口绑定,简化了使用SpringCloud Ribbon时,自动封装服务调用客户端的开发量。