什么是SpringCloudRibbonRibbon?(SpringCloudNetflix)-->大量使用Netflix的开源项目(SpringCloudAlibaba)-->大量使用阿里巴巴的开源项目SpringCloudRibbon是一套基于NetflixRibbon的客户端负载均衡器;我们通常所说的负载均衡是指将一个请求平均分配给不同的节点单元执行。负载均衡分为硬件负载均衡和软件负载均衡:硬件负载均衡:如F5、深信服、Array等;软件负载均衡:如Nginx、LVS、HAProxy等;(由服务器实现)Ribbon是Netflix发布的一个开源项目(组件、框架、jar包),主要功能是为客户端提供一个软件负载均衡算法,客户端会从eureka获取可用服务器列表,并通过心跳检测排除故障服务器节点,确保列表中的所有服务器节点都能正常访问。当客户端发出请求时,RibbonLoadBalancer根据一定的算法(如轮询、权重、最小连接数等)从维护的可用服务器列表中取出一台服务器的地址,然后进行要求;Ribbon非常简单,可以说是一个jar包。这个jar包实现了负载均衡算法。SpringCloud对Ribbon进行了两次封装,让我们可以使用RestTemplate服务请求自动转换为客户端负载均衡服务调用。Ribbon支持多种负载均衡算法,也支持自定义负载均衡算法。客户端负载均衡vs服务端负载均衡使用Ribbon实现服务调用1.首先添加ribbon依赖,但是eureka已经依赖了ribbon,所以这里不需要引用ribbon依赖;2、使用ribbon只需要一个注解:@Bean@LoadBalancedpublicRestTemplaterestTemplate(){RestTemlaterestTemplate=newRestTemplate();returnrestTemplate;}给RestTemplate加上@LoadBalanced注解,这样RestTemplate在调用的时候可以自动负载均衡;我们现在已经启动了eureka集群(3个eureka)和servicesProvider集群(2个service-goods)和一个服务调用者(service-portal)#告诉服务器,服务实例的唯一IDDeureka.instance.instance-id=34-springGCloud-service-portalRibbon负载均衡策略Ribbon负载均衡策略由IRule接口定义,实现如下:jar包中:com.netflix.ribbon#ribbon-loadbalancer;使用ribbon实现负载均衡,在Spring配置类中实现相应的负载均衡接口,配置为Bean即可;负载均衡入口:ILoadBalancer接口如果要切换负载均衡策略:@BeanpublicIRuleiRule(){returnnewRoundRobinRule();}如果我们不指定负载均衡策略,ribbon默认的负载均衡是ZoneAvoidanceRule;(newVersion,G版)什么是SpringCloudFeignFeign?Feign是Netflix开发的声明式REST调用客户端;(调用远程restful风格http接口的组件)其实调用组件有很多,比如:1.Httpclient(apache)2、Httpurlconnection(jdk)3、restTemplate(spring)4、OkHttp(android)5、Feign(Netflix)-->实现非常优雅的SpringCloudFeign对Ribbon负载均衡进行了简化,进一步封装,在配置方面大大简化了开发工作。它是一种声明式调用方法。它的使用方法是定义一个接口,然后在接口上添加注解,支持SpringMVC标准注解和HttpMessageConverters。Feign可以结合Eureka和Ribbon使用,支持负载均衡Feign能做什么?Feign旨在简化微服务消费者(调用者、客户端)代码的开发。在使用Ribbon+RestTemplate进行服务调用时,使用RestTemplate封装http请求,形成一套模板化的Call方法,但是在实际开发中,由于服务提供者提供的接口很多,一个接口也可能在多个地方被调用.Feign在Ribbon+RestTemplate的基础上做了进一步的封装。Feign封装后,我们只需要创建接口并使用注解配置即可完成与服务提供者的接口绑定,使用Ribbon+RestTemplate简化调用,自动封装服务调用客户端,减少代码开发量;使用Feign实现消费者使用将Feign实现为消费者,我们通过以下步骤进行:第一步:创建一个普通的SpringBoot工程,将接口放置在通用接口层、常量类、模型工程中第二步:添加依赖需要添加的依赖主要是spring-cloud-starter-netflix-eureka-client和spring-cloud-starter-feign,如下:
