Spring Cloud 入门 --- Eureka 服务注册中心【随笔】
Spring Cloud 微服务
版本选择
Spring Cloud 与 Spring Boot 需要选择匹配的版本;
https://start.spring.io/actuator/info
具体可参考官网:https://spring.io/
此次我们选择的版本是,spring boot 2.3.3.RELEASE + spring cloud Hoxton.SR8
示例:
父工程依赖:
我们可以将通用的 jar 包在父 pom 中声明并指定版本号。这样做的好处就是:如果有多个子项目都引用同一个依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或切换到另一个版本时,只需要在顶层的父容器里更新,而不需要一个一个子项目的修改;另外如果某个子项目需要另外的一个版本,只需要在自己的 pom 中声明 version 即可。
注意:
dependencyManagement
里只是声明依赖,并不会实现引入,因此子项目需要显示的声明所需要的依赖。- 如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖,并且没有指定具体版本,才会从父项目中继承该项,并且
version
和scope
都读取自父pom。- 如果子项目中指定了版本号,那么会使用子项目中指定的 jar 版本。
<!-- 统一管理jar包版本 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<spring.boot.version>2.3.3.RELEASE</spring.boot.version>
<spring.cloud.version>Hoxton.SR8</spring.cloud.version>
<junit.version>4.12</junit.version>
<log4j.version>1.2.17</log4j.version>
<lombok.version>1.18.12</lombok.version>
<mysql.version>8.0.19</mysql.version>
<druid.version>1.1.10</druid.version>
<mybatis.plus.version>3.3.2</mybatis.plus.version>
</properties>
<!-- 子模块继承后,提供作用:锁定版本 + 子modlue 不用写groupId 和 version -->
<dependencyManagement>
<dependencies>
<!--spring boot 2.3.3.RELEASE-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud Hoxton.SR8-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
<scope>runtime</scope>
</dependency>
<!-- druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</dependencyManagement>
服务注册与发现
Spring Cloud 入门 — Eureka 服务注册中心
简介
在微服务架构中往往会有一个注册中心,当服务器启动的时候,每个微服务都会把当前自己服务的信息,比如【服务Ip地址,端口等】以别名的方式注册到注册中心上。注册中心维护着服务别名与服务实例的对应关系【一个服务别名下可能有多个实例】,当有的服务需要调用其他服务时,可以以别名的方式去注册中心获取到服务实例【服务的实际地址:ip+port】,然后再实现本地 RPC 调用 RPC 远程调用框架。
Spring Cloud Netflix Eureka是Spring Cloud Netflix子项目的核心组件之一,主要用于微服务架构中的服务治理。Eureka包含两个组件:Eureka Server 和 Eureka Client
- Eureka Server 提供服务注册服务
各个服务节点通过配置启动后,会在
Eureka Server
中进行注册,这样Eureka Server
中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到。
- Eureka Client 通过注册中心进行访问
是一个 java 客户端,用于简化 Eureka Server 的交互,客户端同时也具备一个内置的、使用轮询 (round-robin) 负载算法的负载均衡器。在应用启动后,将会向 Eureka Server 发送心跳(默认周期为30秒)。如果Eureka Server 在多个心跳周期内没有接收到某个节点的心跳,Eureka Server 将会从服务注册表中把这个服务节点移除(默认90秒)
Eureka注册中心模块
创建注册中心模块
-
引入 pom 依赖
<!--引入Eureka server--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
-
添加 application.yml 配置
server: port: 7001 spring: application: # 指定服务名称 name: eureka-registery eureka: instance: #eureka 服务端的实例名称 hostname: localhost client: #表示不向注册中心注册自己 register-with-eureka: false #false 表示自己端就是注册中心 职责是维护服务实例 并不需要检索服务 fetch-registry: false service-url: # 设置与 Eureka Server 交互的地址 查询服务与注册服务都需要这个地址 defaultZone: http://localhost:7001/eureka
-
主启动:添加@EnableEurekaServer注解来启用Euerka注册中心功能
@SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
测试
使用 IDEA【2020.2】 的 Run Dashboard来运行SpringCloud应用
-
快捷键 Alt + 8 或 View --> Tool Windows —> Services
-
或者将以下这段配置考入到 .idea 目录下的 workspace.xml 中
<component name="RunDashboard"> <option name="configurationTypes"> <set> <option value="Application" /> <option value="SpringBootApplicationConfigurationType" /> </set> </option> </component>
启动服务,显示如下图:
访问服务;如我的:http://localhost:7001/ ,可以看到注册中心已经创建成功
集群
- 修改配置
在生产环境中为了实现高可用,一般注册中心都是采用集群搭建的;如果是单机的,一旦注册中心出了点问题会影响整个应用系统。所有我们需要搭建注册中心集群【下面演示搭建两个注册中心,实际生产中最好大于3个节点】。
修改 原有注册中心
application.yml
配置名为application-one.yml
并复制一份修改名称为application-two.yml
,如下图:
修改 yml 配置文件内容
application-one.yml
server:
port: 7001
spring:
# 指定服务名称
application:
name: eureka-registery
eureka:
instance:
#eureka 服务端的实例名称
hostname: eureka7001.com
client:
#表示不向注册中心注册自己
register-with-eureka: false
#false 表示自己端就是注册中心 职责是维护服务实例 并不需要检索服务
fetch-registry: false
service-url:
# 设置与 Eureka Server 交互的地址 查询服务与注册服务都需要这个地址
defaultZone: http://eureka7002.com:7002/eureka
application-two.yml
server:
port: 7002
spring:
# 指定服务名称
application:
name: eureka-registery
eureka:
instance:
#eureka 服务端的实例名称
hostname: eureka7002.com
client:
#表示不向注册中心注册自己
register-with-eureka: false
#false 表示自己端就是注册中心 职责是维护服务实例 并不需要检索服务
fetch-registry: false
service-url:
# 设置与 Eureka Server 交互的地址 查询服务与注册服务都需要这个地址
defaultZone: http://eureka7001.com:7001/eureka
这里我们通过两个注册中心互相注册,搭建了注册中心的双节点集群,由于
defaultZone
使用了域名,所以还需在本机的host文件中配置一下【如果有多个节点,则defaultZone
中需要配置除了自己外的其它所有节点,中间用 “,” 号分隔,如:http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka,http://eureka7004.com:7004/eureka 这个是配置 eureka7001.com 且节点为4个时的配置】。修改本地 host 文件,目录为 C:\Windows\System32\drivers\etc ,首先修改文件的属性去掉
只读
的勾选,在编辑 host 文件,添加如下配置:
.
修改完成后,记住将 host 文件属性再改为
只读
,防止被修改;以上的配置主要作用是:当访问 eureka7001.com 与 eureka7002.com 会被代理到 127.0.0.1 的IP地址【也就是本地】。
- 启动服务
在 idea 中我们可以通过 copy 服务并指定 配置文件来将同一个应用启动为两个服务,具体如下:
- 修改原有的服务,并指定运行的配置文件【主要只要填写
application-
后面的就行了】
- copy 修改后的服务,并修改名称 与 运行的配置文件
- 然后启动这两个服务,如下图
- 浏览器访问【鼠标点击显示的端口即可(7001、7002)】,出现如下图结果,则配置成功;其中
DS Replicas
为集群中其它的节点。
Eureka服务提供者模块
创建服务提供者模块
-
引入 pom 依赖
<!-- 引入 eureka client --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
-
添加 application.yml 配置
server: port: 8001 spring: application: name: payment-provider eureka: client: #表示是否将自己注册进 Eureka Server服务 默认为true register-with-eureka: true #f是否从Eureka Server抓取已有的注册信息,默认是true。单点无所谓,集群必需设置为true才能配合ribbon使用负载均衡 fetch-registry: true service-url: # 设置与 Eureka Server 交互的地址 查询服务与注册服务都需要这个地址 #单机 # defaultZone: http://localhost:7001/eureka #集群 defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka instance: instance-id: payment8001 ## 当调用getHostname获取实例的hostname时,返回ip而不是host名 prefer-ip-address: true
-
主启动:添加@EnableDiscoveryClient注解表明是一个Eureka客户端
@SpringBootApplication @EnableEurekaClient @EnableDiscoveryClient public class PaymentProviderApplication { public static void main(String[] args) { SpringApplication.run(PaymentProviderApplication.class, args); } }
-
业务类
为了方便测试,我们这里就不写 service dao 层了,直接模拟几条数据。
@RestController public class PaymentController { @Value("${server.port}") private String serverPort; public static HashMap<Long, Payment> hashMap = new HashMap<>(); static { hashMap.put(1L, new Payment(1L, "link-bd6fb5d9fc03459e885dfc2f4f74c239")); hashMap.put(2L, new Payment(2L, "link-a588ec6a216f43baa573feb64e0d0dc4")); hashMap.put(3L, new Payment(3L, "link-2f9342d7eb8940269bd9e2260cff227d")); } @GetMapping("/paymentSQL/{id}") public CommonResult<Payment> paymentSql(@PathVariable("id") Long id) { Payment payment = hashMap.get(id); CommonResult<Payment> result = new CommonResult(200,"form myql serverPort: "+serverPort, payment); return result; } }
测试
启动服务,刷新注册中心即可看到该服务已经注册到了 注册中心中
此时我们访问 http://localhost:8001/paymentSQL/1 ,结果如下:可以看到能够正常访问
集群
为了查看到负载均衡【默认轮询】的效果我们需要集群 服务提供者,和集群注册中心的方法类似:
修改 原有服务提供者
application.yml
配置名为application-one.yml
并复制一份修改名称为application-two.yml
,具体配置如下:
application-one.yml
server:
port: 8001
spring:
application:
name: payment-provider
eureka:
client:
#表示是否将自己注册进 Eureka Server服务 默认为true
register-with-eureka: true
#f是否从Eureka Server抓取已有的注册信息,默认是true。单点无所谓,集群必需设置为true才能配合ribbon使用负载均衡
fetch-registry: true
service-url: # 设置与 Eureka Server 交互的地址 查询服务与注册服务都需要这个地址
# defaultZone: http://localhost:7001/eureka
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
instance:
instance-id: payment8001
## 当调用getHostname获取实例的hostname时,返回ip而不是host名
prefer-ip-address: true
application-two.yml
server:
port: 8002
spring:
application:
name: payment-provider
eureka:
client:
#表示是否将自己注册进 Eureka Server服务 默认为true
register-with-eureka: true
#f是否从Eureka Server抓取已有的注册信息,默认是true。单点无所谓,集群必需设置为true才能配合ribbon使用负载均衡
fetch-registry: true
service-url: # 设置与 Eureka Server 交互的地址 查询服务与注册服务都需要这个地址
# defaultZone: http://localhost:7001/eureka
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
instance:
# 自定义节点名称
instance-id: payment8002
## 当调用getHostname获取实例的hostname时,返回ip而不是host名
prefer-ip-address: true
修改原有的服务,并指定运行的配置文件
copy 修改后的服务,并修改名称 与 运行的配置文件
启动这两个服务提供者,在 Eureka Server 即可看到服务注册信息,如下图:
测试:访问 http://localhost:8001/paymentSQL/1 与 http://localhost:8002/paymentSQL/1 可以看到访问正常。
[
Eureka服务消费者模块
创建消费者模块
-
引入 pom 依赖
<!-- 引入 eureka client --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
-
添加 application.yml 配置文件
server: port: 80 spring: application: name: order-consumer eureka: client: #表示是否将自己注册进 Eureka Server服务 默认为true register-with-eureka: true #f是否从Eureka Server抓取已有的注册信息,默认是true。单点无所谓,集群必需设置为true才能配合ribbon使用负载均衡 fetch-registry: true service-url: # 设置与 Eureka Server 交互的地址 查询服务与注册服务都需要这个地址 defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka instance: instance-id: order80 prefer-ip-address: true
-
主启动
@SpringBootApplication @EnableEurekaClient @EnableDiscoveryClient public class OrderConsumerApplication { public static void main(String[] args) { SpringApplication.run(OrderConsumerApplication.class, args); } }
-
添加配置类注入RestTemplate 并指定负载均衡规则【默认轮询】
@Configuration public class ApplicationContextConfig { @Bean @LoadBalanced //赋予默认的负载均衡规则 public RestTemplate restTemplate(){ return new RestTemplate(); } }
-
业务类
@RestController @Slf4j public class OrderController { /** * payment-provider:服务别名 */ public static final String PAYMENT_URL = "http://PAYMENT-PROVIDER"; @Resource private RestTemplate restTemplate; @GetMapping("/consumer/paymentSql/{id}") public CommonResult getPayment(@PathVariable("id") Long id){ return restTemplate.getForObject(PAYMENT_URL + "/paymentSQL/" + id, CommonResult.class); } }
测试
启动服务,我们可以看到服务已经注册到了 Eureka 注册中心中,如下图:
访问:http://localhost/consumer/paymentSql/1 ,多访问几次,我们可以看到默认使用
轮询
的负载均衡策略,轮流的访问 8001 与 8002 服务,如下图:
Eureka 的自我保护机制
概述
保护模式主要用于一组客户端和 Eureka Server 之间存在网络分区场景下的保护。一旦进入保护模式,
Eureka Server 将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。
一句话:某时某刻一个微服务不可用了,Eureka 不会立即清理,依旧会对该微服务的信息进行保存。如果 Eureka Server 的首页看到了如下这段提示,则说明 Eureka 进入了保护模式。
为什么会产生 Eureka 自我保护机制?
为了防止 EurekaClient 可以正常运行,但是与 EurekaServer 网络不通的情况下,EurekaServer 不会立刻将 EurekaClient 服务剔除。
什么是自我保护模式?
默认情况下,如果 EurekaServer 在一定时间内没有接收到某个微服务实例的心跳,EurekaServer 将会注销实例(默认90秒)。但是当网络分区故障发生(延时、卡顿、拥挤)时,微服务与 EurekaServer 之间无法正常通信,以上行为可能变得非常危险了—因为微服务本身是健康的,此时本不应该注销这个服务。Eureka 通过 “自我保护模式” 来解决这个问题—当 EurekaServer 节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。
自我保护机制:默认情况下 EurekaClient 会定时向 EurekaServer 端发送心跳包,如果 EurekaServer 在一定时间内(默认90秒)没有收到心跳包,就会注销服务;但是在在短时间内 (90秒) 内丢失大量服务实例的心跳时,Eureka 会开启自我保护机制,不会剔除服务;这种现象主要是为了应对 EurekaServer 网络不通时,接收不到 EurekaClient 客户端发送的心跳时的场景【即客户端正常,但是注册中心网络异常或网络波动大导致的通讯问题】;
它的设计哲学就是:宁可保留错误的服务注册信息,也不盲目注销任何可能健康的服务实例。
综上:自我保护模式是一种应对网络异常的安全措施。它的架构哲学是宁可同时保留所有微服务(健康的服务和不健康的服务)也不盲目的注销任何健康的服务。使用自我保护模式,可以让 Eureka 集群更加的健壮、稳定。
关闭 Eureka 的自我保护机制
注册中心修改配置【注意两个都要改,这里给出了7001的示例】
eureka:
instance:
#eureka 服务端的实例名称
hostname: eureka7001.com
client:
#表示不向注册中心注册自己
register-with-eureka: false
#false 表示自己端就是注册中心 职责是维护服务实例 并不需要检索服务
fetch-registry: false
service-url:
# 设置与 Eureka Server 交互的地址 查询服务与注册服务都需要这个地址
defaultZone: http://eureka7002.com:7002/eureka
server:
#关闭自我保护机制,保证不可用的服务被及时剔除
enable-self-preservation: false
#剔除的间隔时间 单位毫秒(默认90秒)
eviction-interval-timer-in-ms: 2000
服务提供者修改配置【注意两个都要改,这里给出了8001的示例】
eureka:
client:
#表示是否将自己注册进 Eureka Server服务 默认为true
register-with-eureka: true
#f是否从Eureka Server抓取已有的注册信息,默认是true。单点无所谓,集群必需设置为true才能配合ribbon使用负载均衡
fetch-registry: true
service-url: # 设置与 Eureka Server 交互的地址 查询服务与注册服务都需要这个地址
# defaultZone: http://localhost:7001/eureka
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
instance:
instance-id: payment8001
## 当调用getHostname获取实例的hostname时,返回ip而不是host名
prefer-ip-address: true
# Eureka客户端向服务端发送心跳的时间间隔,单位秒(默认30秒)
lease-renewal-interval-in-seconds: 10
# Eureka服务端在收到最后一次心跳后的等待时间上限,单位秒(默认90秒)
lease-expiration-duration-in-seconds: 30
修改完成后,重启服务;出现如下提示,则自我保护机制关闭成功。
给Eureka注册中心添加认证
修改注册中心
添加 pom 依赖
<!--security-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
修改 yml 配置【两个都要改】
application-one.yml
server:
port: 7001
spring:
# 指定服务名称
application:
name: eureka-registery
security:
# 配置spring security登录用户名和密码
user:
name: akieay
password: 1qaz2wsx
eureka:
instance:
#eureka 服务端的实例名称
hostname: eureka7001.com
client:
#表示不向注册中心注册自己
register-with-eureka: false
#false 表示自己端就是注册中心 职责是维护服务实例 并不需要检索服务
fetch-registry: false
service-url:
# 设置与 Eureka Server 交互的地址 查询服务与注册服务都需要这个地址
defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka7002.com:7002/eureka
server:
#关闭自我保护机制,保证不可用的服务被及时剔除
enable-self-preservation: false
#剔除的间隔时间 单位毫秒(默认90秒)
eviction-interval-timer-in-ms: 2000
application-two.yml
server:
port: 7002
spring:
# 指定服务名称
application:
name: eureka-registery
security:
# 配置spring security登录用户名和密码
user:
name: akieay
password: 1qaz2wsx
eureka:
instance:
#eureka 服务端的实例名称
hostname: eureka7002.com
client:
#表示不向注册中心注册自己
register-with-eureka: false
#false 表示自己端就是注册中心 职责是维护服务实例 并不需要检索服务
fetch-registry: false
service-url:
# 设置与 Eureka Server 交互的地址 查询服务与注册服务都需要这个地址
defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka7001.com:7001/eureka
server:
#关闭自我保护机制,保证不可用的服务被及时剔除
enable-self-preservation: false
#剔除的间隔时间 单位毫秒(默认90秒)
eviction-interval-timer-in-ms: 2000
添加配置文件 WebSecurityConfig
拦截所有的 /eureka/
开头的请求
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/actuator/**").permitAll()
.anyRequest()
.authenticated().and().httpBasic();
}
}
重启注册中心并访问,这时可以看到需要登录了。
修改 Eureka 客户端模块
由于注册中心添加了认证,这时注册服务需要添加用户名与密码认证才能将服务注册到 eureka 注册中心中,所以需要修改 Eureka 客户端【包含 服务提供者 和 服务消费者,因为它们都是 EurekaClien】。
配置文件中需要修改注册中心地址,格式为:
http:http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:${server.port}/eureka
服务提供者修改 yml 配置【主要是修改 defaultZone,两个文件的改动都一样,这里给出其中一个 】
spring:
application:
name: payment-provider
security:
# 配置spring security登录用户名和密码
user:
name: akieay
password: 1qaz2wsx
eureka:
client:
#表示是否将自己注册进 Eureka Server服务 默认为true
register-with-eureka: true
#f是否从Eureka Server抓取已有的注册信息,默认是true。单点无所谓,集群必需设置为true才能配合ribbon使用负载均衡
fetch-registry: true
service-url: # 设置与 Eureka Server 交互的地址 查询服务与注册服务都需要这个地址
# defaultZone: http://localhost:7001/eureka
defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka7001.com:7001/eureka,http://${spring.security.user.name}:${spring.security.user.password}@eureka7002.com:7002/eureka
instance:
instance-id: payment8001
## 当调用getHostname获取实例的hostname时,返回ip而不是host名
prefer-ip-address: true
# Eureka客户端向服务端发送心跳的时间间隔,单位秒(默认30秒)
lease-renewal-interval-in-seconds: 10
# Eureka服务端在收到最后一次心跳后的等待时间上限,单位秒(默认90秒)
lease-expiration-duration-in-seconds: 30
服务消费者 yml 配置修改
spring:
application:
name: order-consumer
security:
# 配置spring security登录用户名和密码
user:
name: akieay
password: 1qaz2wsx
eureka:
client:
#表示是否将自己注册进 Eureka Server服务 默认为true
register-with-eureka: true
#f是否从Eureka Server抓取已有的注册信息,默认是true。单点无所谓,集群必需设置为true才能配合ribbon使用负载均衡
fetch-registry: true
service-url:
# 设置与 Eureka Server 交互的地址 查询服务与注册服务都需要这个地址
defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka7001.com:7001/eureka,http://${spring.security.user.name}:${spring.security.user.password}@eureka7002.com:7002/eureka
instance:
instance-id: order80
prefer-ip-address: true
修改完成后,重启服务,登录 Eureka 注册中心,即可看到服务已经注册到了注册中心,也能够正常调用。
Eureka的常用配置
eureka:
client: #eureka客户端配置
register-with-eureka: true #是否将自己注册到eureka服务端上去
fetch-registry: true #是否获取eureka服务端上注册的服务列表
service-url:
defaultZone: http://localhost:8001/eureka/ # 指定注册中心地址
enabled: true # 启用eureka客户端
registry-fetch-interval-seconds: 30 #定义去eureka服务端获取服务列表的时间间隔
instance: #eureka客户端实例配置
instance-id: payment8001 #客户端id
hostname: localhost #服务主机名称
prefer-ip-address: false #是否优先使用ip来作为主机名
lease-renewal-interval-in-seconds: 30 #Eureka客户端向服务端发送心跳的时间间隔,单位秒(默认30秒)
lease-expiration-duration-in-seconds: 90 #Eureka服务端在收到最后一次心跳后的等待时间上限,单位秒(默认90秒)
metadata-map:
zone: shenzhen #所在区域
server: #eureka服务端配置
enable-self-preservation: false #关闭eureka服务端的保护机制
eviction-interval-timer-in-ms: 2000 #剔除的间隔时间 单位毫秒(默认90秒)
上一篇: P1075 质因数分解 题解
下一篇: 基础练习 报时助手
推荐阅读
-
spring cloud将spring boot服务注册到Eureka Server上的方法
-
spring-cloud入门之eureka-server(服务发现)
-
spring-cloud入门之eureka-client(服务注册)
-
spring cloud将spring boot服务注册到Eureka Server上的方法
-
spring cloud实现Eureka注册中心的HA的方法
-
Spring cloud Eureka注册中心搭建的方法
-
Spring-Cloud Eureka注册中心实现高可用搭建
-
spring-cloud入门之eureka-server(服务发现)
-
spring-cloud入门之eureka-client(服务注册)
-
SpringCloud之服务注册与发现Spring Cloud Eureka实例代码