1.前言

1.1调用服务的方式

Spring-Cloud调用服务有两种方式

  • Ribbon+RestTemplate
  • Feign

Ribbon是一个基于HTTP和TCP客户端的负载均衡器,feign默认集成了ribbon。
本文主介绍Ribbon方式消费者
相关依赖版本

  • spring-boot - 2.1.4.RELEASE
  • spring-cloud - Greenwich.SR1

2.Maven依赖

  <parent><artifactId>spring-could-example</artifactId><groupId>com.example</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>server-consum-ribbon</artifactId><description>服务消费者 以Ribbon 方式调用</description><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency></dependencies>

3.配置文件

server:port: 8703#应用名称
spring:application:name: server-consum-ribbon# 注册中心配置
eureka:client:serviceUrl:# 配置服务注册中心集群时,此处可以配置多个地址(通过逗号隔开)defaultZone: http://127.0.0.1:7001/eureka/

4.初始化Rest模板与启动类

/*** Ribbon 方式 服务消费者-实例** @author 程序员小强*/
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class RibbonApplication {public static void main(String[] args) {SpringApplication.run(RibbonApplication.class, args);}/*** 初始化 Rest模板 bean*/@Bean@LoadBalancedRestTemplate restTemplate() {return new RestTemplate();}}

5.Service-Api接口

创建测试类HelloService,通过restTemplate来消费生成者服务的“/hello”接口,
可以直接用服务名,替代了具体的url地址,Ribbon会根据服务名来选择具体的服务实例,根据服务实例在请求的时 候会用具体的url替换掉服务名。

@Service
public class HelloServiceApi {@Autowiredprivate RestTemplate restTemplate;public Map<String, Object> hello(String consumerApplicationName) {return restTemplate.getForObject("http://server-provider/hello?consumerApplicationName=" + consumerApplicationName, Map.class);}
}

注 : restTemplate.getForObject 中参数http://server-provider/hello就是请求地址。

6.Controller测试

在controller中用调用HelloService.hello方法

/*** 服务消费者-测试 controller** @author 程序员小强*/
@RestController
public class TestController {private static final Logger log = LoggerFactory.getLogger(TestController.class);@Value("${spring.application.name}")private String applicationName;@Autowiredprivate HelloServiceApi helloService;@RequestMapping("/hello")public Map<String, Object> hello() {log.info(" [ Ribbon 消费者 {} ]  >> hello method start ", applicationName);Map<String, Object> resultMap = helloService.hello(applicationName);log.info(" [ Ribbon 消费者 {} ]  >> hello method end , resultMap: {}", applicationName, resultMap);return resultMap;}
}

7.测试负载均衡

