阅读Spring Cloud Netflix文档
This commit is contained in:
@@ -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地址而不是
|
||||||
|
|||||||
Reference in New Issue
Block a user