Spring Cloud(二):Eureka 服务注册中心 (2)

可以看到 Eureka 的信息面板,其中 Instances currently registered with Eureka 中列表显示 No instances available,说明该注册中心还没有注册任何服务。

Spring Cloud(二):Eureka 服务注册中心

服务提供者(Service Provider) 1. 创建 Spring Boot 项目,添加依赖 <properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version> </properties> <dependencies> <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> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </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> 2. @EnableDiscoveryClient 注解启动 Eureka 客户端 @SpringBootApplication //@EnableEurekaClient 该注解在采用eureka作为注册中心时使用,场景较为单一 @EnableDiscoveryClient //场景更为广泛 public class SpringCloudEurekaServiceApplication { public static void main(String[] args) { SpringApplication.run(SpringCloudEurekaServiceApplication.class, args); } }

@EnableEurekaClient 和 @EnableDiscoveryClient 在当前示例中使用效果好是一样的,@EnableEurekaClient 注解在采用eureka作为注册中心时使用,场景较为单一,@EnableDiscoveryClient 场景更为广泛。

3. 配置文件 application.properties server.port=8888 spring.application.name=spring-cloud-eureka-service #info 应用信息 info.app.name=spring-cloud-eureka-service info.app.version=v1.0.0 info.app.description=spring-cloud-eureka-service #eureka eureka.instance.hostname=127.0.0.1 #每隔5s心跳一次,证明本服务还活着 eureka.instance.lease-renewal-interval-in-seconds=5 #本服务10s内没有心跳,就将该服务从服务端剔除 eureka.instance.lease-expiration-duration-in-seconds=10 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:9999/eureka/

eureka.instance.lease-renewal-interval-in-seconds:设置心跳间隔秒数

eureka.instance.lease-expiration-duration-in-seconds:设置秒数内无心跳,则剔除服务

4. 启动应用,访问::9999/

在服务注册中心的控制台中我们可以看到如下输出,说明服务被注册成功了。

c.n.e.registry.AbstractInstanceRegistry : Registered instance SPRING-CLOUD-EUREKA-SERVICE/192.168.101.201:spring-cloud-eureka-service:8888 with status UP (replication=false)

而在 Eureka 的信息面板上,在 Instances currently registered with Eureka 列表中同样可以看到服务的注册信息。如下图:

高可用注册中心(集群)

上面介绍了单节点模式的服务注册中心,不过在实际生产环境中,通常不会采用这种模式。在分布式系统中,服务注册中心是非常重要的组成部分,如果是单节点模式,发生故障的话将会是毁灭性的灾害。所以为了维护服务的高可用性,通常采用集群的解决方案。

Eureka 的服务治理设计中,所有的节点既是服务提供方,也是服务消费方,服务注册中心也不例外。Eureka 通过互相注册服务的方式,以实现服务清单的互相同步,达到高可用的效果。

双节点注册中心

搭建服务注册中心 A,配置文件如下:

server.port=9991 spring.application.name=eureka-server spring.profiles.active=nodea #eureka eureka.instance.hostname=nodea #设置微服务调用地址为IP优先(缺省为false) #eureka.instance.prefer-ip-address=true eureka.client.serviceUrl.defaultZone=http://nodeb:9992/eureka/

搭建服务注册中心 B,配置文件如下:

server.port=9992 spring.application.name=eureka-server spring.profiles.active=nodeb #eureka eureka.instance.hostname=nodeb #设置微服务调用地址为IP优先(缺省为false) #eureka.instance.prefer-ip-address=true eureka.client.serviceUrl.defaultZone=http://nodea:9991/eureka/

在 /etc/hosts(windows系统路径为 C:\Windows\System32\drivers\etc\hosts) 文件中添加 nodea 和 nodeb 的转换,如下:

127.0.0.1 nodea 127.0.0.1 nodeb

启动两个项目,分别访问:9991/和:9992/,我们可以看到两个节点都已经被注册,如下图所示:

Spring Cloud(二):Eureka 服务注册中心

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzssf.html