码迷,mamicode.com
首页 > 编程语言 > 详细

SpringCloud Eureka服务注册与发现

时间:2019-08-30 18:49:17      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:url   enable   height   end   禁用   sel   source   yml   丢失   

首先Eureka是什么?  

  Eureka是Netflix的一个子模块,也是核心模块之一,Eureka是一个基于REST的服务,用于定位服务,以实现云端中层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,儿不需要修改服务调用的配置文件了。功能类似于dubbo的注册中心,比如Zookeeper。

  Eureka主管服务的注册与发现。

  Netflix在设计时遵守ap原则即:高可用高容错

Eureka的注册:

  要将服务注册到Eureka上

    1.在pom.xml里加入

     

<!--将微服务provider注册进eureka-->
        <dependency>    
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

    2.applicati.yml文件
      eureka:
        client: #将客户端注册金eureka服务列表内
          service-url: defaultZone: http://localhost:6001/eureka

    3.在启动类上加上@EnableEurekaClient注解

Eureka的自我保护:

 eureka的自我保护就是:

    默认情况下,如果EurekaServer在一定时间内没有接收到某个微服务实例的心跳,EurekaServer将会注销实例(默认90s)。但是当网络分区故障发生时,微服务与EurekaServer之间无法正常通信,以上行为可能变得非常危险了--因为微服务本身其实时健康的,此时不应该注销这个微服务。Eureka用过“自我保护模式”来解决这个问题--当EurekaServer节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入自我保护模式,EurekaServer节点会保护注册表中的信息,不再删除服务注册表中的数据。当网络恢复时自动推出自我保护模式。

    一句话概括:某一时刻某一个微服务不可用了,eureka不会立刻清理,依旧会对该服务的信息进行保存

 若是想要关闭:(不建议关闭)
    eureka:
      server:
        enable-self-preservation: false #禁用自我保护机制

  故障演示:

   技术图片

细节修改:

  修改前:(注意蓝色字体部分)

技术图片

  修改后:

技术图片

  1.主机名称:服务名称修改
    当前问题
    localhost:microservice-product:8001
    在要入住eureka的服务的yml配置文件中的eureka下加上
      instance:
      instanceID: ${spring.application.name}:${server.port} # 指定实例ID 不显示主机名
    修改之后名称变为
      microservice-product:8001(自己想要的名称)
  2. 访问信息有ip信息提示
      当前问题:没有ip提示
      在要入住eureka的服务的yml配置文件中的下加上
        prefer-ip-address: true
  3.微服务info内容详细信息
      当前问题:超链接点击服务报告ErrorPage
      1.修改要入住eureka的服务的pom.xml文件:
      添加:
      <!--actuator监控信息完善-->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
      </dependency>
      2.总的父工程修改pom.xml添加构建build信息
        <build>
          <finalName>microservice-cloud-01</finalName>
          <resources>
            <resource>
              <directory>src/main/resources</directory>
              <filtering>true</filtering>
            </resource>
          </resources>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-resources-plugin</artifactId>
              <configuration>
                <delimiters>
                  <delimiter>$</delimiter>
                </delimiters>
              </configuration>
            </plugin>
          </plugins>
        </build>
    3.修改要入住eureka的服务的.yml文件:
      info:
        app.name: yqk-microservice-cloud-01
        company.name: www.kgc.com
        build.artifactId: $project.artifactId$
        build.version: $project.version$

 Eureka的集群配置:

配置前:

技术图片

配置后:

技术图片

  1.新建工程6002
  2.按照6001为模板修改pom配置文件
  3.修改主启动类
  4.修改映射配置
    修改C:\Windows\System32\drivers\etc 下host文件
    127.0.0.1 eureka6001.com   (即把localhost改为eureka6001.com)
    127.0.0.1 eureka6002.com
  5.修改yml文件
    server:
      port: 6002
    eureka:
      #server:
        #enable-self-preservation: false #禁用自我保护机制
      instance:
        hostname: eureka6002.com #eureka服务端的实例名称
      client:
        register-with-eureka: false #false不向注册中心注册自己
        fetch-registry: false #false表示自己就是注册中心,我的职责是维护服务实例,并不去检索服务
        service-url:
        #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与eureka server交互的地址查询服务和注册服务都依赖这个地址
        defaultZone: http://eureka6001.com:6001/eureka
  4.修改要入住eureka的服务的yml配置文件
    eureka:
      client: #将客户端注册金eureka服务列表内
      service-url:
      defaultZone: http://eureka6001.com:6001/eureka/,http://eureka6002.com:6002/eureka/

  

SpringCloud Eureka服务注册与发现

标签:url   enable   height   end   禁用   sel   source   yml   丢失   

原文地址:https://www.cnblogs.com/yufudiaodayu/p/11436380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!