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接口调用其他服务

经验分享 程序员 微信小程序 职场和发展