SpringCloud服务注册与发现Eureka
Eureka是Spring Cloud Netflix微服务套件中的一部分,可以与Springboot构建的微服务很容易的整合起来。
Eureka包含了服务器端和客户端组件。服务器端,也被称作是服务注册中心,用于提供服务的注册与发现。Eureka支持高可用的配置,当集群中有分片出现故障时,Eureka就会转入自动保护模式,它允许分片故障期间继续提供服务的发现和注册,当故障分片恢复正常时,集群中其他分片会把他们的状态再次同步回来。
客户端组件包含服务消费者与服务生产者。在应用程序运行时,Eureka客户端向注册中心注册自身提供的服务并周期性的发送心跳来更新它的服务租约。同时也可以从服务端查询当前注册的服务信息并把他们缓存到本地并周期性的刷新服务状态
1、搭建空的maven工程,以后把其它模块都放入下面
创建完成后界面如下:
可以删除src目录,因为这个工程只是为了放置springcloud的其它模块。
2、搭建服务注册中心服务注册中心 (eureka-server)
Eureka Server是基于springboot的,只要启动一个springboot就可以了。start.spring.io提供了一系列启动模板。创建module,选择Spring initializer.:
设置artifactId值为eureka-server
加入Eureka Server组件
创建完成后目录如下
自动生成的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/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xuan</groupId> <artifactId>eureka-server</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>eureka-server</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> </properties> <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-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>
修改启动类EurekaServerApplication.java,添加@EnableEurekaServer
package com.xuan.eurekaserver; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @EnableEurekaServer @SpringBootApplication public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
在默认情况下,服务注册中心也会把自己当做是一个服务,将自己注册进服务注册中心,所以我们可以通过配置来禁用他的客户端注册行为,修改application.properties文件
spring.application.name=eureka-server #服务注册中心端口号 server.port=8080 #服务注册中心实例的主机名 eureka.instance.hostname=localhost #是否向服务注册中心注册自己 eureka.client.register-with-eureka=false #是否检索服务 eureka.client.fetch-registry=false #服务注册中心的配置内容,指定服务注册中心的位置 eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
启动应用,并访问http://localhost:8080/即可看到Eureka信息面板,如下:
从上图看到,在"Instances currently registered with Eureka"信息中,没有一个实例,说明目前还没有服务注册。接下来创建一个服务提供者eureka-client进行注册测试。
创建并注册服务提供者 Eureka Client
创建方式如eureka-server模块类似;在选择组件的时候需要选择对应的组件
注意要选择Web组件或者其它能够持久运行的。不然会注册失败
创建后目录如下
<?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> <groupId>com.xuan</groupId> <artifactId>eureka-client</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>eureka-client</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.RELEASE</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>
package com.xuan.eurekaclient; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @EnableEurekaClient @SpringBootApplication public class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); } }
@EnableEurekaClient和@EnableDiscoveryClient的区别
spring cloud中discovery service有许多种实现(eureka、consul、zookeeper等等),@EnableDiscoveryClient基于spring-cloud-commons,@EnableEurekaClient基于spring-cloud-netflix。
就是如果选用的注册中心是eureka,那么就推荐@EnableEurekaClient,如果是其他的注册中心,那么推荐使用@EnableDiscoveryClient。
修改配置文件application.properties
spring.application.name=eureka-client server.port=8090 eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka/
测试是否能够注册
先启动:eureka-server
然后启动eureka-client
发现多了一个EUREKA-CLIENT,说明注册成功了
SpringCloud实现一个模块调用另一个模块的服务 点击查看:https://blog.csdn.net/Lijunhaodeboke/article/details/92834078
- 玩转Spring Cloud之服务注册发现(eureka)及负载均衡消费(ribbon、feign)
- springcloud(第三篇)springcloud eureka 服务注册与发现
- SpringCloud Eureka 服务注册与服务发现
- 《Spring Cloud Netflix》 -- 服务注册和服务发现-Eureka 的使用
- [Spring Cloud-01] eureka server 服务注册与发现
- Spring Cloud EureKa Ribbon 服务注册-发现-调用
- SpringCloud微服务实战---服务的注册和发现(Eureka)
- SpringCloud : 服务的注册与发现(Eureka)
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】
- SpringCloud——Eureka服务注册和发现
- Spring Cloud 学习笔记-Eureka 服务注册与发现
- 《Spring Cloud Netflix》-- 服务注册和服务发现-Eureka的服务认证和集群
- SpringCloud服务注册与发现(Eureka 注册中心)
- springcloud(第三篇)springcloud eureka 服务注册与发现
- springcloud eureka服务注册与发现
- 每天学点SpringCloud(二):服务注册与发现Eureka
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】
- 三、SpringCloud之服务注册与发现组件--Eureka
- SpringCloud——Eureka服务注册和发现
- 《Spring Cloud Netflix》--服务注册和服务发现-Eureka的深入了解