• Eruke是什么?怎么搭建?



    认识Eureka

    它是一个基于REST的服务,是实现服务发现与注册的组件。

    构成

    Eureka采用了C-S的架构,包含了两个组件:Eureka Server与Eureka Client,各个节点启动之后,会在Eureka注册,注册之后只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件。

    Eureka架构图

    单机构建

    项目搭建

    1. 在pom中添加对应的依赖
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    如果没有相关依赖可能是没有添加相关镜像按照如下步骤进行

    1. 找到maven的setting.xml
      pom文件配置地址

    2. 在标签内部添加

    <mirror>
        <id>aliyunmavenid>
        <mirrorOf>*mirrorOf>
        <name>阿里云公共仓库name>
        <url>https://maven.aliyun.com/repository/publicurl>
    mirror>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 在setter中设置如下参数

    -Dmaven.wagon.http.ssl.insecure-true -Dmaven.wagon.http.ssl.allowall-true

    配置位置

    注册中心

    1. 添加依赖
    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 启动类上添加注解
      @EnableEurekaServer
    2. 配置yml
      这里配置的Eureka需要添加
    client:
        register-with-eureka: false    
         # false表示不向注册中心注册自己。
    eureka:
      instance:
        hostname: eureka7001.com #eureka服务端的实例名称
      client:
        register-with-eureka: false     #false表示不向注册中心注册自己。
        fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
        service-url:
          #集群指向其它eureka
          #defaultZone: http://eureka7002.com:7002/eureka/
          #单机就是7001自己
          defaultZone: http://eureka7001.com:7001/eureka/
        #server:
        #关闭自我保护机制,保证不可用服务被及时踢除
        #enable-self-preservation: false
        #eviction-interval-timer-in-ms: 2000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    生产者

    1. 添加pom依赖
    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 在启动类上添加下面这个注解
      @EnableEurekaClient
    2. 配置yml
    spring:
      application:
      # 需要指定项目所属别名
        name: cloud-payment-service
    
    eureka:
      client:
        #表示是否将自己注册进EurekaServer默认为true。
        register-with-eureka: true
        #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
        fetchRegistry: true
        service-url:
          #单机版
          defaultZone: http://localhost:7001/eureka
          # 集群版
          #defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
      instance:
        instance-id: payment8001
        #访问路径可以显示IP地址
        prefer-ip-address: true
        #Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
        #lease-renewal-interval-in-seconds: 1
        #Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务
        #lease-expiration-duration-in-seconds: 2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    服务发现

    1. 在启动配置中心之后直接访问注册中心所配置的端口,发现无任何信息
      启动成功

    2. 当我们启动生产者之后再在Eureka中刷新,这个时候配置的生产者就出现在了这个页面。
      注册信息到这里我们就使用了Eureka做了一个简单的服务注册。

    3. 集群搭建
      相互注册,相互守望
      搭建一个Eureka集群需要准备至少两个Eureka节点,而搭建集群的环境主要在yml配置这里。

    • 节点一:
    server:
      port: 7001
    
    eureka:
      instance:
        hostname: eureka7001.com #eureka服务端的实例名称
      client:
        register-with-eureka: false     #false表示不向注册中心注册自己。
        fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
        service-url:
          #集群指向其它eureka
          defaultZone: http://eureka7002.com:7002/eureka
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 节点二:
    server:
      port: 7002
    
    eureka:
      instance:
        hostname: eureka7002.com #eureka服务端的实例名称
      client:
        register-with-eureka: false     #false表示不向注册中心注册自己。
        fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
        service-url:
        #集群指向其它eureka
          defaultZone: http://eureka7001.com:7001/eureka
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    先启动服务注册中,在启动节点的时候就会注册到里面。

    自我保护

    当出现如下的提示信息即说明Eruke启动了自我保护
    自我保护

    什么是自我保护?

    当服务出现宕机之后,不会立刻从Eruke中剔除。
    
    • 1

    为什么会有自我保护?

    为了保证Eureka的高可用
    
    • 1

    当EurekaClient可以正常运行,但是与EurekaServer网络不通畅,EurekaServer就不会立刻将EurekaClient服务剔除(默认90秒)

    好死不如赖活着

    关闭

    修改配置文件

    eureka
      server:
        #关闭自我保护机制,保证不可用服务被及时踢除
        enable-self-preservation: false
        eviction-interval-timer-in-ms: 2000
    
    • 1
    • 2
    • 3
    • 4
    • 5

    结果演示

    关闭演示

    停更

    停更说明

  • 相关阅读:
    基于GIS与地质灾害易发性评价—信息量模型
    Docker系列第01部分:介绍+虚拟化+什么是Decker+组件
    ctfhub技能树---http协议
    小波变换学习笔记【1】
    MASA MAUI Plugin 安卓蓝牙低功耗(一)蓝牙扫描
    zabbix自定义监控
    9.图片分类数据集
    基于人工智能标记语言 (AIML)和任务型对话系统(Task)的深度智能对话机器人demo
    C语言:通讯录联系(内存存储)
    anime4k 在真机租用上的应用尝试
  • 原文地址:https://blog.csdn.net/weixin_52129381/article/details/127952649