当前位置: 首页 > news >正文

Eureka

Eureka介绍

注册中心 : 每个服务都有自己的ip和端口,,一个服务调用另一个服务的时候都需要知道对方的ip,,,

Eureka类似 dubbo中的zookeeper

Eureka 是 netflix公司提供的一款服务注册中心,,,基于REST来实现服务的注册与发现,,,

Eureka两部分:

  • 服务端: 注册中心,,用来接受其他服务的注册
  • 客户端: 是一个java客户端,用来注册服务,并可以实现负载均衡等功能
    在这里插入图片描述
    eureka中有三个角色: eureka server,,provider,,consumer
Eureka搭建

Eureka是 使用 java开发的
引入spring-cloud-starter-netflix-eureka-server
spring cloud discovery

使用@EnableEurekaServer

@SpringBootApplication
// 开启 eureka server 功能
@EnableEurekaServer
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }

}

配置文件:

spring:
  application:
    # 给当前服务取名字
    name: eureka

server:
  port: 1111

# 两层身份 : 1.注册中心  2.普通服务,,,, 即当前服务会 自己把自己注册进来
eureka:
  client:
    # 当前项目  不注册自己
    register-with-eureka: false

    # 是否从 eureka server 上获取注册信息
    fetch-registry: false

在这里插入图片描述
端口: 一个后台管理的端口,,一个通讯的端口
在这里插入图片描述

Eureka集群

服务注册中心的稳定 非常重要,需要集群
实际开发中Eureka都是以集群的形式出现的

修改hosts 文件 C:\Windows\System32\drivers\etc
在这里插入图片描述

Eureka集群 : 就是启动多个 Eureka实例,,相互注册,,相互同步数据,共同组成一个Eureka集群

Eureka Server作用

  1. 服务注册 : 所有的服务都注册到 Eureka server中,,Eureka client向 Eureka server 注册的时候,需要提供自身的一些元数据信息(ip地址,端口,名称,运行状态等)
  2. 提供注册表 : Eureka client 在调用服务时,需要获取这个注册表,,一般来说,这个注册表会缓存下来,如果缓存失效,会直接获取新的注册表
  3. 同步状态 :通过注册,心跳等机制,,和Eureka Server 同步客户端状态

Eureka Client作用

  • 获取注册表信息: eureka client会自动 拉取,更新以及缓存 Eureka server 的信息,,这样即使 Eureka Server 宕机,,Eureka client 依然能够获取到想要调用服务的地址(地址可能不准确),这个注册表会定期更新

    # 是否允许获取注册表信息
    eureka.client.fetch-registry=true
    
    # 定期更新注册表  时间,,默认30s
    eureka.client.registry-fetch-interval-seconds=30
    
  • 服务续约: Eureka client 每隔 30s 会向 Eureka Server 发送一条心跳消息,,来告诉Eureka server,我还在运行,,,如果Eureka Server 连续 90s 都没有收到 Eureka client 的续约消息,,认为这个Eureka client 已经掉线,,会将 eureka client 将服务注册列表中剔除

  • 服务下线: 当Eureka client 下线时,,他会主动发送一条消息,告诉Eureka server

自我保护机制: 防止误杀,,,当Eureka 捕获到大量的心跳失败的时候,则认为可能是网络问题,,进入自我保护机制,,当客户端心跳恢复正常的时候,会自动退出自我保护机制

配置: application-a.yml

spring:
  application:
    # 给当前服务取名字
    name: eureka

server:
  port: 1111


# 两层身份 : 1.注册中心  2.普通服务,,,, 即当前服务会 自己把自己注册进来
eureka:
  client:
    # 当前项目  不注册自己
    register-with-eureka: true

    # 是否从 eureka server 上获取注册信息
    fetch-registry: true
    service-url:
      defaultZone: http://eurekaB:1112/eureka
  instance:
    # 给服务取个别名,,注册到Eureka
    hostname: eurekaA

application-b.yml

spring:
  application:
    # 给当前服务取名字
    name: eureka

server:
  port: 1112

