十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章给大家介绍Spring Cloud中怎么使用Feign实现负载均衡,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
目前创新互联已为上千多家的企业提供了网站建设、域名、网页空间、网站运营、企业网站设计、阿克陶网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
Feign is a declarative web service client. It makes writing web service clients easier. To use Feign create an interface and annotate it. It has pluggable annotation support including Feign annotations and JAX-RS annotations. Feign also supports pluggable encoders and decoders. Spring Cloud adds support for Spring MVC annotations and for using the same HttpMessageConverters used by default in Spring Web. Spring Cloud integrates Ribbon and Eureka to provide a load balanced http client when using Feign.
Feign是一个声明式的web服务客户端,它使得写web客户端变得更简单。想要使用Feign,只需要创建一个接口并注解它。Feign具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign还支持可插拔的编码器和解码器。Spring Cloud添加了对Spring MVC注释的支持,并默认使用和Spring Web相同的HttpMessageConverters。当使用Feign时,Spring Cloud集成了Ribbon和Eureka以提供负载平衡的http客户端。
简而言之:
Feign 采用的是基于接口的注解
Feign 集成了ribbon,具有负载均衡的能力
集成了Hystrix,具有熔断的能力
继续在第一节项目的基础上,启动eureka-server,端口为9090;启动两个eureka-client, 端口为8040、8041。
使用Spring Initializr
新建一个项目,取名为feign-service
, 在Spring Cloud Discovery中勾选Eureka Discovery Client,在Spring Cloud Routing中勾选OpenFeign,在Web中勾选Spring Web:
创建成功后,项目pom.xml如下:
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.9.RELEASE com.noodles.mars feign-service 0.0.1-SNAPSHOT feign-service Feign Service 1.8 Greenwich.SR3 org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.cloud spring-cloud-starter-openfeign org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin
feign-service配置服务中心地址、应用名、端口,配置文件内容:
server: port: 8080 eureka: client: service-url: defaultZone: http://localhost:9090/eureka/ spring: application: name: feign-client
在项目启动类上注解@EnableDiscoveryClient, 开启向服务中心注册;注解@EnableFeignClients开启Feign功能:
@SpringBootApplication @EnableEurekaClient @EnableFeignClients public class FeignServiceApplication { public static void main(String[] args) { SpringApplication.run(FeignServiceApplication.class, args); } }
定义一个feign接口,通过@FeignClient("服务应用名")
,来指定调用哪个服务。比如在代码中调用了hello-erueka-client
服务的/hello
接口,代码如下:
@FeignClient(value = "hello-eureka-client") public interface FeignService { @GetMapping(value = "/hello") String hello(@RequestParam(value = "name") String name); }
定义一个Controller,对外提供一个"/hello"的Rest API接口, 通过上面定义的Feign来调用服务提供者:
@RestController public class FeignController { private final FeignService feignService; @Autowired public FeignController(FeignService feignService) { this.feignService = feignService; } @GetMapping(value = "/hello") public String hello(@RequestParam("name") String name) { return feignService.hello(name); } }
在浏览器上多次访问 http://localhost:8080/hello?name=Mars :
Hello, My name is Mars, I'm from port: 8040 Hello, My name is Mars, I'm from port: 8041
关于Spring Cloud中怎么使用Feign实现负载均衡就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。