赞
踩
Eureka是Spring Cloud框架中的服务注册与发现组件。
1.配置pom文件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2.配置application.properties或者application.yaml
#是否将自己注册到Eureka Server,默认为true,由于当前就是server,故而设置成false,表明该服务不会向eureka注册自己的信息,如果是eureka服务器集群的配置那么采用默认即可,方便其向其他服务器获取信息
eureka.client.register-with-eureka=false
#是否从eureka server获取注册信息,由于单节点,不需要同步其他节点数据,用false
eureka.client.fetch-registry=false
#设置服务注册中心的URL,用于client和server端交流,集群配置,应该设为其他的服务器地址,来获取其他服务器上的服务信息
eureka.client.service-url.defaultZone=http://localhost:7900/eureka/
3.启动类上添加此注解标识该服务为配置中心@EnableEurekaServer
4.可以启动服务器,提供服务
客户端可以既是服务消费者也可是服务提供者。
1.pom文件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.application.properties
#是否将自己注册到其他Eureka Server,默认为true 需要
eureka.client.register-with-eureka=true
#是否从eureka server获取注册信息, 需要
eureka.client.fetch-registry=true
#设置服务注册中心的URL,用于client和server端交流
#此节点应向其他节点发起请求
eureka.client.serviceUrl.defaultZone=http://localhost:7900/eureka/
#主机名,必填
eureka.instance.hostname=localhost
#web端口,服务是由这个端口处理rest请求的
server.port=7901
3.可以发起远程请求
1.Eureka在CAP(一致性、可用性,分区容错性)理论当中是属于AP , 也就说当产生网络分区时,Eureka保证系统的可用性,但不保证系统里面数据的一致性,默认开启自我保护机制,服务器端容错的一种方式,即短时间心跳不到达仍不剔除服务列表里的节点。
2.默认情况下,Eureka Server在一定时间内,没有接收到某个微服务心跳,会将某个微服务注销(90S)。但是当网络故障时,微服务与Server之间无法正常通信,上述行为就非常危险,因为微服务正常,不应该注销。
3.Eureka Server通过自我保护模式来解决整个问题,当Server在短时间内丢失过多客户端时,那么Server会进入自我保护模式,会保护注册表中的微服务不被注销掉。当网络故障恢复后,退出自我保护模式。
配置文件中配置
#关闭自我保护模式
eureka.server.enable-self-preservation=false
#失效服务间隔
eureka.server.eviction-interval-timer-in-ms=3000
该功能完成服务的监控,简单来说就是收集服务的一些详细信息,比如服务是否正常等状态信息,配置在服务的提供者上。
1.开启监控
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.在application.properties配置文件中开启端点,端点即某一个状态信息,一个服务包含许多的状态信息,需要监控什么信息,即打开哪个端点
#开启所有端点
management.endpoints.web.exposure.include=*
3.然后可通过http请求的方式获取对应端点的信息
由于server和client通过心跳保持服务状态,而只有状态为UP的服务才能被访问,eureka服务器的面板上就可以看到服务的status,有UP 和DOWN。比如心跳一直正常,服务一直UP,但是此服务DB连不上了,无法正常提供服务。此时,我们需要将微服务的健康状态也同步到server,只需要启动eureka的健康检查就行,这样微服务就会将自己的健康状态同步到eureka。
客户端配置如下,将自己的真正健康信息传到服务器:
eureka.client.healthcheck.enabled=true
注: 同时Client端需要配置Actuator
Eureka支持安全配置,即在访问Eureka服务器时需要进行安全方面的验证,如登录。
注:
如果出现服务注册报错:Root name ‘timestamp’ does not match expected (‘instance’) for type [simple,这是因为默认开启了防止跨域攻击,可在服务端增加如下配置
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
@Override
protected void configure(HttpSecurity http) throws Exception {
// TODO Auto-generated method stub
http.csrf().disable();
super.configure(http);
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。