springcloud全家桶之feign

本文探讨了Feign和Ribbon在微服务架构中的负载均衡应用,详细介绍了Feign如何简化WebService客户端编程,以及其面向接口的编程方式。通过实例展示了如何在微服务环境中配置Feign,并对比了其与Ribbon的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ribbon负载均衡,feign负载均衡,但是一个汽车不能有两个方向盘。feign声明了一个web service客户端,它是web service编程更加简单,使用feign需要创建一个接口并且对它进行注释。

之前大家用ribbon进行负载均衡,功能很强大,甚至可以自己自定义算法,feign是怎么粗来的?1.大部分的大家都可以介绍,直接调用我们的微服务来进行访问,private static final String REST_URL_PREFIX = "http://MICROSERVICECLOUD-DEPT";是面向微服务的,2.大家目前都习惯面向接口编程,比如webservice接口,比如我们的dao接口,这个已经是大家的规范 2.1微服务名字获得调用地址  2.2就是通过接口+注解,获得我们的调用服务。适应社区其他程序员提出的,还是统一的面向接口编程套路。--feign

在80工程基础上新建sonsumer-feign工程,复制com包下的所用东西删除myrule,复制yml,pom依赖,修改启动类名称,feign中pom添加

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>

api工程pom添加,

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>

api工程新建接口,

package com.atguigu.springcloud.service;

import java.util.List;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.atguigu.springcloud.entities.Dept;

@FeignClient(value = "MICROSERVICECLOUD-DEPT")
public interface DeptClientService
{
	@RequestMapping(value = "/dept/get/{id}", method = RequestMethod.GET)
	public Dept get(@PathVariable("id") long id);

	@RequestMapping(value = "/dept/list", method = RequestMethod.GET)
	public List<Dept> list();

	@RequestMapping(value = "/dept/add", method = RequestMethod.POST)
	public boolean add(Dept dept);
}

里边的方法和微服务service里的接口一样,feign也是面向客户端的负载均衡,所以要参照80工程构建,api是公共引用部分,编辑完后maven clean ,maven install保证最新,之前面向微服务名称使用restTemplate,现在修改controller使用上边新建的feign接口,

package com.atguigu.springcloud.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import com.atguigu.springcloud.entities.Dept;
import com.atguigu.springcloud.service.DeptClientService;

@RestController
public class DeptController_Consumer
{
	@Autowired
	private DeptClientService service;

	@RequestMapping(value = "/consumer/dept/get/{id}")
	public Dept get(@PathVariable("id") Long id)
	{
		return this.service.get(id);
	}

	@RequestMapping(value = "/consumer/dept/list")
	public List<Dept> list()
	{
		return this.service.list();
	}

	@RequestMapping(value = "/consumer/dept/add")
	public Object add(Dept dept)
	{
		return this.service.add(dept);
	}
}

feign工程启动类添加注解

启动7001,7002,7003三个eureka,8001,8002,8003三个微服务测试,启动feign工程,

默认轮询负载均衡算法,测试成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值