• eureka注册中心


    eureka注册中心

    概览图

    注册中心工作机制

    服务提供者注册

    一次一次地尝试注册,直到注册成功为止

    心跳

    30秒发送一次心跳

    eureka连续三次收不到一个服务的心跳,会删除这个服务

    服务消费者拉取注册表

    每30秒拉取一次注册表,刷新注册表

    自我保护模式

    是一种特殊情况,如果15分钟内,85%以上服务器都出现心跳异常(可能是网络不稳定),eureka会进入自我保护模式,所有的注册信息都不删除。

    等待网络恢复后,可以自动退出保护模式

    开发期间,为了影响测试,可以先关闭保护模式

    搭建eureka服务

    1.创建eureka项目

    创建springboot项目导入依赖需要导入eureka server依赖即可

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    

    pom中会自动生成dependencyManagement标签

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    2.配置文件

    spring:
      application:
        name: eureka # 同一个业务, 名字项目, 用于被负载均衡识别
    
    server:
      port: 2001
    
    eureka:
      server:
        enable-self-preservation: false # 关闭自我保护策略
      instance:
        hostname: eureka1 # u96C6u7FA4u4E2Du7528hostnameu6765u533Au5206u670Du52A1u5668
      client:
        register-with-eureka: false # 不向自身注册
        fetch-registry: false # 不从自身拉取注册信息
    

    关于配置文件:

    • eureka 集群服务器之间,通过 hostname 来区分

    • eureka.server.enable-self-preservation

      eureka 的自我保护状态:心跳失败的比例,在15分钟内是否超过85%,如果出现了超过的情况,Eureka Server会将当前的实例注册信息保护起来,同时提示一个警告,一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据。也就是不会注销任何微服务

    • eureka.client.register-with-eureka=false

      不向自身注册

    • eureka.client.fetch-registry=false

      不从自身拉取注册信息

    • eureka.instance.lease-expiration-duration-in-seconds

      最后一次心跳后,间隔多久认定微服务不可用,默认90

    3.主启动类

    需要使用@EnableEurekaServer注解, 来开启eureka服务

    @EnableEurekaServer
    @SpringBootApplication
    public class Sp05EurekaApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(Sp05EurekaApplication.class, args);
    	}
    
    }
    

    4.测试

    启动项目, 浏览器输入: http://localhost:2001可出现如下页面

    配置eureka提供者

    1.提供者项目导入依赖

    导入Eureka Discovery Client eureka客户端依赖

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

    使用开发工具导入依赖会自动生成如下内容

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR7</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    2.配置文件

    配置eureka server的路径, 最后面要加一个eureka子路径

    eureka:
      client:
        service-url:
          defaultZone: http://localhost:2001/eureka
    

    如果是阿里云, 腾讯云等云产品, 可不需要defaultZone属性

    关于其他配置

    • eureka.instance.lease-renewal-interval-in-seconds
      心跳间隔时间,默认 30 秒
    • defaultZone,默认位置,可以修改为具体地理位置,比如:beiJing, shangHai, shenZhen 等,表示 eureka 服务器的部署位置, 需要云服务器提供
    • eureka.client.registry-fetch-interval-seconds
      拉取注册信息间隔时间,默认 30 秒

    3.启动类注解(新版本可忽略)

    在主启动类上加一个注解 springboot新版本, 此注解可加可不加

    @EnableDiscoveryClient

    4.启动并测试

    最好先启动eureka的服务, 即消费者, 再启动提供者

    浏览器输入http://localhost:2001 看到如下内容表示成功

    注意: 可能eureka的控制台可能会有Connect to localhost:8761 timed out异常, 原因是没有搭建eureka集群

    eureka集群搭建(高可用)

    1. 前提准备

    我们需要搭建2个eureka服务来测试集群 [搭建eureka服务]

    假设我们有两个eureka, 域名分别是eureka1eureka2 (可更改host文件模拟域名)

    配置文件修改一下即可

    2.配置eureka集群

    register-with-eureka: true fetch-registry: true 必须都设置为true

    enable-self-preservation: false 开发的时候暂时把保护模式关闭

    eureka1的配置

    eureka:
      server:
        enable-self-preservation: false
      instance:
        hostname: eureka1  # 主机名 eureka1
      client:
        register-with-eureka: true # 注册
        fetch-registry: true # 拉取
        service-url:
          defaultZone: http://eureka2:2002/eureka # 连接erueka2
          
    server:
      port: 2001 # 如果不在同一台电脑, 端口可以和其他eureka服务一致
    

    eureka2的配置

    eureka:
      server:
        enable-self-preservation: false
      instance:
        hostname: eureka2    # 主机名 eureka2
      client:
        register-with-eureka: true
        fetch-registry: true
        service-url:
          defaultZone: http://eureka1:2001/eureka # 连接erueka1
          
    server:
      port: 2002 # 如果不在同一台电脑, 端口可以和其他eureka服务一致
    

    搭建完成后, 先启动eureka服务, 在启动提供者, 2个eureka服务的控制台没有Connect to localhost:8761 timed out异常说明搭建成功

    3.配置提供者

    关于提供者的项目搭建: [eureka提供者]

    提供者配置链接的集群

    eureka:
      client:
        service-url:
          defaultZone: http://eureka1:2001/eureka,http://eureka1:2002/eureka
    

    4.查看效果

    浏览器输入http:eureka1:2001http:eureka2:2002查看效果

    这里的eureka1和eureka2已经在host文件中进行了配置

    效果如下


  • 相关阅读:
    Dynamic attention in tensorflow
    Dynamic seq2seq in tensorflow
    Tensorflow Seq2seq attention decode解析
    zz图像卷积与滤波的一些知识点
    Android SDK更新失败对策
    高维数据降维 国家自然科学基金项目 2009-2013 NSFC Dimensionality Reduction
    近期深度学习论文汇总
    PHP远程连接mysql报错处理办法
    zz 启动Matlab提示Microsoft Visual C++ 2005 Redistributable存在问题问题
    `fw服务端非完整` 工程开发初期的工作
  • 原文地址:https://www.cnblogs.com/zpKang/p/13563061.html
Copyright © 2020-2023  润新知