美文网首页
SpringCloud学习(一)之Eureka

SpringCloud学习(一)之Eureka

作者: Gukson666 | 来源:发表于2019-11-27 22:51 被阅读0次

    简介

    Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。也是SpringCloud体系中最重要最核心的组件之一。

    服务中心

    服务中心又称注册中心,管理各种服务功能包括服务的注册、发现、熔断、负载、降级等。可以通过下图进行理解:



    有了服务中心之后,任何一个服务都不能直接去掉用,都需要通过服务中心来调用。比如上图项目A调用项目B,项目B再调用项目C。此时会拆分成两步,第一步是项目A首先从服务中心请求项目B服务器,然后项目B再从服务中心请求项目C服务器。

    1. 通过服务中心来获取服务你不需要关注你调用的项目IP地址,由几台服务器组成,每次直接去服务中心获取可以使用的服务去调用既可。
    2. 由于各种服务都注册到了服务中心,就有了去做很多高级功能条件。比如几台服务提供相同服务来做均衡负载;监控服务器调用成功率来做熔断,移除服务列表中的故障点等等。

    Eureka

    Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现。Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server,并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。Spring Cloud 的一些其他模块(比如Zuul)就可以通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑。

    Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个Java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。可以通过下图理解:



    Eureka的上图的三个部分组成:

    • Eureka Server:提供服务注册和发现
    • Service Provider:将自身服务注册到Eureka,使服务消费方能够找到。
    • Service Consumer:从Eureka获取注册服务列表,从而能够消费服务

    Eureka Server

    核心代码:

    1. 引入依赖:
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>
    
    1. 在启动代码中添加注解@EnableEurekaServer
    @SpringBootApplication
    @EnableEurekaServer
    public class SpringCloudEurekaApplication {
        public static void main(String[] args) {
            SpringApplication.run(SpringCloudEurekaApplication.class, args);
        }
    }
    
    1. 在application.yml添加以下配置:
    spring:
      application: 
        name: eurka-server
    
    server:
      port: 8761
    eureka:
      client:
        register-with-eureka: false
        fetch-registry: false
        serviceUrl:
          defaultZone: http://localhost:${server.port}/eureka/
    
    • register-with-eureka:在默认设置(true)下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为。
    • fetch-registry:表示是否从Eureka Server获取注册信息,默认为true。
    • defaultZone:设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka,多个地址可使用逗号分隔。

    启动工程后,访问 http://localhost:8761/ 即可看到Eureka Server界面。

    Eureka Client

    当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka server 从每个client实例接收心跳消息。 如果心跳超时,则通常将该实例从注册server中删除。
    核心代码:

    1. 引入依赖:
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    
    1. 在启动代码中添加注解@EnableEurekaClient
    @SpringBootApplication
    @EnableEurekaClient
    public class ServiceApplication {
        public static void main(String[] args) {
            SpringApplication.run( ServiceApplication.class, args);
        }
    }
    
    1. 在application.yml添加以下配置:
    server:
      port: 8762
    
    spring:
      application:
        name: service-1
    
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8761/eureka/
    

    启动工程后,再打开http://localhost:8761,即可看到服务成功注册进来。

    相关文章

      网友评论

          本文标题:SpringCloud学习(一)之Eureka

          本文链接:https://www.haomeiwen.com/subject/iiymwctx.html