格物致知,格注册与发现。
服务发现承载服务提供与消费者之间的桥梁,各个微服务与服务发现组件使用心跳机制进行通信。服务发现组件如果长时间无法与某微服务实例通信,就会注销该实例。
Spring Cloud提供了多种服务发现组件的支持,如Eureka, Consul 和 Zookeeper等
Eureka(已集成在子项目Spring Cloud Netflix中)
单节点Eureka不适合线上生产环境。Eureka Client会定时连接Eureka Server, 获取服务注册表中的信息并缓存在本地。微服务在消费远程API时总是使用本地缓存中的数据。因此一般说来,即使Eureka Server发生宕机,也不会影响到服务之间的调用。但如果Eureka Server宕机时某些服务也出现了不可用的情况, Eureka Client中的缓存若不被更新,就可能会影响到微服务的调用,甚至时整个应用系统的高可用性。因此需要部署一个高可用的Eureka Server集群。
Eureka Server可以通过运行多个实例并相互注册的方式实现高可用部署,Eureka Server实例会彼此增量的同步信息,从而确保所有节点数据一致。
server:
port: 8111
eureka:
client:
# 是否将自己注册Eureka Server
registerWithEureka: false
# 是否从Eureka Server获取注册信息
fetchRegistry: false
serviceUrl:
# 查询和注册服务都需要依赖这个地址,多个用,隔开
defaultZone: http://localhost:8111/eureka/