SpringCloud Eureka服务注册与发现

首先Eureka是什么?  java

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

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

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

Eureka的注册:架构

  要将服务注册到Eureka上app

    1.在pom.xml里加入maven

     

<!--将微服务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注解ide

Eureka的自我保护:spring-boot

 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/

相关文章
相关标签/搜索