springCloud Eureka 注册中心原理及配置理解(一)
本文内容纲要:
Eureka原理与步骤
**比拟场景:餐厅吃饭
1、先向收银员(注册中心)要个号牌(IP地址)。
2、饭菜到场就根据你号牌(IP地址)将饭菜端到你面前。
3、在整个就餐过程中,你随时可以与收银员进行互相沟通(监听客户端心跳)。
4、最后你吃完跑路了号牌回收(剔除服务器)。
原理:与比拟场景序号对应理解。
1、服务提供方启动后将注册到注册中心,提供IP,名字,什么服务等信息,
2、服务调用方作为客户端注册到注册中心后,拉取注册中心的服务列表,在通过负载均衡调用对应的服务提供方。
3、注册中心可以建立集群,生成多台eureka,注册中心为了监测各个服务的心跳,将在每30S向所注册的服务发起请求判断
4、服务是否挂掉,如果挂掉90S后将会将服务从注册中心剔除。
一个服务可以监测多台服务实例,从而可实现均衡负载。
配置步骤:注意以下的客户端说的是作为注册到注册中心的微服务,他相对于注册中心就是客户端,注册中心就是服务端
一、加依赖以下指POM文件
<!--注册中心:-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!--客户端:-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
二、加注解以下在启动器上加注解
注册中心:@EnableEurekaServer
服务提供客户端方:@EnableDiscoveryClient此注解支持多种服务中心,如eureka,zk,等等,所以一般使用这个。
@EnableEurekaClient只支持eureka所以用上一种
三、加配置以下指application.yml配置文件
#注册中心:
server:
port:10086
spring:
application:
name:eureka-server
eureka:
client:
register-with-eureka:false#是否注册自己的信息到EurekaServer,默认是true
fetch-registry:false#是否拉取其它服务的信息,默认是true
service-url:
defaultZone:http://127.0.0.1:10086/eureka,http://127.0.0.1:10087/eureka
#注册到当前地址中,实现eureka集群后面描述
instance:
lease-renewal-interval-in-seconds:30#每30S给其他服务发次请求,监测心跳
lease-expiration-duration-in-seconds:90#如果其他服务没心跳,90S后剔除该服务
#客户端:
server:
port:8081
spring:
application:
name:user-server
eureka:
client:
service-url:
defaultZone:http://127.0.0.1:10086/eureka
registry-fetch-interval-seconds:50#客户端拉取注册中心的服务列表
关于Eureka高可用的配置及讲解:
为了使eureka高可用,挂掉后依然可以使用所以将配置多台eureka注册中心实现集群。
实现原理:如果需配置3台注册中心,那么应该是A注册到B、C,B注册到C、AC注册到A,B
这样互相注册即可实现集群配置。也就是上图配置的多台地址
eureka:
client:
service-url:
defaultZone:http://127.0.0.1:10086/eureka,http://127.0.0.1:10087/eureka
registry-fetch-interval-seconds:50#客户端拉取注册中心的服务列表
关于Eureka的自我保护机制与剔除服务机制:
剔除服务机制:当服务提供方(客户端)注册到Eureka后,每30S将会向Eureka发起一次请求表示自己有心跳
服务器正常,当90S都没有发请求时候Eureka会认为服务器宕机了,则会在60S后统一清除所有宕机的服务器。
自我保护机制:当服务没有按每30S按时发请求时,Eureka将会统计15分钟内心跳的请求成功概率,如果低于85%
则可能服务提供方有延迟问题或者网络故障,这样会将服务提供方保护起来不会剔除。
eureka:
server:
enable-self-preservation:false#关闭自我保护模式(缺省为打开)
eviction-interval-timer-in-ms:1000#扫描失效服务的间隔时间(缺省为60*1000ms)
https://files.cnblogs.com/files/lanSeGeDiao/springCloud-demo.zip
以上是springCloud的DEMO例子请自行复制路径到浏览器
本文内容总结:
原文链接:https://www.cnblogs.com/lanSeGeDiao/p/10801804.html