Spring Cloud Eureka 入门 (三)服务消费者详解
2017-10-24 16:52
1156 查看
本文提纲
1. springcloud-eureka-sample 工程介绍
2. 运行 springcloud-eureka-client-customer 服务消费者工程
3. 详解 springcloud-eureka-client-customer 服务消费者工程
一、springcloud-eureka-sample 工程介绍
还是回到Eureka 集群简单架构图:
第一小节《Spring Cloud Eureka 入门 (一)服务注册中心详解》实现了 Eureka Server 作为注册中心,
第二小节《Spring Cloud Eureka 入门 (二)服务提供者详解》是 Provider Service B 的案例,实现了 Eureka Cleint 作为服务提供者,包括其服务的注册和心跳的功能。
本小节,是 Provider Service A 的案例,实现了 Eureka Cleint 作为服务消费者,包括其服务的注册和心跳的功能,还有其服务发现和通过 Ribbon 进行服务调用的功能。
springcloud-eureka-client-customer 服务消费者工程,他本身也是一个服务提供者。即具有服务提供功能和服务消费功能。下面去运行该工程
二、运行 springcloud-eureka-client-customer 服务消费者工程
运行环境:JDK 7 或 8,Maven 3.0+
技术栈:Spring Cloud Dalston.SR1、 spring-cloud-netflix 1.3.1、Spring Boot 1.5.4
自然,我们先得去上一小节《Spring Cloud Eureka 入门 (一)服务注册中心详解》 ,把注册中心工程启动完毕。
1. git clone 下载工程 springcloud-learning-example
项目地址见 GitHub - https://github.com/JeffLi1993/springcloud-learning-example:
2. Maven 编译安装这个工程:
3. 运行 Eureka 工程 springcloud-eureka-client-customer
启动 springcloud-eureka-client-customer 工程启动类 CustomerApplication,启动服务注册中心工程。
EurekaServerApplication 类路径:/springcloud-learning-example/springcloud-eureka-sample/springcloud-eureka-client-customer/src/main/java/org/spring/springcloud/CustomerApplication.java
控制台 Console 看到这类信息,代表启动成功:
可以看出,注册了应用名为 CUSTOMER-SERVICE 的应用,该服务提供者的工程端口为 8081
4. 访问 Eureka 注册中心可视化界面
打开浏览器,访问 http://localhost:8888/ ,如图所示:
可以看到,服务提供者向服务注册中心注册自己的实例,展示了应用名和端口信息等。
5.访问服务消费者案例
打开浏览器,访问 http://localhost:8081/customer,如图所示:
可以看出,下面一句消息 Hello,Provider! ,是服务消费者调用服务提供者获取的信息。
三、详解 springcloud-eureka-client-customer 服务消费者工程
1.springcloud-eureka-client-customer 工程目录结构
ProviderApplication.java Eureka Discovery Client 启动类,启动服务消费者工程,本身也会注册到注册中心,也能发现其他服务。
CustomerController.java 服务消费者 HelloWorld 案例
application.yml 配置文件
2. pom.xml 配置
使用的依赖是
- spring-cloud-netflix 1.3.1 是 Spring Cloud Dalston.SR1 版本。
- spring-cloud-starter-eureka Eureka Client 模块依赖,包含了客户端 client 的依赖,还有 Ribbon 的依赖,如:org.springframework.cloud:spring-cloud-netflix-eureka-client:1.3.1.RELEASE
org.springframework.cloud:spring-cloud-starter-ribbon:1.3.1.RELEASE
3. application.yml 配置
4.服务消费者应用启动类
@EnableDiscoveryClient 标志该应用作为 Eureka Client ,并会自动化读取 Eureka 相关配置。还有向服务注册中心发现服务并进行调用。
@LoadBalanced 标志着 RestTemplate 是通过 Ribbon 客户端负载均衡去调用服务提供者集群的。即可以在获取的服务提供者实例列表中,通过 Ribbon 进行选择某实例,然后调用该服务实例。
6.服务消费者 Hello World 案例
可以看到注入了 RestTemplate 对象,它是 HTTP 访问操作类。
然后 customer 方法,通过 restTemplate 通过 HTTP 协议调用服务提供者暴露的 provider 接口,并获取服务提供者的结果。然后组装输出。
四、小结
此小章节介绍了如何 Eureka 作为服务消费者,并向服务注册中心注册自己实例,更重要的是发现其他服务,并调用其他服务。
1. springcloud-eureka-sample 工程介绍
2. 运行 springcloud-eureka-client-customer 服务消费者工程
3. 详解 springcloud-eureka-client-customer 服务消费者工程
一、springcloud-eureka-sample 工程介绍
还是回到Eureka 集群简单架构图:
第一小节《Spring Cloud Eureka 入门 (一)服务注册中心详解》实现了 Eureka Server 作为注册中心,
第二小节《Spring Cloud Eureka 入门 (二)服务提供者详解》是 Provider Service B 的案例,实现了 Eureka Cleint 作为服务提供者,包括其服务的注册和心跳的功能。
本小节,是 Provider Service A 的案例,实现了 Eureka Cleint 作为服务消费者,包括其服务的注册和心跳的功能,还有其服务发现和通过 Ribbon 进行服务调用的功能。
springcloud-eureka-client-customer 服务消费者工程,他本身也是一个服务提供者。即具有服务提供功能和服务消费功能。下面去运行该工程
二、运行 springcloud-eureka-client-customer 服务消费者工程
运行环境:JDK 7 或 8,Maven 3.0+
技术栈:Spring Cloud Dalston.SR1、 spring-cloud-netflix 1.3.1、Spring Boot 1.5.4
自然,我们先得去上一小节《Spring Cloud Eureka 入门 (一)服务注册中心详解》 ,把注册中心工程启动完毕。
1. git clone 下载工程 springcloud-learning-example
项目地址见 GitHub - https://github.com/JeffLi1993/springcloud-learning-example:
git clone https://github.com/JeffLi1993/ ... e.git[/code]
2. Maven 编译安装这个工程:
cd springcloud-learning-example mvn clean install[/code]
3. 运行 Eureka 工程 springcloud-eureka-client-customer
启动 springcloud-eureka-client-customer 工程启动类 CustomerApplication,启动服务注册中心工程。
EurekaServerApplication 类路径:/springcloud-learning-example/springcloud-eureka-sample/springcloud-eureka-client-customer/src/main/java/org/spring/springcloud/CustomerApplication.java
控制台 Console 看到这类信息,代表启动成功:
2017-07-12 18:19:21.725 INFO 11314 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_CUSTOMER-SERVICE/10.18.29.64:customer-service:8081: registering service... 2017-07-12 18:19:21.814 INFO 11314 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_CUSTOMER-SERVICE/10.18.29.64:customer-service:8081 - registration status: 204 2017-07-12 18:19:21.916 INFO 11314 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8081 (http) 2017-07-12 18:19:21.918 INFO 11314 --- [ main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8081 2017-07-12 18:19:21.925 INFO 11314 --- [ main] o.s.springcloud.CustomerApplication : Started CustomerApplication in 17.075 seconds (JVM running for 18.141)[/code]
可以看出,注册了应用名为 CUSTOMER-SERVICE 的应用,该服务提供者的工程端口为 8081
4. 访问 Eureka 注册中心可视化界面
打开浏览器,访问 http://localhost:8888/ ,如图所示:
可以看到,服务提供者向服务注册中心注册自己的实例,展示了应用名和端口信息等。
5.访问服务消费者案例
打开浏览器,访问 http://localhost:8081/customer,如图所示:
可以看出,下面一句消息 Hello,Provider! ,是服务消费者调用服务提供者获取的信息。
三、详解 springcloud-eureka-client-customer 服务消费者工程
1.springcloud-eureka-client-customer 工程目录结构
├── pom.xml └── src └── main ├── java │ └── org │ └── spring │ ├── springcloud │ │ └── CustomerApplication.java │ └── web │ └── CustomerController.java └── resources └── application.yml[/code]
ProviderApplication.java Eureka Discovery Client 启动类,启动服务消费者工程,本身也会注册到注册中心,也能发现其他服务。
CustomerController.java 服务消费者 HelloWorld 案例
application.yml 配置文件
2. pom.xml 配置
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ma ... gt%3B <modelVersion>4.0.0</modelVersion> <groupId>springcloud</groupId> <artifactId>springcloud-eureka-client-customer</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springcloud-eureka-client-customer :: 服务消费者</name> <!-- Spring Boot 启动父依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version> </parent> <dependencies> <!-- Spring Cloud Netflix Eureka 依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <!-- Spring Boot Test 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <!-- Spring Cloud Netflix 依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-netflix</artifactId> <version>1.3.1.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>[/code]
使用的依赖是
- spring-cloud-netflix 1.3.1 是 Spring Cloud Dalston.SR1 版本。
- spring-cloud-starter-eureka Eureka Client 模块依赖,包含了客户端 client 的依赖,还有 Ribbon 的依赖,如:org.springframework.cloud:spring-cloud-netflix-eureka-client:1.3.1.RELEASE
org.springframework.cloud:spring-cloud-starter-ribbon:1.3.1.RELEASE
3. application.yml 配置
server: port: 8081 # 服务端口 eureka: client: service-url: defaultZone: http://localhost:8888/eureka/ # 服务注册中心地址 spring: application: name: customer-service # 服务名称 - server.port 设置工程服务端口 - eureka.client.service-url.defaultZone 设置服务注册中心地址[/code]
4.服务消费者应用启动类
/** * Spring Boot Eureka Server 应用启动类 * * Created by bysocket on 21/06/17. */ @EnableDiscoveryClient // Eureka Discovery Client 标识 @SpringBootApplication // Spring Boot 应用标识 public class CustomerApplication { @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String args) { // 程序启动入口 // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件 SpringApplication.run(CustomerApplication.class,args); } }[/code]
@EnableDiscoveryClient 标志该应用作为 Eureka Client ,并会自动化读取 Eureka 相关配置。还有向服务注册中心发现服务并进行调用。
@LoadBalanced 标志着 RestTemplate 是通过 Ribbon 客户端负载均衡去调用服务提供者集群的。即可以在获取的服务提供者实例列表中,通过 Ribbon 进行选择某实例,然后调用该服务实例。
6.服务消费者 Hello World 案例
/** * Customer HelloWorld 案例 * <p> * Created by bysocket on 06/22/17. */ @RestController public class CustomerController { private static final Logger LOGGER = LoggerFactory.getLogger(CustomerController.class); @Autowired private RestTemplate restTemplate; // HTTP 访问操作类 @RequestMapping("/customer") public String customer() { String providerMsg = restTemplate.getForEntity("http://PROVIDER-SERVICE/provider", String.class).getBody(); return "Hello,Customer! msg from provider : <br/><br/> " + providerMsg; } }[/code]
可以看到注入了 RestTemplate 对象,它是 HTTP 访问操作类。
然后 customer 方法,通过 restTemplate 通过 HTTP 协议调用服务提供者暴露的 provider 接口,并获取服务提供者的结果。然后组装输出。
四、小结
此小章节介绍了如何 Eureka 作为服务消费者,并向服务注册中心注册自己实例,更重要的是发现其他服务,并调用其他服务。
相关文章推荐
- Spring Cloud Eureka 入门 (三)服务消费者详解
- Spring Cloud Eureka 入门 (三)服务消费者详解
- Spring Cloud Eureka 入门 (三)服务消费者详解
- Spring Cloud Eureka 入门 (一)服务注册中心详解
- Spring Cloud Eureka 入门 (一)服务注册中心详解
- Spring Cloud Eureka 入门 (一)服务注册中心详解 「Spring Cloud Eureka 入门系列」 Spring Cloud Eureka 入门 (一)服务注册中心详解 Spr
- SpringCloud入门教学|第一篇:服务的注册和发现(Eureka)
- spring-cloud入门(一):eureka-server(服务发现)
- Spring Cloud(四)服务提供者 Eureka + 服务消费者 Feign
- spring cloud快速入门教程(二)服务注册中心Eureka
- spring cloud中微服务之间的调用以及eureka的自我保护机制详解
- SpringCloud构建微服务入门架构(二)服务注册与发现Eureka集群搭建
- Spring Cloud(三)服务提供者 Eureka + 服务消费者(rest + Ribbon)
- Spring Cloud(四)服务提供者 Eureka + 服务消费者 Feign
- Spring Cloud 入门教程 - Eureka服务注册与发现
- Spring Cloud Eureka 全解 (4) - 核心流程-服务与实例列表获取详解
- spring-cloud入门之eureka-client(服务注册)
- spring cloud eureka 消费者使用服务名访问,不能访问的问题
- Spring Cloud 入门教程 - Eureka服务注册与发现
- Spring Cloud Eureka 全解 (3) - 核心流程-服务注册与取消详解