内容简介:在上一个篇幅中,介绍了Spring Cloud Eureka服务的使用。本文将介绍如何如何使用Eureka Client来注册服务,并如何使用OpenFeigh来调用对应的注册服务。Eureka Client简单来说,就是一个提供服务,并注册到Cureka Server仓库上的一个组件。创建Eureka Client,需要做如下准备工作:
一·概述
在上一个篇幅中,介绍了Spring Cloud Eureka服务的使用。本文将介绍如何如何使用Eureka Client来注册服务,并如何使用OpenFeigh来调用对应的注册服务。
二·Eureka Client
Eureka Client简单来说,就是一个提供服务,并注册到Cureka Server仓库上的一个组件。
2.1 快速使用
创建Eureka Client,需要做如下准备工作:
spring-cloud-starter-netflix-eureka-client @EnableEurekaClient
简单地HTTP REST服务的配置文件实例如下:
<?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/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.netease.nis.cloud</groupId> <artifactId>consumer-client</artifactId> <version>0.0.1-SNAPSHOT</version> <name>consumer-client</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
比如,我们在一台机器上启动三个Eureka Client实例,分别绑定8881,8882,8883三个不同的端口,启动后这三个实例都会注册到Eureka Server上,那么application.yml的配置信息如下:
spring: application: name: spring-cloud-eureka-client eureka: client: serviceUrl: defaultZone: http://netease-dev.com:9801/eureka/,http://netease-dev.com:9802/eureka/,http://netease-dev.com:9803/eureka/ --- spring: profiles: client1 server: port: 8881 --- spring: profiles: client2 server: port: 8882 --- spring: profiles: client3 server: port: 8883 eureka: instance: hostname: peer3.com ---
然后,我们就分别启动三个不同端口上的实例:
java -jar eureka-client-0.0.1-SNAPSHOT.jar --spring.profiles.active=client1 java -jar eureka-client-0.0.1-SNAPSHOT.jar --spring.profiles.active=client2 java -jar eureka-client-0.0.1-SNAPSHOT.jar --spring.profiles.active=client3
从下图中,我们就可以看出已经注册了三个实例了。
三·OpenFeigh
OpenFeigh是一个注解声明式的web服务客户端,它使得调动注册REST服务更加方便。我们通过简单地在接口类上注解就可以轻松达到远程调用的目的,而且它还支持自定义的解码和编码器。
实际上,OpenFeigh本身也集成了Ribbon和Eureka,具有负载均衡的效果。
3.1 快速使用
使用OpenFeigh,需要做如下的准备工作:
spring-cloud-starter-openfeign @EnableFeignClients @FeignClient
以下是一个配置OpenFeign的简单依赖配置:
<?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/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.netease.nis.cloud</groupId> <artifactId>comsumer-client</artifactId> <version>0.0.1-SNAPSHOT</version> <name>comsumer-client</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
接下来配置一下程序的参数(application.yml),其实大部分参数和Client区别不大:
eureka: client: registerWithEureka: false # fetchRegistry: false serviceUrl: defaultZone: http://netease-dev.com:9801/eureka/,http://netease-dev.com:9802/eureka/,http://netease-dev.com:9803/eureka/ server: port: 9000 spring: application: name: consumer-feign-client
为了调用之前写的注册微服务,我们需要编写一个接口,并添加注解,如下所示:
// GreetingClient.java @FeignClient("spring-cloud-eureka-client") public interface GreetingClient { @RequestMapping("/hello") String hello(); @RequestMapping("/good") String good(); }
以上定义了2个接口,调用的注册服务名为spring-cloud-eureka-client,内部声明了两个接口,分别调用/hello和/good。然后我们在Controller中就可以使用了,如下:
@SpringBootApplication @EnableFeignClients @RestController public class ComsumerClientApplication { @Autowired private GreetingClient greetingClient; public static void main(String[] args) { SpringApplication.run(ComsumerClientApplication.class, args); } @RequestMapping("/hello2") public String hello2() { String text = String.format("enhanced - %s", greetingClient.hello()); System.out.println(text); return text; } @RequestMapping("/good2") public String good2() { String text = String.format("enhanced - %s", greetingClient.good()); System.out.println(text); return text; } }
配置比较简单,我们用浏览器打开:
多刷新几次,然后可以看下日志,三个实例都有被调用,策略就是轮训的方式,达到负载的效果。
3.2 断路器Hystrix
OpenFeigh 是支持断路器的,只需要确保Hystrix添加进来,并打开开关 feign.hystrix.enabled=true
即可。断路器的更多内容可以参考以下官网链接:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Unity版本使用情况统计
- Unity版本使用情况统计
- Selenium使用总结(Java版本)
- RxJava源码分析及版本对比(一)——1.x版本基本使用分析
- 使用 GVM 工具管理 Go 版本
- 使用React构建精简版本掘金(五)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Pro Django
Marty Alchin / Apress / 2008-11-24 / USD 49.99
Django is the leading Python web application development framework. Learn how to leverage the Django web framework to its full potential in this advanced tutorial and reference. Endorsed by Django, Pr......一起来看看 《Pro Django》 这本书的介绍吧!