IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Java学习记录 02Spring Cloud 服务注册中心Eureka -> 正文阅读

[大数据]Java学习记录 02Spring Cloud 服务注册中心Eureka

Eureka 注册中心

Eureka 是 微服务的套件,基于 REST服务 。用于定位服务,以实现云端中间层服务发现 和 故障转移等功能

Eureka 组件

  • Eureka Server 服务注册中心(服务方)
    提供 服务注册 和 发现 功能
  • Service Provider 服务器 (提供方)
    将自身服务注册到 Eureka ,使 客户端 可业务服务功能
  • Service Consumer 客户端(应用方)
    从 Eureka 获取注册服务列表,实现 业务服务 功能

Eureka Serve 也可是一个集群。如果Eureka Serve是个集群,当 提供者在集群的某个节点注册时,该节点会把服务的信息同步到每一个集群节点中,从而实现任意节点都可获取完整的服务列表!

Eureka Serve集群示例

以下示范用三个 Eureka Server ,每个都需要注册其他 Eureka 服务中

例如:分别有 8000、8001、8002,则他们分别注册的有:

  • 8000 注册到 8001、8002上
  • 8001 注册到 8000、8002上
  • 8002 注册到 8000、8001上
# 8000 配置
---
spring:
  application:
    name: eureka-server
server:
  port: 8000
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8001/eureka/,http://localhost:8002/eureka/
---

# 8001 配置
---
spring:
  application:
    name: eureka-server
server:
  port: 8001
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8000/eureka/,http://localhost:8002/eureka/
---

# 8002 配置
---
spring:
  application:
    name: eureka-server
server:
  port: 8002
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8000/eureka/,http://localhost:8001/eureka/
---

随意访问一个 Eureka Server 的节点。效果图如下:

Eureka 配置

主要说明 Eureka有关组件的配置:

  • Eureka客户端
    • 服务提供
      • 服务地址ip
      • 续约(心跳
    • 消费服务
      • 获取服务频率
  • Eureka-server 工程
    • 失效剔除
    • 自我保护

善用 Ctrl+F

配置属性值 (默认)说明
eureka.client.register-with-eruekaboolean (true)注册自己
eureka.client.fetch-registryboolean (true)读取服务列表
eureka.client.registry-fetch-interval-secondsint (30s)获取注册列表的频率
eureka.instance.ip-addressString指定ip地址
eureka.instance.prefer-ip-addressboolean (false)获取ip优先于host
eureka.instance.lease-expiration-duration-in-secondsint (90s)续约等待时长
eureka.instance.lease-renewal-interval-in-secondsint (30s)服务续约间隔
eureka.client.service-url.defaultZoneString服务注册地址
eureka.server.enable-self-preservationboolean (true)自我保护模式
eureka.server.eviction-interval-timer-in-msint (60000ms)扫描失效服务间隔

服务注册

eureka.lient.register-with-erueka 注册信息允许他人发现(包括自己,该配置如果为true,会向 Eureka Server 发起Rest请求,携带本身元数据信息,Eureka Server 会把这些信息 以双层Map结构进行保存

Map层级keyvalue
第一层服务名称第二层Map
第二层IP + 服务名 + 端口号服务的实例对象

例如:
map<String1 , map<String2 , ServiceInstance>>

String1 : user-service

String2 : 127.0.0.1:user-service:8082

涉及 服务注册 的配置属性

# 指定ip地址
eureka.instance.ip-address : 127.0.0.1 
# 优先应用ip,并非 host
eureka.instance.prefer-ip-address : false
# 向 Eureka Server 注册其信息以供其他人发现
eureka.client.register-with-eureka: true
# 从 Eureka Server 获取注册服务的频率 ,默认30s
eureka.client.registry-fetch-interval-seconds : 30
# 消费者向注册服务的地址。Eureka Server 地址,多个地址以','隔开(提高成功率
eureka.client.service-url.defaultZone : url

服务续约

在服务注册完成后,提供者会维持一个心跳,定时向Eureka Server发起Rest请求。以心跳的形式表明它仍然活着就(可称为服务的续约

涉及 服务续约 的配置属性

# 指示 Eureka Server 等待时长接收心跳,一旦超出等待时间且没有心跳信号,则移出服务列表
eureka.instance.lease-expiration-duration-in-seconds : 90 
# 提供者发送心跳的频率,默认30s
eureka.instance.lease-renewal-interval-in-seconds : 30 

失效剔除&自我保护

涉及 Eureka Server 的配置

# 自我保护模式 关闭 (默认打开
eureka.server.enable-self-preservation : true
# 扫描失效服务的间隔时间 (默认: 60000ms
eureka.server.eviction-interval-timer-in-ms : 60000

失效剔除

当 Eureka Server 在启动完成后 ,eureka.server.eviction-interval-timer-in-ms : 60000 会每隔60000ms检查服务失效情况,如果某个服务节点超过90秒未收到心跳信号,那么 Eureka Server 会视为故障,将该服务剔除 (默认情况下 最长的剔除周期:90s+60s

自我保护

Eureka Server 统计最近15min心跳失败的提供者比例,比例一旦到达85%,则触发自我保护机制,Eureka Server 视为网络故障等问题,Eureka Server 会锁定服务列表(以防失效剔除),这一过程保证了服务仍然可用,但不能保证访问的成功率

开发者配置

为了开发环境下,能够快速得到服务的最新状态,我们可以将其设置小一点

提供者

eureka:
  instance:
    lease-expiration-duration-in-seconds: 10 # 10秒即过期
    lease-renewal-interval-in-seconds: 5 # 5秒一次心跳

消费者

eureka:
  client:
    registry-fetch-interval-seconds: 5 # 获取注册列表间隔

Eureka Server

eureka:
  server:
    enable-self-preservation: false # 关闭自我保护模式
    eviction-interval-timer-in-ms: 1000 # 扫描失效服务的间隔
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:42:31  更:2021-10-16 19:42:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:01:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码