转载

spring-cloud之注册中心eureka

在传统的应用架构里,一般通过nginx的反向代理来对外暴露后端服务,来支持负载均衡、高可用。用过的人都懂,一旦部署的后端服务更换了服务器或者端口,都需要我们修改nginx的配置。当然在传统的应用架构里边,这个无可厚非,毕竟服务数量不多,而且变动不频繁。但是来到了微服务架构后,可能就涉及到几十个以上的服务了。每个服务都需要进行类似的配置方式,这样不便于管理、而且容易出错。

spring-cloud中提供了eureka注册中心,为我们解决了以上的问题。服务提供者只需要在启动时,将自身的信息注册到eureka中,eureka会返回注册到其上的服务列表,并维持心跳;当服务有变动时,通过事件通知机制告知客户端(即注册到eureka上的服务)刷新服务列表。这样我们就可以借助eureka来取缔nginx,而且无需维护反向代理的配置。

spring-cloud之注册中心eureka

使用eureka集群

由于eureka没有后端存储,所有服务数据都处于内存中。因此在生产环境中,需要使用eureka集群。一般有三个节点,两两互相注册,互相同步服务数据,以此保证高可用。

配置

```yaml
---
spring:
  profiles: peer1
  application:
    name: eureka-server
server:
  port: 8761
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://peer1:8761/eureka/,http://peer2:8761/eureka/,http://peer3:8761/eureka/
  instance:
    prefer-ip-address: true # 以ip地址注册,默认为主机名
---
spring:
  profiles: peer2
  application:
    name: eureka-server
server:
  port: 8762
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://peer1:8761/eureka/,http://peer2:8761/eureka/,http://peer3:8761/eureka/
  instance:
    prefer-ip-address: true # 以ip地址注册,默认为主机名
---
spring:
  profiles: peer3
  application:
    name: eureka-server
server:
  port: 8763
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://peer1:8761/eureka/,http://peer2:8761/eureka/,http://peer3:8761/eureka/
  instance:
    prefer-ip-address: true # 以ip地址注册,默认为主机名

服务注册与发现

服务发现是基于微服务的体系结构的关键原则之一,spring cloud是如何做到服务注册和发现的呢?

当服务启动时,eureka客户端(即配置了注册eureka的服务)向eureka集群服务提供元数据(host、port、health indicator url、home page etc.)将自身注册到eureka集群中。而且eureka集群会收到来自每个服务的心跳信息,如果心跳超过了配置的时间未刷新,那么这个服务实例就会从服务注册表中删除,并通知其他eureka客户端。

原文  https://blog.luhuancheng.com/2019/03/29/spring-cloud之注册中心eureka/
正文到此结束
Loading...