Eureka注册中心
一、Eureka的主要功能是进行服务管理,定期检查服务状态,返回服务地址列表,自身并不提供服务也不消费服务
二、Eureka原理图形
三、服务消费可以使用工具类根据服务名称到eureka中获取对应的服务地址列表
四、就Eureka而言,所需要进行的相关配置
1:Eureka-server
a:单机版的配置
# 应用名称,会在Eureka中作为服务的id标识(serviceId)
spring.application.name=eureka-server
#EurekaServer的地址,现在没有做集群,是自己的地址,如果是集群,需要写其集群中的eureka地址
eureka.client.service-url.defaultZone=http://127.0.0.1:10086/eureka
#是否注册自己,单机版的自己不用注册
eureka.client.register-with-eureka=false
#自己不拉取注册的服务
eureka.client.fetch-registry=false
#若某一服务失效后,eureka剔除该服务的时间,默认60s
eureka.server.eviction-interval-timer-in-ms=60000
# 关闭自我保护模式.默认是开启状态
eureka.server.enable-self-preservation=false
b:集群版的配置
# 应用名称,会在Eureka中作为服务的id标识(serviceId)
spring.application.name=eureka-server
#EurekaServer的地址,现在没有做集群,是自己的地址,如果是集群,需要写其集群中的eureka地址
eureka.client.service-url.defaultZone=${defaultZone:http://127.0.0.1:10086/eureka}
#是否注册自己,单机版的自己不用注册
#eureka.client.register-with-eureka=false
#自己不拉取注册的服务
#eureka.client.fetch-registry=false
2:user-server
#将user-service服务注册到eureka中
eureka.client.service-url.defaultZone=http://127.0.0.1:10086/eureka
#默认注册时使用的是主机名或者localhost,现在改为使用ip进行注册
eureka.instance.ip-address=127.0.0.1
eureka.instance.prefer-ip-address=true
#服务续约,定时向EurekaServer发起Rest请求,告诉EurekaServer:“我
#还活着”,避免服务被eureka从注册中心剔除
#续约间隔时间,默认30s
eureka.instance.lease-renewal-interval-in-seconds=5
#续约失效时间,默认90s
eureka.instance.lease-expiration-duration-in-seconds=5
3:consumer-demo
#让consumer-demo服务消费者到eureka中拉取服务列表
eureka.client.service-url.defaultZone=http://127.0.0.1:10086/eureka
#服务消费者到eureka中拉取服务列表的间隔时间,默认30s
eureka.client.registry-fetch-interval-seconds=10
三、Eureka的原理
Eureka Server提供服务的注册服务
各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中的将会存储所有可用服务节点信息,服务节点的信息可以在界面中直观看到
EurekaClient通过注册中心进行访问
是一个Java客户端,用于简化EurekaServer的交换,客户端同时也具备一个内置的,使用轮询负载算法的负载均衡器,在应用启动后,将会向EurekaServer发送心跳(默认周期30秒),如果EurekaServer在多个心跳周期内没有接受到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)
服务的注册:将服务注册到注册中心
服务的发现:从注册中心中获取服务信息,主要以key【服务名】,value【服务地址】
Eureka流程:
1、先启动Eureka注册中心
2、启动服务提供者payment支付服务
3、支付服务启动后会把自身信息,比如(服务地址)会以别名的形式注册到Eureka中
4、消费者order服务在调用接口时,使用服务别名去注册中心获取实际的RPC远程调用地址
5、消费者获取调用地址后,底层实际是利用HttpClient技术实现远程调用
6、消费者获取调用服务地址后会缓存在本地JVM内存中,默认每间隔30秒更新一次服务调用地址
四、什么是自我保护模式
默认情况下,如果EurekaServer在一定时间内没有接受某个微服务实例的心跳,EurekaServer将会注销该实例(默认90秒),但是当网络分区故障发生(延迟、卡顿、拥挤)时,微服务与EurekaServer之间无法正常通信,EurekaServer会误判微服务已经挂掉了,90秒后将该微服务的注册信息移除,但微服务本身是正常的,Eureka通过“自我保护”来解决这个问题