zoukankan      html  css  js  c++  java
  • SpringCloud-Eureka

    一.什么是Eureka

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

       •Eureka采用AP原则 A(可用性) p(分区容错性)

    二.原理讲解

        SpringCloud封装了Netflix公司开发的Eureka模块来实现服务注册时和发现。

       Eureka采用了C-S的设计架构。Eureka Server作为服务注册功能的服务器,它是服务注册时中心。

       而系统中的其他微服务,使用eureka的客户端连接到eureka server并维持心跳连接。这样系统的维护人员就可以通过eureka server来监控系统中各个微服务是否正常运行。SpringCloud的一些其他模块 就可以通过eureka server来发现系统中的其他微服务,并执行相关的逻辑。

        
     

      

      

        Eureka包含两个组件:Eureka Server和Eureka Client。

        Eureka Server提供服务注册服务。各个节点启动后,会在Eureka Server中进行注册,这样Eureka server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。

      

    三.创建项目

      •导包

      

     1     <!--导包~-->
     2     <dependencies>
     3         <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
     4         <dependency>
     5             <groupId>org.springframework.cloud</groupId>
     6             <artifactId>spring-cloud-starter-eureka-server</artifactId>
     7             <version>1.4.6.RELEASE</version>
     8         </dependency>
     9         <!--热部署工具-->
    10         <dependency>
    11             <groupId>org.springframework.boot</groupId>
    12             <artifactId>spring-boot-devtools</artifactId>
    13         </dependency>
    14     </dependencies>

      创建application.yml,编写配置文件

      

    server:
      port: 7001
    
    #Eureka配置
    eureka:
      instance:
        hostname: localhost #Eureka服务端的实例名称
      client:
        register-with-eureka: false # 表示禁止eureka注册中心注册自己
        fetch-registry: false #fetch-registry如果为false,则表示自己为注册中心
        service-url: #服务的注册中心地址
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

      •开启功能

      

    @EnableEurekaServer

      •测试

      

      

      

    Eureka:服务注册-信息配置-自我保护机制

      •服务提供者加入eureka依赖

    1   <!--EUREKA-->
    2         <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka -->
    3         <dependency>
    4             <groupId>org.springframework.cloud</groupId>
    5             <artifactId>spring-cloud-starter-eureka</artifactId>
    6             <version>1.4.6.RELEASE</version>
    7         </dependency>

      注册服务

      

    
    
    #Eureka的配置,服务注册到哪里
    eureka:
    client:
    service-url:
    defaultZone: http://localhost:7001/eureka/ #eureka服务中心的地址

      •开启功能

    1 @EnableEurekaClient //在服务启动后自动注册到Eureka中

      测试

      注册成功

      •如何修改Status里面的名称 eureka上的默认描述信息

      

    1 instance:
    2     instance-id: springcloud-provider-dept8001

      •添加监控信息,导入依赖

      

    1  <!--actuator完善监控信息-->
    2         <dependency>
    3             <groupId>org.springframework.boot</groupId>
    4             <artifactId>spring-boot-starter-actuator</artifactId>
    5         </dependency>

      配置信息

      

    1 #info配置
    2 info:
    3   app.name: kuangshen-springcloud
    4   company.name: blog.kuangstudey.com

      测试

     

      如果不设置的话,默认点进去报404,配置这个,就是想让别人知道你的微服务是干什么的。

    Eureka:自我保护机制

      •当我们进行SpringCloud微服务开发的时候,有可能会出现如下的一些红色提示信息。这个是Eureka的自我保护机制。

       •Eureka的自我保护机制用最通俗的语言说就是:好死不如赖活着。一句话:某时刻某一个微服不可用了,eureka不会立刻清理,依旧会对改微服的信息进行保存。

         默认情况下,如果eureka server在一定时间内没有接收到每个微服务实例的心跳,eureka server将会注销该实例。

        

       •在自我保护模式中,eureka server会保护服务注册表中的信息,不再注销任何服务实例。当它收到的心跳数重新恢复到阀值以上时,该eureka server节点就会自动退出自我保护模式。

         •在spring cloud中,可以使用eureka.server.enable-self-preservation=false禁用自我保护模式【不推荐关闭自我保护模式】

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      •扩展团队开发

      开启动能

    1 @EnableDiscoveryClient

       

     1  @Autowired
     2     private DiscoveryClient client;//获取一些配置的信息,得到具体的微服务,主要导入的是springcloud的包
     3     
     4 
     5 @GetMapping("/dept/discovery")
     6     //注册进来的微服务~获取一些信息
     7     public Object discovery() {
     8         //获取微服务列表的清单
     9         List<String> services = client.getServices();
    10         System.out.println("discovery=?services" + services);
    11 
    12         //得到一个具体的微服务信息,通过具体的微服务id applicationName
    13         List<ServiceInstance> instances = client.getInstances("SPRINGCLOUD-PROVIDER-DEPT");
    14         for (ServiceInstance instance : instances) {
    15             System.out.println(
    16                     instance.getHost() + "	" +
    17                             instance.getPort() + "	" +
    18                             instance.getUri() + "	" +
    19                             instance.getServiceId()
    20             );
    21         }
    22         return this.client;
    23     }

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Eureka:集群环境配置

      •创建项目

      

      •导入依赖7002 7003

      

     1    <!--导包~-->
     2     <dependencies>
     3         <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
     4         <dependency>
     5             <groupId>org.springframework.cloud</groupId>
     6             <artifactId>spring-cloud-starter-eureka-server</artifactId>
     7             <version>1.4.6.RELEASE</version>
     8         </dependency>
     9         <!--热部署工具-->
    10         <dependency>
    11             <groupId>org.springframework.boot</groupId>
    12             <artifactId>spring-boot-devtools</artifactId>
    13         </dependency>
    14     </dependencies>

      编写配置7002 7003

      把7001的配置赋值粘贴过来就好了,端口号改一下。

       •编写主启动类 直接赋值粘贴7001修改一个类 例如:7003

      

      

      •修改本机的ip host里面

      

      •从新编写配置,保证7001,7002,7003之间有连接

      

    1 defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ //例子,下面的照着修改就可以了

       提供者的配置,保证注册到三个eureka中

    1   defaultZone:  http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/

       测试

      

      知识点:Eureka和zookeeper的区别  百度搜索CAP原则

      Eureka采用AP,zookeeper采用CP

  • 相关阅读:
    viewport的target density
    iframe 文本编辑器
    201671010115 201620172《Java程序设计》第二周Java心得
    201671010115 201620172《Java程序设计》第四周Java心得
    201671010115 201620172《Java程序设计》对Java这门新课程的看法
    201671010115 201620172《Java程序设计》第三周Java心得
    201671010115 201620172《Java程序设计》第五周学习心得
    201671010115 201620172《Java程序设计》第六—七周Java学习心得
    《怎么样成为一个高手》观后感
    个人作业
  • 原文地址:https://www.cnblogs.com/Spring-M/p/12769781.html
Copyright © 2011-2022 走看看