• Eureka


    Eureka是Netflix开发的服务发现框架,SpringCloud将它集成在自己的子项目spring-cloud-netflix中,实现SpringCloud的服务发现功能。
    各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里。

    简介

    Eureka包含两个组件:
    Eureka ServerEureka Client

    Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息

    Eureka Client是一个java客户端,用于简化与Eureka Server的交互。客户端同时也就别一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

    Eureka基本规则
        服务启动时会生成服务的基本信息对象InstanceInfo,然后在启动时会register到服务治理中心。
    
        注册完成后会从服务治理中心拉取所有的服务信息,缓存在本地。
    
        之后服务会30s(可配置)发送一个心跳信息,续约服务。
    
        如果服务治理中心在90s内没有收到一个服务的续约,就会认为服务已经挂了,会把服务注册信息删掉。
    
        服务正常停止前,服务会主动发送一个停止请求,服务治理中心会删除这个服务的信息。
    
        如果Eureka Server收到的统计心跳失败的比例在15分钟之内是否低于85%
        (可配置,实际在生产环境上通常是由于网络不稳定导致)就会进入自我保护模式,
        在这种模式下,Eureka Server不会删除任何服务信息。
    
    
    同步:多个 Eureka Server 之间通过复制的方式完成服务注册表的同步,形成 Eureka 的高可用
    
    识别:Eureka Client 会缓存 Eureka Server 中的信息
       即使所有 Eureka Server 节点都宕掉,服务消费者仍可使用缓存中的信息找到服务提供者
    
    续约:微服务会周期性(默认30s)地向 Eureka Server 发送心跳以Renew(续约)信息
    
    续期:Eureka Server 会定期(默认60s)执行一次失效服务检测功能
       它会检查超过一定时间(默认90s)没有Renew的微服务,发现则会注销该微服务节点
    

    Eureka服务端开发

    父工程pom.xml定义SpringCloud版本
    
        <!--锁版本-->
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Finchley.M9</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
    
    eureka模块pom.xml引入eureka-server依赖
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
        </dependencies>
    
    
    添加application.yml
    
    server:
      port: 6868
    eureka:
      client:
        fetch-registry: false    #是否将自己注册到Eureka服务中,本身就是所以无需注册
        register-with-eureka: false    #是否从Eureka中获取注册信息
        service-url:    #Eureka客户端与Eureka服务端进行交互的地址
          defaultZone: http://127.0.0.1:${server.port}/eureka/
    
    #是否开启自我保护模式,默认为true
    eureka.server.enable-self-preservation=true
    #续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)
    eureka.server.eviction-interval-timer-in-ms=60000
    
    
    
    编写启动类
    
    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(EurekaApplication.class, args);
    	}
    }
    
    
    启动运行启动类,然后在浏览器地址栏输入 http://localhost:6868/
    

    服务注册

    依赖
    
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    
    
    每个微服务的application.yml,添加注册eureka服务的配置
    
    eureka:
      client:
        service-url:
          defaultZone: http://127.0.0.1:6868/eureka/
      instance:
        prefer-ip-address: true    # 设置微服务调用地址为IP优先(缺省为false)
    
    # 再注册中心页面显示的微服务名
    eureka.instance.instance-id=${spring.application.name}:${server.port}
    # 心跳时间,即服务续约间隔时间(缺省为30s)
    eureka.instance.lease-renewal-interval-in-seconds=30
    # 发呆时间,即服务续约到期时间(缺省为90s)
    eureka.instance.lease-expiration-duration-in-seconds=90
    
    
    启动类添加注解
    
    @EnableEurekaClient
    

    文档

    https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance

  • 相关阅读:
    微信小程序开发工具 POST net::ERR_PROXY_CONNECTION_FAILED 代理问题
    微信小程序 带参调用后台接口 循环渲染页面 wx.request wx:for
    三下乡感悟心得体会
    Mysql通过Adjacency List(邻接表)存储树形结构
    java的List中使用filter过滤出符合特定条件的元素List
    mybatis报表,动态列与查询参数+行列转换
    mysql行转列转换
    spring配置jackson不返回null值
    mybatis动态列名
    查出最新记录
  • 原文地址:https://www.cnblogs.com/loveer/p/11431484.html
Copyright © 2020-2023  润新知