SpringCloud (一) Eureka

技术SpringCloud (一) Eureka SpringCloud (一) EurekaEurekaEureka 是一个服务治理组件,它主要包括服务注册和服务发现,主要用来搭建服务注册中心。
Eu

春云(一)尤里卡

Eureka

Eureka是服务治理组件,主要包括服务注册和服务发现,主要用于构建服务注册中心。

Eureka是一个基于REST的服务,用于定位服务和负载平衡以及故障转移中间层服务器。

尤里卡服务器作为服务注册的服务器,是服务注册中心,而系统中的其他微服务使用尤里卡客户端连接到尤里卡。

服务器,并保持心跳连接。Eureka客户端是一个Java客户端,用于简化与服务器的交互、负载均衡、服务故障转移等。

Eureka 与 Zookeeper 的比较

动物园管理员保证CP(保证强一致性)

在ZooKeeper中,当主节点因网络故障与其他节点失去联系时,剩余节点会重新选举领导者,但问题是选举领导者需要一定时间,整个ZooKeeper集群在选举期间不可用,导致选举期间注册服务瘫痪。

在云部署环境下,ZooKeeper集群因网络问题丢失主节点是一种高概率事件。虽然服务最终可以恢复,但选举时间内服务注册长时间不可用是不可容忍的。

尤里卡担保美联社

尤里卡优先保证可用性。尤里卡的所有节点都是平等的。如果部分节点挂机,不会影响正常节点的工作。其余节点仍然可以提供注册和查询服务。另一方面,如果尤里卡的客户端在注册尤里卡时发现连接失败,它会自动切换到其他节点。只要有一个尤里卡,就可以保证注册服务可用(以确保可用性),但找到的信息可能不是最新的(以确保强一致性)。

配置 Eureka 服务注册中心

创建一个SpringBoot项目,并添加SpringBoot的相关依赖项;spring cloud-尤里卡-服务器

添加尤里卡的依赖

属国

groupIdorg.springframework.cloud/groupId

artifactIdspring-cloud-starter-网飞-eureka-server/artifactId

/依赖性

向Spring Boot的入口类添加@ enableurekaserver注释,以打开Eureka注册服务器。

在application.yml文件中配置Eureka服务注册表信息:

#应用程序名称

弹簧:

应用程序:

名称: EurekaServer

服务器:

端口: 8761

尤里卡:

instance:

主机名:本地主机

client:

向尤里卡注册:假

fetch-registry: false

服务-url:

default zone : http://$ { eureka . instance . hostname } : $ { server . port }/eureka

启动main,访问http://localhost:8761/

Eureka 服务注册中心注册服务

创建一个新的spring boot项目并导入eureka客户端依赖项:

属国

groupIdorg.springframework.cloud/groupId

artifactIdspring-cloud-starter-网飞-eureka-client/artifactId

/依赖性

在main上添加@ enableurekaclient注释。

配置服务名称和注册表地址

弹簧:

应用程序:

名称:尤里卡客户端

服务器:

端口: 8762

尤里卡:

client:

向尤里卡注册: true

fetch-registry: true

服务-url:

default zone : http://localhost :8761/eureka

移民局

