(1)Eureka Server 提供服务发现的能力,各个微服务启动的时候,会向Eureka Server注册自己的信息(IP,端口,服务名称),Eureka Server会存储这些信息。
(2)微服务启动后,会周期性的向Eureka Server发送心跳以续约自己的租期。默认是30秒。
(3)如果Eureka Server在一定时间内没有收到某个微服务实例的心跳,Eureka会注销该实例。默认是90秒。
(4)多个Eureka Server之间通过复制的方式,来实现服务注册表中数据的同步。
(5)Eureka Client会缓存服务注册表中的信息。优势在于不用每次都去查询Eureka Server,降低Eureka Server的压力。
(1)引入eureka-server的pom
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
(2)在启动类上要加上@EnableEurekaServer注解。声明这是一个Eureka Server。
(3)在配置文件application.yml中添加内容。
server:
port: 8761
eureka:
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://localhost:8761/eureka/
eureka.client.registerWithEureka:表示是否将自己注册到Eureka Server。默认是true,当前应用是Eureka Server,所以设置成false。
eureka.client.fetchRegistry:表示是否从Eureka Server获取注册信息,默认设置为true。表示同步其他Eureka Server节点的数据。
eureka.client.serviceUrl.defaultZone:设置与Eureka Server交互的地址。
(1)在项目中添加eureka pom
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-start-eureka</artifactId>
</dependency>
(2)在配置文件中application.yml中添加配置
spring:
application:
name: eureka-client
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka
instance:
prefer-ip-address: true
spring.application.name用于指定注册到Eureka server上的应用名称。
eureka.instance.prefer-ip-address = true表示将自己的IP注册到Eurek Server。如果不配置或者将其设置为false,表示注册微服务的hostname到eurek server中。
(3)在启动类上加上@EnableDiscoveryClient,声明这是一个Eureka client。
@EnableDiscoveryClient和@EnableEurekaClient的区别。
前者应用范围广泛,什么样的注册中心都可以用,后者只针对于eureka作为注册中心时使用。
建立eureka sever集群。那么怎么建立eureka server集群呢?
(1)在eureka sever项目的pom文件中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
注意是springboot里边的包。
(2)在配置文件application.yml中添加内容
spring:
security:
basic:
enabled: true
user:
name: user
password: password
spring.security.basic.enabled = true 开启基于http basic的认证。
下边是配置登录时的用户名和密码。
(3)微服务注册到添加用户认证的Eureka Server上
只需要将eureka client的eureka.client.serviceUrl.defaultZone:http://user:password@Eureka_Host:port/eureka/这种形式就可以了,就是在地址前边加上用户名和密码。
自我保护模式解决的问题是当短时间内丢失过多的客户端的时候,原因可能是网络原因,为了避免错误的注销掉客户端,服务端就会开启自我保护模式,不再删除注册表中的数据。
eureka:
server:
enable-self-preservation: false
false是禁用自我保护模式。
eureka:
client:
healthcheck:
enabled: true
注意:健康检查目前只能配置在applicaiton.yml中
问题:application.yml和bootstrap.yml的区别?
加载顺序上bootstrap.yml先于application.yml加载。
bootstrap.yml配置系统级的配置
application.yml是应用级的配置