【全栈之路】微服务课程6_Eureka深入刨析

架构图

【全栈之路】微服务课程6_Eureka深入刨析_第1张图片

Application Service:服务提供者;
Application Client:服务消费者;
Make Remote Call 调用RESTful API;
us-east-1c、us-east-1d等都是Availability Zone,它们都属于us-east-1这个region。
  • Eureka Server提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息(例如IP、端口、微服务名称等),Eureka Server会存储这些信息;
  • Eureka Client是一个Java客户端,用于简化与Eureka Server的交互;
  • 微服务启动后,会周期性(默认30秒)地向Eureka Server发送心跳以续约自己的“租期”;
  • 如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒);
  • 默认情况下,Eureka Server同时也是Eureka Client。多个Eureka Server实例,互相之间通过增量复制的方式,来实现服务注册表中数据的同步。Eureka Server默认保证在90秒内,Eureka Server集群内的所有实例中的数据达到一致(从这个架构来看,Eureka Server所有实例所处的角色都是对等的,没有类似Zookeeper、Consul、Etcd等软件的选举过程,也不存在主从,所有的节点都是主节点。Eureka官方将Eureka Server集群中的所有实例称为“对等体(peer)”)
  • Eureka Client会缓存服务注册表中的信息。这种方式有一定的优势——首先,微服务无需每次请求都查询Eureka Server,从而降低了Eureka Server的压力;其次,即使Eureka Server所有节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者并完成调用。

集群搭建

  • 配置主机名
    C:Windows\System32\drivers\etc
127.0.0.1 peer1
127.0.0.1 peer2
  • application.yml集群配置
spring:
  application:
    name: shop-discovery-eureka-ha
eureka:
  client:
    serviceUrl:
      defaultZone: http://peer2:8762/eureka/,http://peer1:8761/eureka/
---
spring:
  profiles: peer1
server:
  port: 8761
eureka:
  instance:
    hostname: peer1
---
spring:
  profiles: peer2
server:
  port: 8762
eureka:
  instance:
    hostname: peer2
  • idea启动配置
    --spring.profiles.active=peer1
    --spring.profiles.active=peer2

【全栈之路】微服务课程6_Eureka深入刨析_第2张图片

  • 将应用注册到Eureka Server集群
eureka:
  client:
    service-url:
      # 指定eureka server通信地址,注意/eureka/小尾巴不能少
      defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka/
  instance:
    # 是否注册IP到eureka server,如不指定或设为false,那就会注册主机名到eureka server
    prefer-ip-address: true

测试

http://localhost:8761,http://localhost:8762

【全栈之路】微服务课程6_Eureka深入刨析_第3张图片

你可能感兴趣的:(springboot,springcloud)