tance:
prefer-ip-address: true

  • 启动运行之后,通过在浏览器地址栏访问我们之前搭建好的 eureka 注册

  • Eureka 注册中心高可用集群

    由于注册中心 eureka 本身也是一个服务,如果它只有一个节点,那么它有可能发生故障,这样我们就不能注册与查询服务了,所以我们需要一个高可用的服务注册中心,这就需要通过注册中心集群来解决。

    Eureka Server 的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就会形成一组互相注册的服务注册中心,进而实现服务清单的互相同步,往注册中心 A 上注册的服务,可以被复制同步到注册中心 B 上,所以从任何一台注册中心上都能查询到已经注册的服务,从而达到高可用的效果。

    1. 在 8761 的配置文件中,让它的 service-url 指向 8763,在 8763 的配置文件中让它的 service-url 指向 8761

      server:
        port: 8761
      eureka:
        instance:
          hostname: localhost
        client:
          register-with-eureka: false
          fetch-registry: false
          service-url:
            defaultZone: http://${eureka.instance.hostname}:8763/eureka
      
      server:
        port: 8763
      eureka:
        instance:
          hostname: localhost
        client:
          register-with-eureka: false
          fetch-registry: false
          service-url:
            defaultZone: http://${eureka.instance.hostname}:8761/eureka
      
    2. 然后在本地 hosts 文件配置:C:\Windows\System32\drivers\etc\hosts

      127.0.0.1 eureka8761

      127.0.0.1 eureka8763

    3. 分别启动两个注册中心,访问两个注册中心页面,观察注册中心页面是否正常

    4. 在eureka-client服务中配置:

      eureka:
        client:
          register-with-eureka: true
          fetch-registry: true
          service-url:
            defaultZone: http://localhost:8761/eureka, http://localhost:8763/eureka
      
    5. 启动服务提供者服务,然后观察注册中心页面,可以看到服务会在两个注册中心上都注册成功

    Eureka 服务注册中心自我保护机制

    当 Eureka 注册中心进入自我保护模式时,在 Eureka Server 首页会输出如下警告信息:

    EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

    在没有 Eureka 自我保护的情况下,如果 Eureka Server 在一定时间内没有接收到某个微服务实例的心跳,Eureka Server 将会注销该实例,但是当发生网络分区故障时,那么微服务与 Eureka Server 之间将无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是正常的,此时不应该注销这个微服务,如果没有自我保护机制,那么 Eureka Server 就会将此服务注销掉。

    Eureka 通过“自我保护模式”来解决这个问题——当 Eureka Server 节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么就会把这个微服务节点进行保护。一旦进入自我保护模式,Eureka Server 就会保护服务注册表中的信息,不删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,该 Eureka Server 节点会再自动退出自我保护模式。

    但是 Eureka Server 自我保护模式也会给我们带来一些困扰,如果在保护期内某个服务提供者刚好非正常下线了,此时服务消费者就会拿到一个无效的服务实例,此时会调用失败,对于这个问题需要服务消费者端具有一些容错机制,如重试,断路器等。

    自我保护常用几个配置:

    1. 服务器端

      #测试时关闭自我保护机制,保证不可用服务及时踢出

      eureka.server.enable-self-preservation=false
      
    2. 客户端

      #每间隔 2s,向服务端发送一次心跳,证明自己依然"存活"

      eureka.instance.lease-renewal-interval-in-seconds=2 
      

      #告诉服务端,如果我 10s 之内没有给你发心跳,就代表我故障了,将我踢出掉

      eureka.instance.lease-expiration-duration-in-seconds=10
      

    内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/155859.html

    (0)

    相关推荐

    • 美容医院排行,苏州排行第一的整形医院是哪家

      技术美容医院排行,苏州排行第一的整形医院是哪家苏州解放军第一00医院整形美容中心创建于1915年,迄今已有近百年的历史,医院坐落于古城苏州风景秀美的沧浪亭畔,建筑风格典雅的门诊楼美容医院排行、住院楼、疗养楼、康复楼与著名

      生活 2021年10月30日
    • MySQL基础SQL入门

      技术MySQL基础SQL入门 MySQL基础SQL入门MySQL基础SQL入门
      1. 数据库的基本概念
      1.1 什么是数据库1. 数据库(DataBase) 就是存储和管理数据的仓库
      2. 其本质是一个

      礼包 2021年12月1日
    • centos7.6安装mysql(mysql5.6下载)

      技术mysql 5.6中文乱码怎么办这篇文章主要为大家展示了“mysql 5.6中文乱码怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql 5.6中文乱码怎么办”

      攻略 2021年12月25日
    • 如何使用视图快速获得Flashback Query闪回查询数据

      技术如何使用视图快速获得Flashback Query闪回查询数据这篇文章主要介绍了如何使用视图快速获得Flashback Query闪回查询数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有

      攻略 2021年11月11日
    • 水浒传人物名字,《水浒传》中的主要人物是谁

      技术水浒传人物名字,《水浒传》中的主要人物是谁公孙胜 水浒传人物名字,鲁智深 ,林冲 ,吴用,李逵,宋江 ,武松,杨志等。1、姓名:宋江
      绰号:及时雨
      性格特点:为人仗义、善于用人,但总想招安。
      主要事迹:私放晁盖、怒杀

      生活 2021年10月30日
    • 聚焦近义词,“均匀”的近义词是什么

      技术聚焦近义词,“均匀”的近义词是什么jūn yún[释义] (形)分布或分配在各部分的数量相同聚焦近义词,时间的间隔相等。
      均匀的近义词
      近义词:平均、恰当、匀和、匀称、均匀
      一、平均 píngjūn
      (1) 按份儿均

      生活 2021年10月30日