为什么会出现Feign?负载均衡之前不是有Ribbon了吗?

我们之前实现的负载均衡是使用的Ribbon+RestTemplate,在controller中使用RestTemplate根据url去访问服务提供者,而通常我们是在controller中调用我们声明好的service实例去调用我们的逻辑,这样就不符合我们平时面向编程的规范了,所以feign的出现就是解决这个规范问题的。

我们还是基于之前的项目,新建名称为eureka-server-consumer-feign的module,在pom.xml加上feign,ribbon和eureka的依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-feign</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-ribbon</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

新建service包,在里面新建ITestService接口,加上@FeignClient注解。其中name属性为该service是调用哪一组服务提供者的。

@FeignClient(name = "EUREKA-SERVER-PROVIDER")
public interface ITestService {@RequestMapping("/provider/test")String test();
}

controller中引入ITestService:

@RestController
public class ConsumerController {@Autowiredprivate ITestService iTestService;@RequestMapping("/consumer/test3")public String test3(){return iTestService.test();}}

启动类,加上@EnableFeignClients注解,@EnableEurekaClient注解,@EnableDiscoveryClient注解:

@SpringBootApplication
@EnableFeignClients
@EnableEurekaClient
@EnableDiscoveryClient
public class EurekaServerConsumerFeignApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerConsumerFeignApplication.class, args);}}

配置文件application.yml:

server:port: 80eureka:client:register-with-eureka: falseservice-url:defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/

启动Eureka集群7001,7002和7003,服务提供者8001,8002和8003,以及我们上面的消费者feign

结果发现,利用feign也成功实现了负载均衡,其实feign中就是集成了Ribbon的特性。

Idea搭建SpringCloud(四)------利用Feign实现负载均衡相关推荐

  1. SpringCloud集群的搭建,分布式的实现,负载均衡的几种方式,路由,页面监听

    SpringCloud 服务注册与发现--Netflix Eureka 负载均衡: 客户端负载均衡--Netflix Ribbon 服务端负载均衡:--Feign(其也是依赖于Ribbon,只是将调用 ...

  2. 虚拟机 搭建LVS + DR + keepalived 高可用负载均衡

    一:环境说明:    LVS-DR-Master:    10.3.0.82    LVS-DR-Backup:    10.3.0.70    VIP:                10.3.0. ...

  3. springcloud 实现反向代理和负载均衡

    springcloud 实现反向代理和负载均衡 1. 搭建注册中心,路由服务zuul,两个服务端 参考我的上一篇博客 springcloud项目搭建 注意两个服务端服务名称要相同,端口不能相同配置如下 ...

  4. SpringCloud(三)之Feign实现负载均衡的使用

    一 点睛 Feign是Netflix开发的声明式.模板化的HTTP客户端, Feign可以帮助我们更快捷.优雅地调用HTTP API. 在Spring Cloud中,使用Feign非常简单--创建一个 ...

  5. SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用、Ribbon 负载均衡、自定义 Ribbon 配置、禁用 Eureka 实现 Ribbon 调用)...

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:Ribbon 负载均衡 2.具体内容 现在所有的服务已经通过了 Eureka 进行了注册,那么使用 Eureka 注册 ...

  6. 利用Nginx实现负载均衡(反向代理)完全详解

    1.常见负载均衡的方式(概念普及) [1]用户手动选择 例如我们玩游戏,服务器会显示当前服务器的状态是拥挤.繁忙.还是空闲,然后用户根据自己实际需要,选择自己想去的服务器. 如果服务器人太多(达到上限 ...

  7. springCloud学习笔记系列(1)-负载均衡Ribbon

    2019独角兽企业重金招聘Python工程师标准>>> Ribbon是一个客户端IPC库,在云中经过实战测试.它提供以下功能 负载均衡 容错 异步和反应模型中的多协议(HTTP,TC ...

  8. JavaEE进阶知识学习-----SpringCloud(六)Ribbon负载均衡

    Ribbon负载均衡 Ribbon概述 Spring Cloude Ribbon是基于Netfilx Ribbon实现的一套客户端 负载均衡的工具,简单说,Ribbon是Netfilix发布的开源项目 ...

  9. 利用Nginx做负载均衡

    最近正在研究Nginx,Nginx作为反向代理服务器,可以对Web服务器提供加速,并且具有负载均衡的功能. 首先我要在官网下载Nginx(http://nginx.org/en/download.ht ...

  10. SpringCloud源码:Ribbon负载均衡分析

    本文主要分析 SpringCloud 中 Ribbon 负载均衡流程和原理. SpringCloud版本为:Edgware.RELEASE. 一.时序图 和以前一样,先把图贴出来,直观一点: 二.源码 ...

最新文章

  1. mysql表情符号变为_mysql Emoji表情字符集转换
  2. VC2010 编译问题
  3. docker privileged 权限 参数
  4. Spring Profiles example--转载
  5. .NET代码编写规范 整理
  6. 算法的封装与切换——策略模式
  7. C# -- 文件的压缩与解压(GZipStream)
  8. .NET平台4.0 发布网站流程及出错总结
  9. LeetCode-978:最长湍流子数组
  10. Jquery.Validation表单验证
  11. jsf tree组件_JSF表单组件示例教程
  12. qt设置窗口不在任务栏上显示
  13. 蓝桥杯 大整数乘法 试题 算法训练 P0805
  14. angularjs 笔记(1) -- 引导
  15. bbsmax 2.0 的前世今生,这几年喳喳鸟都在做什么?
  16. 【游戏开发实战】Unity 2D游戏手指控制移动摄像机镜头和双指缩放镜头(愤怒的小鸟为例)
  17. OS20190301
  18. 最好的嵌入式开发板是哪个?
  19. Docker迁移JIRA
  20. Esp8266 nodemcu 使用PubSubClient连接阿里云物联网平台

热门文章

  1. c语言在线读程序,用C语言编写简单程序.doc
  2. 决定论的科学家认为,自我是大脑的随附现象,自由意志是一种幻觉
  3. Cannot open D:\Program Files\Anaconda\Scripts\pip3-script.py
  4. Android studio 报错 Unknown host 'jcenter.bintray.com'
  5. HashMap中,比较key是否相等为什么要重写equal() 和hashCode()这两个方法?
  6. 罗马仕php30重量,认真测评 篇三:罗马仕sence8P+两年使用报告
  7. 好用的小工具系列之---lombok--扔掉傻瓜式书写,精简你的代码,节约你的时间
  8. Dialogue and Conversational Agents
  9. Java 重载和重写
  10. top conference in AI