阅读Spring Cloud Netflix文档

This commit is contained in:
2023-03-27 22:35:10 +08:00
parent 88d8d4abd3
commit edc0638cb7

View File

@@ -99,10 +99,10 @@ public class Application {
### 高可用 ### 高可用
Eureka Server并没有后端存储但是注册到Eureka Server中的所有service实例都必须向eureka server发送心跳包来保证其注册状态是最新的上述所有操作都是在eureka server的内存中完成的。 Eureka Server并没有后端存储但是注册到Eureka Server中的所有service实例都必须向eureka server发送心跳包来保证其注册状态是最新的上述所有操作都是在eureka server的内存中完成的。
client端也会在内存中对eureka server中的注册状态进行缓存故而无需每次请求其他service时都要从eureka server中获取注册状态。 client端也会在内存中对eureka server中的注册状态进行缓存故而无需每次请求其他service时都要从eureka server中获取注册状态。
> 默认情况下每个eureka server都同时是一个client并且需要至少一个URL来定位其他的service实例 > 默认情况下每个eureka server都同时是一个client并且需要至少一个URL来定位其他的peer instance。如果没有提供该URL服务仍然能启动但是会一直输出日志表示无法向其他peer instance注册
### 单机模式 ### 单机模式
单机模式下,可以通过如下配置来关闭客户端的行为: 单机模式下,可能需要关闭eureka的客户端行为例如持续获取其peer instance并失败。可以通过如下配置来关闭客户端的行为:
```yml ```yml
server: server:
port: 8761 port: 8761
@@ -116,4 +116,57 @@ eureka:
serviceUrl: serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
``` ```
单机模式下,`serviceUrl`指向与本地实例相同的host地址。
### Peer Awareness
相比于单机模式通过运行多个eureka实例并且让实例之间相互注册Eureka可以配置的更加弹性和高可用。上述是eureka的默认行为配置时只需要指定peer instance的`serviceUrl`,如下所示:
```yml
---
spring:
profiles: peer1
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: https://peer2/eureka/
---
spring:
profiles: peer2
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: https://peer1/eureka/
```
可以向系统中添加多个peer instance实例之间两两相互连接实例之间相互同步注册信息。示例如下
```yml
eureka:
client:
serviceUrl:
defaultZone: https://peer1/eureka/,http://peer2/eureka/,http://peer3/eureka/
---
spring:
profiles: peer1
eureka:
instance:
hostname: peer1
---
spring:
profiles: peer2
eureka:
instance:
hostname: peer2
---
spring:
profiles: peer3
eureka:
instance:
hostname: peer3
```
### IP地址注册
在某些场景下可能更喜欢通过ip地址而不是hostname来进行注册。如果将`eureka.instance.preferIpAddress`设置为true那么在应用注册到eureka时会使用ip地址而不是