Spring cloud之Eureka组件集成学习
注意:此文章中的测试版本为springboot-2.2.2.RELEASE,springcloud-Hoxton.SR1版
Eureka是netflix的一个子模块,也是核心模块之一,Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现和注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务,而不需要修改服务调用的配置文件了,功能类似于dubbo的注册中心,比如zookeeper。(度娘上的)
简单来说:eureka就是把所有服务放在一起,进行标记,在集群环境的时候访问其他服务,调用方不再关心具体地址,只需要使用对应服务的标记即可,而eureka微服务本身就是注册中心服务端,其他微服务就是注册中心客户端 。
一、eureka服务端
1.pom引入
在eureka微服务中引入,作为注册中心服务端
2.修改配置文件
由于此次版本使用的springboot-2.2.2.RELEASE,所以使用YML文件进行配置
(此处配置的hostname是设置好的域名,若没有域名,直接配置ip即可)
register-with-eureka: 默认值为ture,表示需要向注册中心,注册自己,此时自己为注册中心,则不需要向自己注册自己,故改为false。
fetch-registry:默认值为ture,表示可以检索注册中心已经注册的其他服务,一般注册中心服务端仅作为注册中心使用,不需要处理其他事项,故改为false。
service-url:defaultZone表示注册中心的默认地址,此时是单机状态,配置为自己的地址。集群环境下配置除自身以外的其他注册中心地址使用“,”隔开即可。
3.启动类
在启动类上添加@EnableEurekaServer注解,标记此微服务是注册中心服务端。
二、eureka客户端
1.pom引入
在其他微服务中引入,作为注册中心客户端
2.修改配置文件
spring.applicatuon.name: 表示服务名。也是其他微服务注册在注册中心时的独有“标记”。
eureka.client.service-url.defaultZone:表示需要注册到的注册中心地址。集群环境使用“,”隔开即可。
register-with-eureka: 默认值为ture,表示需要向注册中心。
fetch-registry:默认值为ture,表示可以检索注册中心已经注册的其他服务。
特别说明:
instance.instance-id:表示注册在注册中心的实例名。(可选配置)
prefer-ip-address:表示开启注册中心查看此微服务的地址。(可选配置)
3.启动类
方法一:在启动类上添加@EnableEurekaClient注解
(此注解不推荐使用!!!因为eureka组件已经停止更新,而此注解仅能作为eureka客户端来使用)
方法二:在启动类上添加@EnableDiscoveryClient注解
(此注解用作服务发现,可以兼容除eureka作为注册中心以外,其他注册中心,如zookeeper等)
三、测试
先启动注册中心后启动其他微服务。
单节点
集群:
eurekaserver7001服务上守望的是eurekaserver7002服务,paymen8001和payment8002成功注册到eurekaserver7001。
eurekaserver7002服务上守望的是eurekaserver7001服务,paymen8001和payment8002成功注册到eurekaserver7002。
测试完成,服务成功注册。
四、eureka自我保护机制
自我保护模式正是一种针对网络异常波动的安全保护措施,使用自我保护模式能使Eureka集群更加的健壮、稳定的运行。(官方解释)
默认情况下,如果Eureka Server在一定时间内(默认90秒)没有接收到某个微服务实例的心跳,Eureka Server将会移除该实例。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,而微服务本身是正常运行的,此时不应该移除这个微服务,所以引入了自我保护机制。
也就是说,一旦客户端与注册中心之间没有了心跳,注册中心并不会移除这个实例,注册中心“自以为是”的认为该实例可能出现意外情况(网路故障等因素)并不是服务本身死了,所以就不会移除此服务实例在注册中心的中的注册信息。
注册中心关闭自我保护配置:eureka.server.enable-self-preservation配置为false。
五、结语
此篇文章主要用于学习记录和分享心得,第一次编写,欢迎大家指正纠错,谢谢。