SpringCloud Eureka服务注册与发现
Posted yufudiaodayu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud Eureka服务注册与发现相关的知识,希望对你有一定的参考价值。
首先Eureka是什么?
Eureka是Netflix的一个子模块,也是核心模块之一,Eureka是一个基于REST的服务,用于定位服务,以实现云端中层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,儿不需要修改服务调用的配置文件了。功能类似于dubbo的注册中心,比如Zookeeper。
Eureka主管服务的注册与发现。
Netflix在设计时遵守ap原则即:高可用高容错
Eureka的注册:
要将服务注册到Eureka上
1.在pom.xml里加入
<!--将微服务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注解
Eureka的自我保护:
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/
以上是关于SpringCloud Eureka服务注册与发现的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloud创建Eureka Client服务注册