前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud教程-05:负载均衡(Feign)

SpringCloud教程-05:负载均衡(Feign)

作者头像
IT云清
发布2019-05-15 14:17:38
6740
发布2019-05-15 14:17:38
举报
文章被收录于专栏:IT云清

SpringCloud教程-03:负载均衡(Ribbon)一文中,我们介绍了如何使用Ribbon来实现客户端的负载均衡,在使用Ribbon时,一般会用RestTemplate来实现对远程服务的调用,但是这依旧不够简洁,每次在使用RestTemplate去远程调用时,还是得写一些模板化的东西。Spring Cloud Feign,在此基础上做了更进一步的封装,我们只需要创建一个接口,并使用注解的方式配置一下,就可以完成对服务提供方的绑定和调用。

本文介绍如何使用Feign实现客户端的负载均衡,主要分为以下几个步骤:

1.创建项目

新建一个Springboot项目feign_server1。

2.引入依赖

  • <!--eureka-client--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!--feign--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId>     </dependency>
代码语言:javascript
复制
代码语言:javascript
复制
  <dependencyManagement>	
    <dependencies>	
      <dependency>	
        <groupId>org.springframework.cloud</groupId>	
        <artifactId>spring-cloud-dependencies</artifactId>	
        <version>Finchley.SR2</version>	
        <type>pom</type>	
        <scope>import</scope>	
      </dependency>	
    </dependencies>	
  </dependencyManagement>

3.修改配置文件

代码语言:javascript
复制
server:	
  port: 8015	
spring:	
  application:	
    name: feign-server1	
eureka:	
  client:	
    service-url:	
      default: http://localhost:8761/eureka/	
feign:	
  hystrix:	
    enabled: true

4.添加启动注解

启动类添加@EnableFeignClients,开启Feign的负载均衡功能

代码语言:javascript
复制
//开启Feign的负载均衡功能	
@EnableFeignClients	
@EnableEurekaClient	
@SpringBootApplication	
public class FeignServer1Application {	
	
  public static void main(String[] args) {	
    SpringApplication.run(FeignServer1Application.class, args);	
  }	
}

5.跨服务调用

写个简单的接口方法来调用。

5.1controller

代码语言:javascript
复制
@RestController	
//@RequestMapping(value = "feign")	
public class FeignController {	
	
  //编译报错,可以不用管,程序启动时才会注入此bean	
  @Autowired	
  FeignService feignService;	
	
  @GetMapping("getCompany")	
  public String getCompany(String id){	
    String company = feignService.getCompany(id);	
    System.out.println(company);	
    return company;	
  }	
}

5.2service

通过@FeignClient来指定我们调用哪个服务,前面启动了两个服务,都为company-server,feign会通过服务名来调用服务。

代码语言:javascript
复制
//通过此注解,来指定调用哪个服务	
@FeignClient(value = "company-server")	
public interface FeignService {	
	
  /**调用company-server服务中的company/get接口*/	
  @GetMapping(value = "/company/get")	
  String getCompany(@RequestParam(value = "id")String id);	
}

6.启动项目,测试

启动项目,然后访问接口http://localhost:8015/getCompany?id=36,可以看到服务会自动负载到两台服务上。

640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年05月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档