springcloud系列文章的第二篇

本章介绍springcloud中的服务消费者

  springcloud服务调用方式有两种实现方式:

    1,restTemplate+ribbon,

    2,feign

 本来想一篇讲完,发现篇幅有点长,所以本章先讲 restTemplate+ribbon,

    ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。

    Feign默认集成了ribbon。

    

 项目实战:

新一个springboot项目,名字为 eureka-consumer-ribbon

其pom.xml配置如下

    <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

   在项目启动类Application上添加@EnableDiscoveryClient注解(上一章提到了@EnableDiscoveryClient和@EnableEurekaServer的区别)向服务中心注册服务,

并且使用@bean像spring容器中注入一个restTemplate对象,@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。

@EnableDiscoveryClient
@SpringBootApplication
public class Application { @Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
} public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}

在application.properties中指定,服务名:eureka-consumer-ribbon,端口为9101,服务注册中心地址为:http://localhost:9001/eureka/

spring.application.name=eureka-consumer-ribbon
server.port=9101
eureka.client.serviceUrl.defaultZone=http://localhost:9001/eureka/

新建一个RibbonController类,用来消费eureka-client的服务

@RestController
public class RibbonController {

  @Autowired
  RestTemplate restTemplate;

  @GetMapping("/consumer")
  public String getMsg() {

    return restTemplate.getForObject("http://eureka-client/client", String.class);
  }

}

这里的请求地址使用http://server-name,来代替http://ip:port,因为在ribbon中它会根据服务名来选择具体的服务实例,根据服务实例在请求的时候会用具体的url替换掉服务名,这里请求的是eureka-client/client

使用上一章已经创建的项目eureka-server,eureka-client这俩项目

首先:

      1,启动 eureka-server

    2,启动 eureka-client 配置文件的端口默认为9002

    3,修改配置文件的端口为9003,再启动一个eureka-client

    4,在启动 eureka-consumer-ribbon

访问http://localhost:9001/,就会发现,已经有eureka-clent服务注册了,而且有两个实例,9002和9003

   

      访问 http://localhost:9101/consumer,就会发现已经消费了 eureka-client项目提供的服务,而且ribbon已经默认实现了负载均衡

      

      


 
本文代码:
 
  码云:
 
  GitHub:

参考资料:

  感谢分享:

    翟永超:http://blog.didispace.com/spring-cloud-starter-dalston-1/

    方志鹏:http://blog.csdn.net/forezp/article/details/70148833#t0


欢迎关注本人公众号,扫码发现更多精彩内容

      本文为原创文章,欢迎转载,转载请注明作者

springcloud干货之服务消费者(ribbon)的更多相关文章

  1. 「 从0到1学习微服务SpringCloud 」04服务消费者Ribbon+RestTemplate

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...

  2. 「 从0到1学习微服务SpringCloud 」05服务消费者Fegin

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...

  3. springcloud干活之服务消费者(feign)

    springcloud系列文章的第三篇 本章将继续讲述springcloud的消费者(feign) Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端. ...

  4. 创建服务消费者(Ribbon)

    概述 在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于 http restful 的.Spring cloud 有两种服务调用方式,一种是 ribbon + restTempla ...

  5. SpringCloud-创建服务消费者-Ribbon方式(附代码下载)

    场景 SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  6. 7、服务发现&服务消费者Ribbon

    公众号: java乐园 在<服务注册&服务提供者>这一篇可能学习了这么开发一个服务提供者,在生成上服务提供者通常是部署在内网上,即是服务提供者所在的服务器是与互联网完全隔离的.这篇 ...

  7. springcloud干货之服务注册与发现(Eureka)

    springcloud系列文章的第一篇 springcloud服务注册与发现 使用Eureka实现服务治理 作用:实现服务治理(服务注册与发现) 简介: Spring Cloud Eureka是Spr ...

  8. Spring Cloud (3) 服务消费者-Ribbon

    在上一篇中使用LoadBalancerClient接口实现了获取某个服务的具体实例,并根据实例信息发起服务接口消费请求.但是这样的做法需要我们手工的区编写服务选取.连接拼接等繁琐的工作,对于开发人员来 ...

  9. SpringCloud学习系列之二 ----- 服务消费者(Feign)和负载均衡(Ribbon)使用详解

    前言 本篇主要介绍的是SpringCloud中的服务消费者(Feign)和负载均衡(Ribbon)功能的实现以及使用Feign结合Ribbon实现负载均衡. SpringCloud Feign Fei ...

随机推荐

  1. python3中的一些小改动

    Python 3.3中使用print是必须要括号因为在python3以上的版本中print不再是一条命令而是一个函数了.

  2. 201521123064 《Java程序设计》第13周学习总结

    本次作业参考文件 正则表达式参考资料 1. 本章学习总结 1.1 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. ① InetAddress(IP地址对应的类) InetAd ...

  3. 201521123044 《Java程序设计》第14周学习总结

    1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 友情提示:导图用ctrl+鼠标滚轮放大看更清楚些 2. 书面作业 1. MySQL数据库基本操作 建立数据库, ...

  4. 201521123110《Java程序设计》第12周学习总结

    1. 本周学习总结 2. 书面作业 1. 字符流与文本文件:使用 PrintWriter(写),BufferedReader(读) 1.1 生成的三个学生对象,使用PrintWriter的printl ...

  5. 201521123045 《JAVA程序设计》第1周学习总结

    1. 本周学习总结 学习了入门的java知识,知道了jdk.eclipse等基础软件,了解了如何编译最基础的java程序.知道了java的基本原理以及java的几种数据类型.掌握使用简单编译器编写ja ...

  6. php中获取当前系统时间、时间戳

    今天写下otime($time, $now)为将时间格式转为时间戳,$time为必填.清楚了这个,想了解更多,请继续往下看. 3. date($format)用法比如:echo date(‘Y-m-d ...

  7. Activiti第一篇【介绍、配置开发环境、快速入门】

    Activiti介绍 什么是Activiti? Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理.工作流.服务协作等领域的一个开 ...

  8. Intellij idea使用Junit

    之前使用idea做Junit测试的时候,都是一个一个方法来写,然后在方法名@Test这样测试-.. 后来发现eclipse有直接把整个类的方法都可以抽取出来,自动生成Junit测试方法-于是在找Ide ...

  9. Activiti-01

    1, Activiti官网:http://www.activiti.org/  主页可以看到jar包的下载. 2, 进入http://www.activiti.org/userguide/index. ...

  10. Saltstack批量编译部署nginx(多模块)

    最近一直在研究saltstack的同步文件和批量执行命令,随着架构的变大,批量部署的需求也变得明显起来了,我需要用一条命令就部署好nginx和tomcat,并且符合我所有的环境需求,可以直接投入生产环 ...