为了方便测试负载均衡,启动了两个生产者服务,端口分别是8701、9701
![image.png](https://img-blog.csdnimg.cn/img_convert/84e227af951e744ffc146b0bacaadbcf.png#align=left&display=inline&height=219&margin=[object Object]&name=image.png&originHeight=438&originWidth=2544&size=321206&status=done&style=none&width=1272)
架构图

请求测试
由上图可以看到,连续两次请求,分别路由到了不同的端口服务上。
这说明负载均衡生效了。

  • 当server-consum-ribbon 通过restTemplate调用server-provider的hello接口时.因为用ribbon进行了负载均衡,会轮流的调用service-hi:8762和8763 两个端口的hi接口;

7.源码地址

传送门

关注程序员小强公众号更多编程趣事,知识心得与您分享

[SpringCould篇]之服务消费方式Ribbon+RestTemplate相关推荐

  1. Spring Cloud Alibaba基础教程:几种服务消费方式(RestTemplate、WebClient、Feign)

    热门:Spring Cloud Greenwich.RELEASE 正式发布!一个非常有看头的版本! 通过<Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现&g ...

  2. Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate、WebClient、Feign)

    通过<Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现>一文的学习,我们已经学会如何使用Nacos来实现服务的注册与发现,同时也介绍如何通过LoadBal ...

  3. Nacos注册中心和服务消费方式

    哈喽朋友们本次小無分享Nacos注册中心和服务消费方式 前言:本期文章操作性不多,多在于详细的理论说明 还各位看官耐心看完 一,服务治理介绍 目录 一,服务治理介绍 二,nacos简介 nacos实战 ...

  4. Spring Cloud | 第二篇:服务消费者(Ribbon)

    本文的参考资料: spring cloud ribbon文档 方志明博客 Spring Cloud构建微服务架构(二)服务消费者 一.Ribbon简介 Ribbon是一个基于HTTP和TCP客户端的负 ...

  5. Spring Cloud构建微服务架构:服务消费(Ribbon)

    Spring Cloud Ribbon Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具.它是一个基于HTTP和TCP的客户端负载均衡器.它可以通 ...

  6. Spring Cloud构建微服务架构:服务消费(Ribbon)【Dalston版】

    Spring Cloud Ribbon Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具.它是一个基于HTTP和TCP的客户端负载均衡器.它可以通 ...

  7. Nacos注册中心和服务消费方式(服务治理)

    目录 一.服务治理介绍 什么是服务治理? 二.nacos简介 三.nacos实战入门 1.搭建nacos环境 2.将商品.订单.微服务注册到nacos 四.实现服务调用的负载均衡 1.什么是负载均衡 ...

  8. java版b2b2c社交电商spring cloud分布式微服务:服务消费(Ribbon)

    Spring Cloud Ribbon 电子商务社交平台源码请加企鹅求求:一零三八七七四六二六Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具.它 ...

  9. nacos实现服务注册与两种消费方式

    nacos实现服务注册与两种消费方式 运行nacos 服务注册实例 两种服务消费方式 RestTemplet Feign 测试 参考 运行nacos 预备环境:64位操作系统.64位JDK1.8+.M ...

最新文章

  1. oracle10g sql跟踪,SQL性能的度量 - 语句级别的SQL跟踪autotrace
  2. Boost--Graph
  3. DICOM医学图像处理:开源库mDCM与DCMTK的比较分析(一),JPEG无损压缩DCM图像(续)...
  4. 连接器篇(二) 高频系列
  5. java开发流程图_Java 详解 JVM 工作原理和流程
  6. iOS学习笔记之typedef
  7. 浅谈android4.0开发之GridLayout布局
  8. Z-Stack Home Developer's Guide—8. Additional Information for HA Applications中文翻译
  9. 我的博客学习记录一箩筐(每天更新)
  10. 快速创建精彩的Flash游戏 (二) Flash3D引擎简介
  11. 利用composer搭建PHP框架(四.数据库与缓存)
  12. php解析.krc,krc歌词文件解析
  13. 航拍南山区六个文化相关全景VR解读
  14. 前端面试必备知识点总结(持续更新)
  15. mysql ndb集群_mysql的ndb集群
  16. 大气颗粒物 PMF 源解析
  17. Optimistic Concurrency VS. Pessimistic Concurrency Control
  18. javaweb招聘管理系统的设计与实现
  19. jdk源码(jdk源码阅读顺序)
  20. 希尔伯特之梦,以及梦的破灭

热门文章

  1. uni-app仿饿了么点餐界面 左右菜单联动 滚动时商家信息、广告吸顶、弹窗下滑动关闭
  2. 前端加密 后端Java解密
  3. 通用计算机按其规模速度和功能,电脑基础知识详解
  4. android 11 antutu AID64 等检测软件电池容量不匹配
  5. 《ERP高级计划》书解读-APS案例分析之五时间点的计算(蔡颖)(转)
  6. 【题解】P2678 [NOIP2015 提高组] 跳石头
  7. 考拉海购成重构互联网版图的最大“变量”
  8. 无盘服务器接几根网线,设置无线路由器需要几根网线_安装路由器需要几根网线?-192路由网...
  9. 大学英语综合教程一 Unit 2 课文内容英译中 中英翻译
  10. 飞桨火力全开,重磅上线3D模型:PointNet++、PointRCNN!