参考地址:https://www.cnblogs.com/l-y-h/p/14193443.html#_label2_5

一、什么是Eureka?

  Eureka 是 NetFlix 公司开发的 实现服务注册与发现的 技术框架,遵循 AP 原则;

  SpringCloud 已将其集成到 spring-cloud-netflix 中,实现 SpringCloud 的服务注册与发现;

  官方已经停止维护 Eureka,虽然都不推荐使用,但是可以学习基本思想、如何使用;

二、Eureka Server、Eureka Client:

  Eureka 采用 C/S 架构设计,分为 Eureka Service、Eureka Client;

【Eureka Server:】
    Eureka Server 作为服务注册的服务器(即 注册中心),当服务启动后,会在注册中心注册。
    也即通过 Eureka Server 中的服务注册表 可以知道所有可用的 服务节点信息。
注:
    Eureka Server 本身也是一个服务,默认会自动注册进 注册中心。
    若是单机版的 Eureka Server,一般取消自动注册自身的逻辑(自己注册自己,没啥意义)。

【Eureka Client:】
    Eureka Client 作为客户端,简化与 Eureka Server 的交互,拥有一个内置的、轮询的负载均衡器(提供基本的负载均衡)。
    Eureka Client 既可以作为 服务提供者,又可以是 服务的消费者。
    作为服务提供者时,服务启动后,会在 Eureka Server 注册中心进行注册。
    作为服务消费者时,即 调用服务提供者提供的服务,会从注册中心 获取到 服务提供者的真实地址,将地址缓存在本地,向 Eureka Server 发送心跳(默认周期 30s)。
    如果 Eureka Server 在多个心跳周期内没有接收到某个节点的心跳(默认 90s),Eureka Server 将会从注册中心中移除 该服务节点。

  Eureka 单机版 和 集群版的区别:

  • 单机版一般 Eureka Server 会取消自动注册自身的逻辑 (自己注册自己,无意义);
  • 集群班的 Eureka Server 会被注册到其他的 注册中心中,通过数据同步 保持 各个注册中心 服务列表 数据一致

 

 

三、Eureka 1.x 与 2.x 版本的区别:

【Eureka 1.x】
    Eureka Server 与 Eureka Client 引用的是同一个依赖。
如下:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
    <version>1.4.7.RELEASE</version>
</dependency>
    
【Eureka 2.x】
    Eureka Server 与 Eureka Client 引用的是不同的依赖。
如下:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    <version>2.2.6.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>2.2.6.RELEASE</version>
</dependency>

  

四、Eureka 常用配置参数

【前缀为 eureka.instance 的参数:】
hostname:
    即 eureka.instance.hostname
    配置当前实例的主机名。
    
appname:
    即 eureka.instance.appname
    设置服务端实例名称,优先级高于 spring.application.name。
注:
    服务名 不要 使用下划线 _ 作为连接符,可以使用 - 作为连接符。
    
instance-id:
    即 eureka.instance.instance-id
    设置当前实例 ID。
    
lease-expiration-duration-in-seconds:
    即 eureka.instance.lease-expiration-duration-in-seconds
    设置服务失效时间,默认 90 秒
    
lease-renewal-interval-in-seconds:
    即 eureka.instance.lease-renewal-interval-in-seconds
    设置心跳时间,默认 30 秒

ip-address:
    即 eureka.instance.ip-address
    设置当前实例 IP 地址。

prefer-ip-address:
    即 eureka.instance.prefer-ip-address
    默认为 false,设置为 true 时,则显示在注册中心的 是 IP 地址 而非 主机名。

【前缀为 eureka.server 的参数:】
enable-self-preservation:
    即 eureka.server.enable-self-preservation
    默认为 true,设置 false 表示关闭自我保护模式(Eureka Server 短时间内丢失客户端时,自我保护模式 使 Server 不删除失去连接的客户端)

eviction-interval-timer-in-ms:
    即 eureka.server.eviction-interval-timer-in-ms
    设置 Eureka Server 清理无效节点的时间间隔,单位:毫秒,默认为 60000 毫秒。

【前缀为 eureka.client 的参数:】
register-with-eureka:
    即 eureka.client.register-with-eureka
    默认为 true,设置 false 表示不向注册中心注册自己(Eureka Server 一般设置为 false)。
    
fetch-registry:
    即 eureka.client.fetch-registry
    默认为 true,设置 false 表示不去注册中心 获取 注册信息(Eureka Server 一般设置为 false)。
    
service-url.defaultZone:
    即 eureka.client.service-url.defaultZone
    设置 Eureka 服务器地址,类型为 HashMap,默认为:serviceUrl.put("defaultZone", "http://localhost:8761/eureka/");

  示例:在注册中心的 statu 列显示自定义的 实例id, Application 列显示自定义的 实例名称,鼠标悬浮在 statu 的实例上时,页面左下角显示 主机名或ip:

# 配置当前的实例的主机名
eureka.instance.hostname=localhost
# 配置服务端实例名称,优先级高于 spring.application.name
eureka.instance.appname=eureka-client-consumer-9001
# 设置当前实例 id
#eureka.instance.instance-id=${eureka.instance.appname}
eureka.instance.instance-id=eureka-consumer-9001
# 默认为 true,注册到注册中心
eureka.client.register-with-eureka=true
# 默认为 true,从注册中心 获取 注册信息
eureka.client.fetch-registry=true
# 默认为 false,设置为 true 时,则显示在注册中心的是 IP地址, 而非 主机名
#eureka.instance.prefer-ip-address=true
# 指向 注册中心 地址,即 eureka_server_7000 的堵住
eureka.client.service-url.defaultZone=http://localhost:7000/eureka

  

 

 

 此处如果将 eureka.client.prefer-ip-address = true,那么左下角显示的是 ip 地址;

# 配置当前的实例的主机名
eureka.instance.hostname=localhost
# 配置服务端实例名称,优先级高于 spring.application.name
eureka.instance.appname=eureka-client-consumer-9001
# 设置当前实例 id
#eureka.instance.instance-id=${eureka.instance.appname}
eureka.instance.instance-id=eureka-consumer-9001
# 默认为 true,注册到注册中心
eureka.client.register-with-eureka=true
# 默认为 true,从注册中心 获取 注册信息
eureka.client.fetch-registry=true
# 默认为 false,设置为 true 时,则显示在注册中心的是 IP地址, 而非 主机名
eureka.instance.prefer-ip-address=true
# 指向 注册中心 地址,即 eureka_server_7000 的堵住
eureka.client.service-url.defaultZone=http://localhost:7000/eureka

  

 

posted on 2022-06-08 19:45  冷漠「」  阅读(455)  评论(0编辑  收藏  举报