@t@TOC
eureka集群(boot)
前言
CAP实现了ap没有满足c,是因为在启动的时候才去拉;不是数据的强一致性的
第一步引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
第二步编写yml文件
spring:
application:
#应用名
name: eureka
三台机器和两台是不一样的,这里着重三台
三台都写,且互相引用
配置host
C:\WINDOWS\system32\drivers\etc
host文件修改注册eureka
踩坑小指南
出现这个错误
是自己写的服务器地址没有被eureka注册到
问题:http:localhost:7900/eureka/ ,没有写全http://
解决办法:
http://localhost:7900/eureka/,http://localhost:7901/eureka/,http://localhost:7902/eureka/
写注册地址时注意完整
eureka:
client:
fetch-registry: false
register-with-eureka: false
service-url:
defaultZones: http://localhost:7900/eureka/,http://localhost:7901/eureka/,http://localhost:7902/eureka/
#yml的写法—隔离 相当于三个eureka文件
---
spring:
profiles: 7900
eureka:
instance:
#每个服务实例的主机名 在电脑host文件中进行配置
hostname: eureka-7900
server:
port: 7900
---
spring:
profiles: 7901
eureka:
instance:
hostname: eureka-7901
server:
port: 7901
---
spring:
profiles: 7902
eureka:
instance:
hostname: eureka-7902
server:
port: 7902
第三步多个启动idea
1复制启动项目
第四步 新建一个项目
1依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2配置文件
server:
port: 8080
eureka:
client:
service-url:
defaultZone: http://localhost:7900/eureka
spring:
application:
name: api-passenger
3启动类加@EnableEurekaServer
mark开关 作用就是引入EurekaServerAutoConfiguration
4效果图
优化
第一步 eureka启动过程(源码)
依赖交由boot启动
boot启动加载标记
eureka初始化服务器
生命周期
优化点start
第二步 start断点
Eureka 服务器初始化配置
拉取其他节点
第三步 服务阈值
服务阈值优化
例:
a:阈值70% 10台服务,7台挂了(网络抖动) 会自我保护,当有一个新的服务不会剔除,在调用的时候就会出问题
b: 但是有100台机器 3台挂了(网络抖动) 不开自我保护会剔除 97% 达不到阈值,
优化的点
1.服务少的情况不开自我保护,数量少挂了大概率就是挂了
2.微服务多的时候开自我保护,如果不开3台掉了(网络抖动)就会剔除(但不是真掉了,会有问题)
- 大面积掉了,达到阈值就会触发自我保护机制
- 定期对没有心跳的服务剔除 定时服务间隔
- 默认拉取时间为3000,可优化为1000
eureka配置事件和启动事件
1.自我保护
2.服务剔除
3.剔除参数
timer 在运行多线程并发时,一个线程出问题其他线程都会终止