Ribbon和feign的区别

<<Spring Cloud与Docker微服务架构实战>>书中有下面两段描述:

  1. Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP客户端的行为。为Ribbon配置服务提供者地址列表后,Ribbon就可基于某种负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。在Spring Cloud中,当Ribbon与Eureka配合使用时,Ribbon可以自动从Eureka Server获取服务提供者地址列表,请求其中一个服务提供者实例。
  2. Feign是Netflix开发的声明式、模块化的HTTP客户端。Feign可以帮助我们更加便捷、优雅地调用HTTP API。在Spring Cloud中,使用Feign是非常简单的----创建一个接口,并在接口上添加一些注解,代码就完成了。同时Spring Cloud对Feign进行了增强,使Feign支持Spring MVC注解,并整合了Ribbon与Eureka,从而让Feign的使用更加方便。

其实对于程序员来讲还是代码来的更加实在一些,上段代码比较马上明白上述描述啥意思。

代码区别:
Ribbon写法:

@RestController
public class DeptController {

	@Autowired
	private RestTemplate restTemplate;

	@RequestMapping(value = "/consumer/dept/get/{id}")
	public Dept get(@PathVariable("id") Long id) {
		return restTemplate.getForObject("http://microservice-cousumer" + "/dept/get/" + id, Dept.class);
	}	

}

Feign写法:

@RestController
public class DeptController {

	@Autowired
	private DeptService deptService;

	@RequestMapping(value = "getById/{id}")
	public Dept get(@PathVariable("id") Long id) {
		return deptService.getById(id);
	}	

}

@FeignClient(value = "${microservice-cousumer}")
public interface DeptService {

	@GetMapping(value = "/consumer/dept/get/{id}")
	public Dept findById(@PathVariable("id") Long id);
	
}

通过代码对比其实可以更好的感觉到Feign书写要比Ribbon更加简洁,不需要知道知道具体使用注册列表服务名称,只需要注入类似DeptService服务提供接口。而且也不需要像Ribbon那样参数拼接,假如参数很多,拼接是很麻烦的。而且后期维护也会变得很麻烦。

哪里有不对的地方希望大家指出,共同学习一起进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值