首先Eureka是什么? java
Eureka是Netflix的一个子模块,也是核心模块之一,Eureka是一个基于REST的服务,用于定位服务,以实现云端中层服务发现和故障转移。服务注册与发现对于微服务架构来讲是很是重要的,有了服务发现与注册,只须要使用服务的标识符,就能够访问到服务,儿不须要修改服务调用的配置文件了。功能相似于dubbo的注册中心,好比Zookeeper。spring
Eureka主管服务的注册与发现。apache
Netflix在设计时遵照ap原则即:高可用高容错网络
Eureka的注册:架构
要将服务注册到Eureka上app
1.在pom.xml里加入maven
<!--将微服务provider注册进eureka--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
2.applicati.yml文件
eureka:
client: #将客户端注册金eureka服务列表内
service-url: defaultZone: http://localhost:6001/eureka
3.在启动类上加上@EnableEurekaClient注解ide
Eureka的自我保护:spring-boot
eureka的自我保护就是:微服务
默认状况下,若是EurekaServer在必定时间内没有接收到某个微服务实例的心跳,EurekaServer将会注销实例(默认90s)。可是当网络分区故障发生时,微服务与EurekaServer之间没法正常通讯,以上行为可能变得很是危险了--由于微服务自己其实时健康的,此时不该该注销这个微服务。Eureka用过“自我保护模式”来解决这个问题--当EurekaServer节点在短期内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入自我保护模式,EurekaServer节点会保护注册表中的信息,再也不删除服务注册表中的数据。当网络恢复时自动推出自我保护模式。
一句话归纳:某一时刻某一个微服务不可用了,eureka不会马上清理,依旧会对该服务的信息进行保存
如果想要关闭:(不建议关闭)
eureka:
server:
enable-self-preservation: false #禁用自我保护机制
故障演示:
细节修改:
修改前:(注意蓝色字体部分)
修改后:
1.主机名称:服务名称修改
当前问题
localhost:microservice-product:8001
在要入住eureka的服务的yml配置文件中的eureka下加上
instance:
instanceID: ${spring.application.name}:${server.port} # 指定实例ID 不显示主机名
修改以后名称变为
microservice-product:8001(本身想要的名称)
2. 访问信息有ip信息提示
当前问题:没有ip提示
在要入住eureka的服务的yml配置文件中的下加上
prefer-ip-address: true
3.微服务info内容详细信息
当前问题:超连接点击服务报告ErrorPage
1.修改要入住eureka的服务的pom.xml文件:
添加:
<!--actuator监控信息完善-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.总的父工程修改pom.xml添加构建build信息
<build>
<finalName>microservice-cloud-01</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>
<delimiter>$</delimiter>
</delimiters>
</configuration>
</plugin>
</plugins>
</build>
3.修改要入住eureka的服务的.yml文件:
info:
app.name: yqk-microservice-cloud-01
company.name: www.kgc.com
build.artifactId: $project.artifactId$
build.version: $project.version$
Eureka的集群配置:
配置前:
配置后:
1.新建工程6002 2.按照6001为模板修改pom配置文件 3.修改主启动类 4.修改映射配置 修改C:\Windows\System32\drivers\etc 下host文件 127.0.0.1 eureka6001.com (即把localhost改成eureka6001.com) 127.0.0.1 eureka6002.com 5.修改yml文件 server: port: 6002 eureka: #server: #enable-self-preservation: false #禁用自我保护机制 instance: hostname: eureka6002.com #eureka服务端的实例名称 client: register-with-eureka: false #false不向注册中心注册本身 fetch-registry: false #false表示本身就是注册中心,个人职责是维护服务实例,并不去检索服务 service-url: #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与eureka server交互的地址查询服务和注册服务都依赖这个地址 defaultZone: http://eureka6001.com:6001/eureka 4.修改要入住eureka的服务的yml配置文件 eureka: client: #将客户端注册金eureka服务列表内 service-url: defaultZone: http://eureka6001.com:6001/eureka/,http://eureka6002.com:6002/eureka/