# 两层身份 : 1.注册中心  2.普通服务,,,, 即当前服务会 自己把自己注册进来
eureka:
  client:
    # 当前项目  不注册自己
    register-with-eureka: true
    # 是否从 eureka server 上获取注册信息
    fetch-registry: true
    service-url:
      defaultZone: http://eurekaA:1111/eureka

  instance:
    hostname: eurekaB

打包 java -jar xxx.jar --spring.profiles.active=a

Eureka集群:

在这里插入图片描述
通过replicate 进行数据同步
不同的Eureka server ,,不区分 主从节点,,所有的节点都是平等的,,通过指定 service 的url 进行相互注册,,
如果有某一个节点宕机,,Eureka client 会自动切换到 新的Eureka server 上

Eureka server 的连接方式 可以是单线的 a-->b--->c,a连接b,b连接c,,a和c之间不用直接连,,但是一般不建议这种写法,一旦b宕机,a和c就不能同步,,,在配置时,可以配置多个注册地址,用,分开

Eureka分区:

  1. region :地理上的不同区域
  2. zone : 具体的机房
    在同一个分区里面的 client 和 同一个分区里面的 server 会优先进行 心跳同步

相关文章:

  • 【C++】list的模拟实现+迭代器的设计思维
  • AI 也会写代码了,但我并不担心
  • Java8 遍历List 使用stream().parallel()并发安全
  • 计算机毕业设计Java企业固定资产管理系统的设计实现(源代码+数据库+系统+lw文档)
  • 实验十一 级数与方程符号求解(MATLAB)
  • [附源码]Python计算机毕业设计Django疫情防控平台
  • Java - 通过反射进行赋值以及函数调用
  • OpUtils的网络扫描
  • 电力系统潮流计算(牛顿-拉夫逊法、高斯-赛德尔法、快速解耦法)【6节点 9节点 14节点 26节点 30节点 57节点】(Matlab代码实现)
  • Kafka消息队列大数据实战教程-第四篇(Kafka客户端Producer API)
  • 【从零开始学习深度学习】12. 什么是模型的训练误差?基于三阶多项式的欠拟合与过拟合训练过程演示
  • 腾讯数字孪生和To B简介
  • 【机器学习】Rasa NLU以及Rasa Core概念和语法简介(超详细必看)
  • OkHttp3 详解
  • java计算机毕业设计ssm线上拍卖系统设计6luor(附源码、数据库)
  • idea远程debug
  • CRC 循环冗余检验【计网必考】
  • 《Nuitka打包实战指南》实战打包Playwright
  • 搜题接口系统
  • 极客时间Kafka - 05 Kafka 生产者发送消息可靠性保障|幂等生产者和事务生产者
  • myBaits Target Capture Kits;myBaits 靶向捕获试剂盒,快速捕获富集目标序列
  • 【表格单元格可编辑】vue-elementul简单实现table表格点击单元格可编辑,点击单元格变成输入框修改数据
  • ES7-ES13 新特性
  • 【C++】打开C++的大门
  • 【深度学习】U-Net和FCN具体分析
  • Linux下 git 上传与删除 的基本指令
  • Swift 新 async/await 同步机制小技巧:消除“多余”的 await 关键字
  • Github如何使用详细介绍(保姆级教学)
  • 【ardunio+sx1268】与【esp32+sx1268】实现不同主控单片机lora通讯
  • Linux常用命令——pvscan命令
  • 旅游管理专业学什么 难就业吗
  • 2022海南高考体育专业考试时间 什么时候考试
  • 云南楚雄高考时间2021具体时间:6月7日
  • 高考什么特长可以加分 政策有哪些
  • 2022年贵州高考218分能报什么大学 218分能上哪些院校
  • 2022大专石油化工专业毕业后待遇 工资高吗
  • 中国科学院大学2021年各省录取分数线及专业分数线
  • 学英语用点读笔好不好 有效果吗
  • 2021河南职业技术学院学费多少 各专业收费标准
  • 2022广西外语口试成绩查询时间公布 什么时候查分