可以看到 Eureka 的信息面板,其中 Instances currently registered with Eureka 中列表显示 No instances available,说明该注册中心还没有注册任何服务。
@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/,我们可以看到两个节点都已经被注册,如下图所示: