springcloud微服务ribbon与feign的区别
ribbon
ribbon是一种基于http和tcp客户端的负载均衡器
feign
feign是一种使用起来更简单的http客户端,ribbon和feign都支持软负载均衡
注意:spring-cloud-starter-feign 里面已经包含了 spring-cloud-starter-ribbon(Feign 中也使用了 Ribbon)
ribbon和feign都是用来调用其他服务的,不过方式不一样
1,启动类使用的注解不一样,ribbon使用@RibbonClient, feign使用@EnableFeignClient
2, 服务的指定位置不同,ribbon是在@RibbonClient注解上声明,feign是在定义抽象方法的接口上加@FeignClient注解
3,调用方式不同,ribbon需要自己构建http请求,模拟http请求使用RestTemplate发送给其他服务,步骤繁琐,feign是在ribbpon上做了改进,使用接口的方式,将需要调用的其他服务的方法定义成抽象方法,不需要构建http请求。注意:抽象方法的注解要和服务提供方保持一致
在微服务中,服务与服务之间的调用,是采用http restful方式,springcloud的微服务调用有两种方式,1,ribbon+restTemplate 2,feign
创建服务消费者
@LoadBalanced注解表明restTemplate开启负载均衡
通过restTemplate接口调用其他服务