From edc0638cb7a250849f87c11349958a8cafd9f2eb Mon Sep 17 00:00:00 2001 From: rikako <496063163@qq.com> Date: Mon, 27 Mar 2023 22:35:10 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=85=E8=AF=BBSpring=20Cloud=20Netflix?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring/Spring Cloud/Spring Cloud Netflix.md | 57 ++++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/spring/Spring Cloud/Spring Cloud Netflix.md b/spring/Spring Cloud/Spring Cloud Netflix.md index dd4376c..32f47bb 100644 --- a/spring/Spring Cloud/Spring Cloud Netflix.md +++ b/spring/Spring Cloud/Spring Cloud Netflix.md @@ -99,10 +99,10 @@ public class Application { ### 高可用 Eureka Server并没有后端存储,但是注册到Eureka Server中的所有service实例都必须向eureka server发送心跳包来保证其注册状态是最新的,上述所有操作都是在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 server: port: 8761 @@ -116,4 +116,57 @@ eureka: serviceUrl: 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地址而不是