SpringCloud 使用 Eureka,一文总结
文章目录 SpringCloud 使用 Eureka,一文总结2. Get Started2.1. 创建Eureka服务器2.2 创建 Eureka 客户端 3. Eureka Server的高可用部署4. Eureka的元数据4.1 元数据介绍4.2 查看元数据 5. Eureka的自我保护模式6.Eureka的健康检查 2. Get Started 2.1. 创建Eureka服务器创建一个普通的 SpringBoot 项目,加入 eureka-server 的依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>3.0.3</version> </dependency>注意版本要和 SpringBoot 的版本有支持关系。可以在 https://spring.io 官网的 SpringCloud 板块查看。
修改配置文件 application.properties
server.port=8761 spring.application.name=EUREKA-SERVER eureka.instance.hostname=127.0.0.1 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka访问 http://127.0.0.1:8761 可以看到以下界面,证明搭建成功。
2.2 创建 Eureka 客户端创建一个普通的 SpringBoot 项目,然后加入 eureka-client 的依赖。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> <version>3.0.3</version> </dependency>注意版本要和 SpringBoot 的版本有支持关系。可以在 https://spring.io 官网的 SpringCloud 板块查看。 在配置文件 application.properties 中添加以下配置
server.port=8081 spring.application.name=EUREKA-CLIENT-1 # eureka-server的地址 eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka启动成功之后,访问 eureka-server 的 主机+端口号,此处为 : http://127.0.0.1:8761,看到以下界面,代表注册成功。 可以看到关键信息:应用名、可用AZ数量,状态等信息。 声明:
在 Spring Cloud Edgware 版本之后,不需要在配置类上添加 @EnableEurekaClient 或者 @EnableDiscoveryClient 注解,默认自动注册。可以通过 spring.cloud.service-registry.auto-registration.enable=false 或者 @EnableDiscoveryClient(autoRegistry = false) ,禁用默认注册。在Eureka服务器的配置中,添加 eureka.instance.prefer-ip-address=true 表示将自己的 ip 注册到 Eueka-Server 上。 3. Eureka Server的高可用部署Eureka Server 可以通过运行多个示例,并且相互注册的方式,实现集群高可用部署。 Eureka Server 会彼此增量同步信息,最终保持所有节点一致。 节点之间相互注册是默认行为,只需要把 eureka.client.register-with-eureka=false 和 eureka.client.fetch-registry=false 配置去掉,然后在 eureka.client.serviceUrl.defaultZone 设置成为别的节点的 Eureka 地址就可以。
4. Eureka的元数据 4.1 元数据介绍Eureka的元数据分为两种:标准元数据 和 自定义元数据。 标准元数据是指 主机名、IP地址、端口号、状态页和健康检查等信息。这些信息都会发布在服务注册表中,用于服务之间的调用。 自定义元数据可以使用 eureka.instance.metadataMap 去自定义key和value(会保存在 EurekaInstanceConfigBean)。自定义元数据也可以在远程客户端中访问,但是一般不会改变客户端的行为(除非自己根据自定义元数据做特定的开发)。
4.2 查看元数据第一种方式,通过 DiscoveryClient 的对象在程序中获取: 在程序中注入 DiscoveryClient 的对象,然后通过 DiscoveryClient.getInstances("serviceId") 方法,将会返回这个微服务ID下面的所有实例信息,返回类型 List<ServiceInstance> 。
第二种方式,通过 RESTful 接口,用GET方法访问 $(eureka.client.serviceUrl.defaultZone)/apps/serviceId,可以看到这个微服务ID下面的所有实例的XML信息。
5. Eureka的自我保护模式当 Eureka Server 出现下面的红字,代表进入自我保护模式。 当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,Eureka Server就会进入自我保护模式。 短时间内丢失过多客户端,就认为发生了网络分区。 一旦进入此模式,Eureka Server就会保护服务注册表中的信息,不会再删除数据(不注销微服务)。 当网络故障恢复之后,会自动退出保护模式。 自我保护模式是一种应对网络异常的安全保护措施,它的思想是:宁可保住所有的微服务(健康+不健康),也不会注销任何健康的微服务。
在人群中,无法区分好人坏人的时候,宁愿暂时保住全部的人,也不给机会杀任何一个好人。
自我保护模式,让Eureka集群更加健壮稳定。
6.Eureka的健康检查Eureka Server 和 Eureka Client 通过心跳定时通信,决定了微服务的状态,UP还是DOWN。 如果Eureka Server超过90s没有收到某个微服务的心跳,就会把它注销。(进入保护模式就不注销) 这种机制只是二者连接正常,不能反映程序的细节健康状态,例如:微服务的数据源出问题。 可以通过 SpringBoot Actuaor 的 health 端点做健康检查,只需配置 eureka.client.healthcheck.enable=true,如果想自定义更细粒度的检查,可以自己实现 com.netflix.appinfo.HealthCheckHandler 方法。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |
标签: #springcloud #使用 #Eureka一文总结2 #get #Started21 #springboot