eureka server
1.jar包导入
spring-cloud-starter-netflix-eureka-server
2.配置文件
spring.application.name=micro-eureka
server.port=8763
eureka.instance.hostname=eureka.server
# 暴露 eureka 服务的地址
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka
# 不向注册中心注册自己, 默认为 true
eureka.client.registerWithEureka=false
# 是否从 eureka 中拉取注册信息,默认为 true
eureka.client.fetchRegistry=false
# 是否开启自我保护模式, 默认为 true
# 当出现网络分区, eureka 在短时间内丢失过多客户端时, 会进入自我保护模式,
# 即一个服务长时间没有发送心跳, eureka 也不会将其删除
eureka.server.enable-self-preservation=true
# eureka server 清理无效节点的时间间隔,默认 60000 毫秒,即 60 秒
eureka.server.eviction-interval-timer-in-ms=60000
security.basic.enabled=true
spring.security.user.name=admin
spring.security.user.password=002310
3.配置类
@EnableEurekaServer
4.查看注册中心
http://localhost:8763
eureka client
服务生产者 / 服务消费者
1.jar包导入
spring-cloud-starter-netflix-eureka-client
2.配置文件
EurekaClientConfigBean, EurekaInstanceConfigBean 定义了常用配置参数及默认值
# 服务名称
spring.application.name=micro-goods
# 服务端口
server.port=8283
# 注册中心路径
#http://eureka.server:8763/eureka
# 增加 eureka 用户认证
# 连接 eureka 的时候,带上用户名和密码
eureka.client.serviceUrl.defaultZone=http://admin:002310@eureka.server:8763/eureka
#eureka.client.serviceUrl.defaultZone=http://admin:002310@Eureka8761:8761/eureka/,http://admin:002310@Eureka8762:8762/eureka/
# 是否注册到 eureka, 默认为 true
eureka.client.registerWithEureka=true
# true 使用 ip 进行服务注册
# 如果同时设置了 eureka.instance.ip-address,就用该 ip 进行服务注册
# false 默认,使用 hostname 进行服务注册
# eureka.instance.prefer-ip-address=true
# 是否从 eureka 中拉取注册信息, 默认为 true
eureka.client.fetchRegistry=true
# 表示 eureka client 间隔多久去拉取服务注册信息,默认为 30 秒
eureka.client.registry-fetch-interval-seconds=30
# 每一个服务配置后, 心跳间隔和心跳超时时间会被保存在 server 端,
# 不同服务的心跳频率可能不同, server 端会根据保存的配置来分别探活
# 服务续约,心跳的时间间隔 -- 默认30s
eureka.instance.lease-renewal-interval.in.seconds=30
# 心跳超时时间 -- 默认90s, 如果从前一次发送心跳时间起, 90秒没接受到新的心跳,将剔除服务
eureka.instance.lease-expiration-duration-in-seconds=90
3.配置类
@EnableEurekaClient
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
服务消费者
String result = restTemplate.getForObject("http://"
+ ORDER_SERVICE_NAME + "/order/queryOrder", String.class)
eureka 用户认证
连接 eureka 的时候,需用户密码
eureka 服务端
1.jar包导入
spring-boot-starter-security
2.配置文件
security.basic.enabled=true
spring.security.user.name=admin
spring.security.user.password=002310
3.配置代码
@EnableWebSecurity
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// 关闭 csrf
http.csrf().disable();
// 开启认证:URL格式登录必须是 httpBasic
http.authorizeRequests().anyRequest().authenticated().and().httpBasic();
}
}
eureka 客户端
# 注册中心路径
# http://eureka.server:8763/eureka
# 增加 eureka 用户认证, 连接eureka的时候, 带上用户名和密码
eureka.client.serviceUrl.defaultZone=http://admin:002310@eureka.server:8763/eureka
健康检测
eureka 默认的健康检测只是通过心跳来感知微服务进程的状态,而接口的可用情况需要通过 actuator 模块来做自定义健康检测
1.jar包导入
spring-boot-starter-actuator
2.配置文件
eureka.client.healthcheck.enabled=true
3.自定义的 HealthIndicator
@Configuration
public class MicroGoodsHealthIndicator implements HealthIndicator {
public static boolean dbIsAvailable = true;
@Override
public Health health() {
if(dbIsAvailable) {
return new Health.Builder(Status.UP).build();
}else {
return new Health.Builder(Status.DOWN).build();
}
}
}
注册中心强制下线
http://你的注册中心zone/apps/你的实例名称/你的实例地址加端口
http://admin:002310@eureka.server:8763/eureka/apps/micro-goods/localhost:micro-goods:8083