1. eureka运行流程
2. 接口和操作
2.1 查看服务实例信息
-
接口
[GET] /eureka/apps/{appName} -
例子
[GET] http://localhost:9700/eureka/apps/EUREKA-CLIENT-PRODVIDER -
结果
<application> <name>SERVICE-PRODVIDER1</name> ## 服务名字 <instance> <instanceId>192.168.0.106:service-prodvider1:8762</instanceId> ## 实例ID <hostName>192.168.0.106</hostName> <app>SERVICE-PRODVIDER1</app> <ipAddr>192.168.0.106</ipAddr> <status>UP</status> <overriddenstatus>UNKNOWN</overriddenstatus> <port enabled="true">8762</port> <securePort enabled="false">443</securePort> <countryId>1</countryId> ....
2.2 下线操作
2.2.1 客户端直接停止服务
-
下线
这种方式没有办法立刻让注册中心感知到,需要注册中心等待某一时间没有收到心跳之后,才将这个服务从注册列表中移除。 -
恢复上线
此种方式下对应上线操作,就是重新部署。
2.2.2 客户端通知Eureka下线
- 下线
使用actuator由客户端发起下线。调用客户端actuator提供的/shutdown/接口。执行完此操作之后,不仅停止了服务,还从eureka下线了。- 在项目中引用actuator:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
- 配置文件中添加
#启用shutdown endpoints: shutdown: enabled: true #不进行密码验证(线上环境应该设置为true) management: security: enabled: false
- 通过POST方式执行实例的http://localhost:8765/shutdown。在postman执行结果如下:
- 在项目中引用actuator:
- 上线
重新部署服务
2.2.3 Eureka的delete操作
-
下线
- 接口
[DELETE] /eureka/apps/{appName}/{instanceID} - 例子
参数中appName和instaceId可以由查看服务实例信息接口获取,也可以通过erueka admin获取,如下:
注意:
Eureka客户端每隔一段时间(默认30秒)会发送一次心跳到注册中心。在通过delte方式下线一个服务时,如果没有停掉的该服务,那么该服务很快就又会注册到Eureka。 所以在使用这种方式时,可以先kill掉服务,然后再执行delete操作,从注册中心移除改服务。
- 接口
-
恢复上线
在此种方式下就是重新部署服务就可以让服务重新上线。
2.2.4 设置Eureka的服务实例状态
有时候我们下线服务实例之后,需要在不重新部署服务实例的情况下,重新上线服务实例。此时就使用这种方式。
- 下线
- 接口
[PUT] /eureka/apps/{appName}/{instanceId}/status?value=OUT_OF_SERVICE - 实例
通过postman使用 PUT方法 访问 http://localhost:8761/eureka/apps/SERVICE-PRODVIDER1/192.168.0.106:service-prodvider1:8762/status?value=OUT_OF_SERVICE,如下:
执行结果如下图,改实例状态变为OUT_OF_SERVICE
- 接口
- 恢复上线
- 接口
[DELETE] /eureka/apps/{appName}/{instanceId}/status?value=UP - 实例
通过postman使用 DELETE方法 访问 http://localhost:8761/eureka/apps/SERVICE-PRODVIDER1/192.168.0.106:service-prodvider1:8762/status?value=UP
执行后的结果为,服务实例重新上线,状态为”UP”
2.2.5 一个部署流程
比较优雅的一种服务部署流程方式有:
- 接口
**方式1 :**可以通过“设置Eureka的服务实例状态”下线机器;执行部署脚本:kill 服务、重新部署服务;再通过“设置Eureka的服务实例状态”上线此实例。
方式2: 先调用实例的/shutdown接口,然后重新部署该服务。
2.3 接口集合
来源于官网的翻译: https://github.com/Netflix/eureka/wiki/Eureka-REST-operations
appID
是应用程序的名称,instanceID
是与实例关联的唯一 ID。在 AWS 云中,instanceID
是实例的实例 ID,在其他数据中心,它是实例的主机名。
操作 | 接口地址 | 说明 |
---|---|---|
注册新的应用实例 | POST /eureka/v2/apps/appID | 输入:JSON/XML;有效返回HTTP Code = 204 ,表示成功。 |
注销应用实例 | DELETE /eureka/v2/apps/appID/instanceID | HTTP Code = 200 ,表示成功。 |
发送应用实例心跳 | PUT /eureka/v2/apps/appID/instanceID | HTTP Code = 200 ,表示成功;HTTP Code = 404 ,表示instanceID不存在。 |
查询所有实例 | GET /eureka/v2/apps | HTTP Code = 200 ,表示成功;输出:JSON/XML。 |
查询特定应用下的所有实例 | GET /eureka/v2/apps/appID | HTTP Code = 200 ,表示成功;输出:JSON/XML。 |
查询特定应用下的特定实例 | GET /eureka/v2/apps/appID/instanceID | HTTP Code = 200 ,表示成功;输出:JSON/XML。 |
查询特定实例 | GET /eureka/v2/instances/instanceID | HTTP Code = 200 ,表示成功;输出:JSON/XML。 |
停止实例服务 | PUT /eureka/v2/apps/appID/instanceID/status?value=OUT_OF_SERVICE | HTTP Code = 200 ,表示成功;HTTP Code = 500 ,表示操作失败。 |
将实例移回服务(删除覆盖) | DELETE /eureka/v2/apps/appID/instanceID/status?value=UP (value=UP 是可选的,它用作:由于删除覆盖而导致的回退状态) | HTTP Code = 200 ,表示成功;HTTP Code = 500 ,表示操作失败。 |
更新元数据 | PUT /eureka/v2/apps/appID/instanceID/metadata?key=value | HTTP Code = 200 ,表示成功;HTTP Code = 500 ,表示操作失败。 |
查询特定vip地址下的所有实例 | GET /eureka/v2/vips/vipAddress | HTTP Code = 200 ,表示成功,输出:JSON/XML;HTTP Code = 404 ,表示vip地址不存在。 |
查询特定安全 vip 地址下的所有实例 | GET /eureka/v2/svips/svipAddress | HTTP Code = 200 ,表示成功,输出:JSON/XML;HTTP Code = 404 ,表示vip地址不存在。 |
3. 配置详解
3.1 Eureka Client 配置项(eureka.client.*)
org.springframework.cloud.netflix.eureka.EurekaClientConfigBean
参数名称 | 说明 | 默认值 |
---|---|---|
eureka.client.enabled | 用于指示Eureka客户端已启用的标志 | true |
eureka.client.registry-fetch-interval-seconds | 指示从eureka服务器获取注册表信息的频率(s) | 30 |
eureka.client.instance-info-replication-interval-seconds | 更新实例信息的变化到Eureka服务端的间隔时间(s) | 30 |
eureka.client.initial-instance-info-replication-interval-seconds | 初始化实例信息到Eureka服务端的间隔时间(s) | 40 |
eureka.client.eureka-service-url-poll-interval-seconds | 询问Eureka Server信息变化的时间间隔(s) | 300 |
eureka.client.eureka-server-read-timeout-seconds | 读取Eureka Server 超时时间(s) | 8 |
eureka.client.eureka-server-connect-timeout-seconds | 连接Eureka Server 超时时间(s) | 5 |
eureka.client.eureka-server-total-connections | 获取从eureka客户端到所有eureka服务器的连接总数 | 200 |
eureka.client.eureka-server-total-connections-per-host | 获取从eureka客户端到eureka服务器主机允许的连接总数 | 50 |
eureka.client.eureka-connection-idle-timeout-seconds | 连接到 Eureka Server 空闲连接的超时时间(s) | 30 |
eureka.client.registry-refresh-single-vip-address | 指示客户端是否仅对单个VIP的注册表信息感兴趣 | null |
eureka.client.heartbeat-executor-thread-pool-size | 心跳保持线程池初始化线程数,默认2个 | 2 |
eureka.client.heartbeat-executor-exponential-back-off-bound | 心跳超时重试延迟时间的最大乘数值 | 10 |
eureka.client.serviceUrl.defaultZone | 可用区域映射到与eureka服务器通信的完全限定URL列表。每个值可以是单个URL或逗号分隔的备用位置列表。(http:// e u r e k a . i n s t a n c e . h o s t n a m e : {eureka.instance.hostname}: eureka.instance.hostname:{server.port}/eureka/) | |
eureka.client.use-dns-for-fetching-service-urls | 指示eureka客户端是否应使用DNS机制来获取要与之通信的eureka服务器列表。当DNS名称更新为具有其他服务器时,eureka客户端轮询eurekaServiceUrlPollIntervalSeconds中指定的信息后立即使用该信息。 | false |
eureka.client.register-with-eureka | 指示此实例是否应将其信息注册到eureka服务器以供其他服务发现 | false |
eureka.client.prefer-same-zone-eureka | 实例是否使用同一zone里的eureka服务器,默认为true,理想状态下,eureka客户端与服务端是在同一zone下 | true |
eureka.client.log-delta-diff | 是否记录eureka服务器和客户端之间在注册表的信息方面的差异 | false |
eureka.client.disable-delta | 指示eureka客户端是否禁用增量提取 | false |
eureka.client.fetch-remote-regions-registry | 逗号分隔的区域列表,提取eureka注册表信息 | |
eureka.client.on-demand-update-status-change | 客户端的状态更新到远程服务器上 | true |
eureka.client.allow-redirects | 指示服务器是否可以将客户端请求重定向到备份服务器/集群。如果设置为false,则服务器将直接处理请求。如果设置为true,则可以将HTTP重定向发送到具有新服务器位置的客户端。 | false |
eureka.client.availability-zones.* | 获取此实例所在区域的可用区域列表(在AWS数据中心中使用)。更改在运行时在registryFetchIntervalSeconds指定的下一个注册表获取周期生效。 | |
eureka.client.backup-registry-impl | 获取实现BackupRegistry的实现的名称,该实现仅在eureka客户端启动时第一次作为后备选项获取注册表信息。 对于需要额外的注册表信息弹性的应用程序,可能需要这样做,否则它将无法运行。 | |
eureka.client.cache-refresh-executor-exponential-back-off-bound | 在发生一系列超时的情况下,它是重试延迟的最大乘数值。 | 10 |
eureka.client.cache-refresh-executor-thread-pool-size | 缓存刷新线程池初始化线程数量 | 2 |
eureka.client.client-data-accept | 客户端数据接收的名称 | full |
eureka.client.decoder-name | 解码器名称 | |
eureka.client.dollar-replacement | eureka服务器序列化/反序列化的信息中获取“$”符号的替换字符串。 | “_-” |
eureka.client.encoder-name | 编码器名称 | |
eureka.client.escape-char-replacement | eureka服务器序列化/反序列化的信息中获取“_”符号的的替换字符串 | “__“ |
eureka.client.eureka-server-d-n-s-name | 获取要查询的DNS名称来获得eureka服务器,此配置只有在eureka服务器ip地址列表是在DNS中才会用到。 | null |
eureka.client.eureka-server-port | 获取eureka服务器的端口,此配置只有在eureka服务器ip地址列表是在DNS中才会用到 | null |
eureka.client.eureka-server-u-r-l-context | 表示eureka注册中心的路径,如果配置为eureka,则为http://ip:port/eureka/,在eureka的配置文件中加入此配置表示eureka作为客户端向注册中心注册,从而构成eureka集群。此配置只有在eureka服务器ip地址列表是在DNS中才会用到 | null |
eureka.client.fetch-registry | 客户端是否获取eureka服务器注册表上的注册信息 | true |
eureka.client.filter-only-up-instances | 是否过滤掉非up实例 | true |
eureka.client.g-zip-content | 当服务端支持压缩的情况下,是否支持从服务端获取的信息进行压缩 | true |
eureka.client.property-resolver | 属性解析器 | |
eureka.client.proxy-host | 获取eureka server 的代理主机名 | null |
eureka.client.proxy-password | 获取eureka server 的代理主机密码 | null |
eureka.client.proxy-port | 获取eureka server 的代理主机端口 | null |
eureka.client.proxy-user-name | 获取eureka server 的代理用户名 | null |
eureka.client.region | 获取此实例所在的区域(在AWS数据中心中使用) | use-east-1 |
eureka.client.should-enforce-registration-at-init | client 在初始化阶段是否强行注册到注册中心 | false |
eureka.client.should-unregister-on-shutdown | client在shutdown情况下,是否显示从注册中心注销 | true |
3.2 服务实例配置项(eureka.instance.*)
org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean
参数名称 | 说明 | 默认值 |
---|---|---|
eureka.instance.appname | 注册到注册中心的应用名称 | unknown |
eureka.instance.a-s-g-name | 注册到注册中心的应用所属分组名称(AWS服务器) | null |
eureka.instance.app-group-name | 注册到注册中心的应用所属分组名称 | null |
eureka.instance.data-center-info | 指定服务实例所属数据中心 | |
eureka.instance.instance-enabled-onit | 指示是否应在eureka注册后立即启用实例以获取流量 | false |
eureka.instance.non-secure-port | http通信端口 | 80 |
eureka.instance.non-secure-port-enabled | 是否启用HTTP通信端口 | true |
eureka.instance.secure-port | HTTPS通信端口 | 443 |
eureka.instance.secure-port-enabled | 是否启用HTTPS通信端口 | false |
eureka.instance.secure-virtual-host-name | 服务实例安全主机名称(HTTPS) | unknown |
eureka.instance.virtual-host-name | 该服务实例非安全注解名称(HTTP) | unknown |
eureka.instance.secure-health-check-url | 该服务实例安全健康检查地址(URL),绝对地址 | |
eureka.instance.lease-renewal-interval-in-seconds | 该服务实例向注册中心发送心跳间隔(s) | 30 |
eureka.instance.lease-expiration-duration-in-seconds | 指示eureka服务器在删除此实例之前收到最后一次心跳之后等待的时间(s) | 90 |
eureka.instance.metadata-map.* | ||
eureka.instance.ip-address | 该服务实例的IP地址 | null |
eureka.instance.prefer-ip-address | 是否优先使用服务实例的IP地址,相较于hostname | false |
eureka.instance.status-page-url | 该服务实例的状态检查地址(url),绝对地址 | null |
eureka.instance.status-page-url-path | 该服务实例的状态检查地址,相对地址 | /actuator/info |
eureka.instance.home-page-url | 该服务实例的主页地址(url),绝对地址 | |
eureka.instance.home-page-url-path | 该服务实例的主页地址,相对地址 | / |
eureka.instance.health-check-url | 该服务实例的健康检查地址(url),绝对地址 | null |
eureka.instance.health-check-url-path | 该服务实例的健康检查地址,相对地址 | /actuator/health |
eureka.instance.instance-id | 该服务实例在注册中心的唯一实例ID | |
eureka.instance.hostname | 该服务实例所在主机名 | |
eureka.instance.namespace | 获取用于查找属性的命名空间。 在Spring Cloud中被忽略。 | eureka |
eureka.instance.environment | 该服务实例环境配置 | |
eureka.instance.default-address-resolution-order | 默认地址解析顺序 | |
eureka.instance.initial-status | 该服务实例注册到Eureka Server 的初始状态 | up |
eureka.instance.registry.default-open-for-traffic-count | 【Eureka Server 端属性】默认开启通信的数量 | 1 |
eureka.instance.registry.expected-number-of-renews-per-min | 【Eureka Server 端属性】每分钟续约次数 | 1 |
3.3 Eureka Server 配置项(eureka.server.*)
org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean
参数名称 | 说明 | 默认值 |
---|---|---|
eureka.server.enable-self-preservation | 启用自我保护机制 | true |
eureka.server.eviction-interval-timer-in-ms | 清除无效服务实例的时间间隔(ms) | 60000(1分钟) |
eureka.server.delta-retention-timer-interval-in-ms | 清理无效增量信息的时间间隔(ms) | 30000(30秒) |
eureka.server.disable-delta | 禁用增量获取服务实例信息 | false |
eureka.server.log-identity-headers | 是否记录登录日志 | true |
eureka.server.rate-limiter-burst-size | 限流大小 | 10 |
eureka.server.rate-limiter-enabled | 是否启用限流 | false |
eureka.server.rate-limiter-full-fetch-average-rate | 平均请求速率 | 100 |
eureka.server.rate-limiter-throttle-standard-clients | 是否对标准客户端进行限流 | false |
eureka.server.rate-limiter-registry-fetch-average-rate | 服务注册与拉取的平均速率 | 500 |
eureka.server.rate-limiter-privileged-clients | 信任的客户端列表 | |
eureka.server.renewal-percent-threshold | 15分钟内续约服务的比例小于0.85,则开启自我保护机制,再此期间不会清除已注册的任何服务(即便是无效服务) | 0.85 |
eureka.server.renewal-threshold-update-interval-ms | 更新续约阈值的间隔(分钟),默认15分钟 | 15 |
eureka.server.response-cache-auto-expiration-in-seconds | 注册信息缓存有效时长(s),默认180秒 | 180 |
eureka.server.response-cache-update-interval-ms | 注册信息缓存更新间隔(s),默认30秒 | 30 |
eureka.server.retention-time-in-m-s-in-delta-queue | 保留增量信息时长(分钟),默认3分钟 | 3 |
eureka.server.sync-when-timestamp-differs | 当时间戳不一致时,是否进行同步 | true |
eureka.server.use-read-only-response-cache | 是否使用只读缓存策略 | true |
自定义工具设置 | ||
eureka.server.json-codec-name | Json编解码器名称 | |
eureka.server.property-resolver | 属性解析器名称 | |
eureka.server.xml-codec-name | Xml编解码器名称 | |
Eureka Server 集群配置 | ||
eureka.server.enable-replicated-request-compression | 复制数据请求时,数据是否压缩 | false |
ureka.server.batch-replication | 节点之间数据复制是否采用批处理 | false |
eureka.server.max-elements-in-peer-replication-pool | 备份池最大备份事件数量,默认1000 | 1000 |
eureka.server.max-elements-in-status-replication-pool | 状态备份池最大备份事件数量,默认1000 | 1000 |
eureka.server.max-idle-thread-age-in-minutes-for-peer-replication | 节点之间信息同步线程最大空闲时间(分钟) | 15 |
eureka.server.max-idle-thread-in-minutes-age-for-status-replication | 节点之间状态同步线程最大空闲时间(分钟) | 10 |
eureka.server.max-threads-for-peer-replication | 节点之间信息同步最大线程数量 | 20 |
eureka.server.max-threads-for-status-replication | 节点之间状态同步最大线程数量 | 1 |
eureka.server.max-time-for-replication | 节点之间信息复制最大通信时长(ms) | 30000 |
eureka.server.min-available-instances-for-peer-replication | 集群中服务实例最小数量,-1 表示单节点 | -1 |
eureka.server.min-threads-for-peer-replication | 节点之间信息复制最小线程数量 | 5 |
eureka.server.min-threads-for-status-replication | 节点之间信息状态同步最小线程数量 | 1 |
eureka.server.number-of-replication-retries | 节点之间数据复制时,可重试次数 | 5 |
eureka.server.peer-eureka-nodes-update-interval-ms | 节点更新数据间隔时长(分钟) | 10 |
eureka.server.peer-eureka-status-refresh-time-interval-ms | 节点之间状态刷新间隔时长(ms) | 30000 |
eureka.server.peer-node-connect-timeout-ms | 节点之间连接超时时长(ms) | 200 |
eureka.server.peer-node-connection-idle-timeout-seconds | 节点之间连接后,空闲时长(s) | 30 |
eureka.server.peer-node-read-timeout-ms | 几点之间数据读取超时时间(ms) | 200 |
eureka.server.peer-node-total-connections | 集群中节点连接总数 | 1000 |
eureka.server.peer-node-total-connections-per-host | 节点之间连接,单机最大连接数量 | 500 |
eureka.server.registry-sync-retries | 节点启动时,尝试获取注册信息的次数 | 500 |
eureka.server.registry-sync-retry-wait-ms | 节点启动时,尝试获取注册信息的间隔时长(ms) | 30000 |
eureka.server.wait-time-in-ms-when-sync-empty | 在Eureka服务器获取不到集群里对等服务器上的实例时,需要等待的时间(分钟) | 5 |
4. 常见问题
5. 优化实战
5.1 最近使用通用版本-待更新
服务端配置
## 单节点写法
#server:
# port: 7900
#spring:
# application:
# # 这个是应用名称
# name: eureka
## eureka集群(>=3节点) 搭建说明=> https://docs.spring.io/spring-cloud-netflix/docs/2.2.8.RELEASE/reference/html/#spring-cloud-eureka-server-peer-awareness
## 注意:单节点,2节点,多节点是不同的搭建方式
#eureka:
# client:
# #是否注册到eureka中
# register-with-eureka: false
# #是否获取服务注册表
# fetch-registry: false
# service-url:
# defaultZone: http://localhost:7900/eureka/
## 2个节点写法
#spring:
# application:
# # 这个是应用名称
# name: eureka
#
#---
#spring:
# # 表示这个分段的标识,用来区分属于哪个单独实例,在EditConfigures中,Configuration标签中的Active profiles属性
# profiles: 7900
#server:
# port: 7900
#eureka:
# instance:
# hostname: eureka-7900
# client:
# serviceUrl:
# # 2个节点写法,1节点写2节点,2节点写1节点
# defaultZone: http://localhost:7901/eureka/
#
#---
#spring:
# profiles: 7901
#server:
# port: 7901
#eureka:
# instance:
# hostname: eureka-7901
# client:
# serviceUrl:
# # 2个节点写法,1节点写2节点,2节点写1节点
# defaultZone: http://localhost:7900/eureka/
# 多节点集群写法
spring:
application:
# 这个是应用名称
name: eureka
eureka:
# eureka 作为客户端端配置
# https://sq.163yun.com/blog/article/216363331210768384
client:
# 是否注册到eureka中
register-with-eureka: true
# 是否获取服务注册表
fetch-registry: true
serviceUrl:
# 多个节点方式是把所有的节点都写上
defaultZone: http://localhost:7900/eureka/,http://localhost:7901/eureka/,http://localhost:7902/eureka/
# 客户端向服务器端同步注册表时间间隔(s)
registry-fetch-interval-seconds: 30
# unavailable-replicas显示的错误
# eureka.client.register-with-eureka=true
# eureka.client.fetch-registry=true
# 还有问题
# # 多区域得配置
# # 可用区域
# region: bj
# availability-zones:
# # 可用区
# # 可用区bj里面有两组可用区z1,z2
# bj: z1,z2
# serviceUrl:
# # 可用区信息
# z1: http://localhost:7900/eureka/,http://localhost:7901/eureka/,http://localhost:7902/eureka/
# z2: http://localhost:7902/eureka/
instance:
# 续约时间(S)
# 服务测算
# 20不同类型得微服务,每个微服务横向部署5个,这里就会100个微服务(即100个eureka client)
# 如果设置得续约时间为30秒,那就是1分钟内会有200个续约请求产生,
# 折合1小时就是60*200=12000访问量
# 折合1天就是12000*24=288000访问量
# 上面说得只是每个客户端向服务器端的续约心跳量
#
# 另外还有客户端向服务端发起的同步注册表请求 registry-fetch-interval-seconds:30
# 那就是这里同时也产生了每天288000的访问量
#
# 故:可以测算出每天的请求是288000*2=576000访问量
#
lease-expiration-duration-in-seconds: 30
# #
# prefer-ip-address: false
# appname: cloud-eureka
# ip-address: 192.168.1.20
# 作为服务端配置
# https://sq.163yun.com/blog/article/216363331210768384
server:
# 自我保护,看renewal-percent-threshold的说明
# 缺省为打开
enable-self-preservation: false
# Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来,
# 让这些实例不会过期,但是在保护期内如果服务刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,此时会调用失败,
# 对于这个问题需要服务消费者端要有一些容错机制,如重试,断路器等。
#
# 我们在单机测试的时候很容易满足心跳失败比例在 15 分钟之内低于 85%,这个时候就会触发 Eureka 的保护机制,一旦开启了保护机制,
# 则服务注册中心维护的服务实例就不是那么准确了,此时我们可以使用eureka.server.enable-self-preservation=false来关闭保护机制,
# 这样可以确保注册中心中不可用的实例被及时的剔除(不推荐)。
#
# 参考: https://www.cnblogs.com/xishuai/p/spring-cloud-eureka-safe.html
#
# 自我保护触发的阈值 默认=> 0.85 表示85%
renewal-percent-threshold: 0.85
# 三级缓存问题 =>
# eviction-interval-timer-in-ms use-read-only-response-cache response-cache-update-interval-ms
# register -> readWriteCacheMap readOnlyCacheMap
# eureka server清理无效节点的时间间隔,默认60000毫秒,即60秒
eviction-interval-timer-in-ms: 1000
# 关闭从readOnly读注册表,默认是true 三级缓存问题???
use-read-only-response-cache: false
# readWrite 和 readOnly 同步时间间隔
response-cache-update-interval-ms: 1000
# -- 表示分段写法 ,
---
spring:
# 表示这个分段的标识,用来区分属于哪个单独实例,在EditConfigures中,Configuration标签中的Active profiles属性
profiles: 7900
server:
port: 7900
eureka:
instance:
# 每个服务实例的主机名
hostname: eureka-7900
---
spring:
profiles: 7901
server:
port: 7901
eureka:
instance:
hostname: eureka-7901
---
spring:
profiles: 7902
server:
port: 7902
eureka:
instance:
hostname: eureka-7902
客户端配置
spring:
application:
# 应用名称
name: api-passenger
server:
# 应用服务 WEB 访问端口
port: 8080
eureka:
# eureka 客户端配置
client:
service-url:
# 连接服务端地址
defaultZone: http://localhost:7900/eureka
# 禁用, 开发的时候实用
enabled: false
# # eureka 客户端多区域配置
# client:
# service-url:
# z1: http://localhost:7900/eureka,http://localhost:7901/eureka
# z2: http://localhost:7902/eureka,http://localhost:7903/eureka
# # 所在区域
# region: bj
# # 只给背景区域得z1组注册
# availability-zones:
# bj: z1
# # 优先获取相同区域的服务
# prefer-same-zone-eureka: true
5.2 其他参考
目前看了这篇可以:http://www.heartthinkdo.com/?p=2968
6.总结
7. 参考
- 主要参考:http://www.heartthinkdo.com/?p=1933#5_Eureka
- https://www.jianshu.com/p/22219408b382
- https://www.jianshu.com/p/3d546868a1db
- https://www.jianshu.com/p/0ff479c37bab
- https://www.cnblogs.com/qin1993/articles/11505453.html