系统整理springCloud(二) SpringCloud之Eureka注册中心原理及其搭建

一、Eureka简介

  Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

  1、Eureka组件

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

  1.1 Eureka Server

  Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中看到。
  Eureka Server本身也是一个服务,默认情况下会自动注册到Eureka注册中心。
  如果搭建单机版的Eureka Server注册中心,则需要配置取消Eureka Server的自动注册逻辑。否则报错,逻辑不通。
  Eureka Server通过Register、Get、Renew等接口提供服务的注册、发现和心跳检测等服务。

  2.1 Eureka Client

  Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也具备一个内置的、默认使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)
  Eureka Client分为两个角色,分别是:Application Service(Service Provider)和Application Client(Service Consumer),这两个角色是相对的。

  2.1.1 Application Service

  服务提供方,是注册到Eureka Server中的服务。

  2.1.2 Application Client

  服务消费方,通过Eureka Server发现服务,并消费。

  在这里,Application Service和Application Client不是绝对上的定义,因为Provider在提供服务的同时,也可以消费其他Provider提供的服务;Consumer在消费服务的同时,也可以提供对外服务。

  2、Eureka Server架构原理简介

系统整理springCloud(二) SpringCloud之Eureka注册中心原理及其搭建_第1张图片

Register(服务注册):把自己的IP和端口注册给Eureka。
Renew(服务续约):发送心跳包,每30秒发送一次。告诉Eureka自己还活着。
Cancel(服务下线):当provider关闭时会向Eureka发送消息,把自己从服务列表中删除。防止consumer调用到不存在的服务。
Get Registry(获取服务注册列表):获取其他服务列表。
Replicate(集群中数据同步):eureka集群中的数据复制与同步。
Make Remote Call(远程调用):完成服务的远程调用。

  Eureka Server
  Eureka Server既是一个注册中心,同时也是一个服务。那么搭建Eureka Server的方式和以往搭建Dubbo注册中心ZooKeeper的方式必然不同,那么首先搭建一个单机版的Eureka Server注册中心。

搭建单机版Eureka Server

新建模块mall-eureka-server

添加依赖


    
    
        org.springframework.cloud
        spring-cloud-starter-netflix-eureka-server
    
   
    
    
        org.springframework.boot
        spring-boot-starter-web
    
    
        org.springframework.boot
        spring-boot-starter-actuator
    
    
    
        org.springframework.boot
        spring-boot-devtools
        runtime
        true
    
    
        org.projectlombok
        lombok
    
    
        org.springframework.boot
        spring-boot-starter-test
        test
    
    
        junit
        junit
    
    
        org.apache.httpcomponents
        httpcore
        4.4
    

 

添加配置文件application.yml

server:
  port: 8001

eureka:
    client:
    register-with-eureka: false    #表识不向注册中心注册自己
    fetch-registry: false   #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务
    service-url:
      
      defaultZone: http://127.0.0.1:8080/eureka/   #服务端地址
spring:
  application:
    name: eureka8001  #项目名

启动类配置:
  启动Eureka Server注册中心,和普通的SpringBoot应用的启动没有太大的区别。只需要在启动类上增加@EnableEurekaServer注解,来开启Eureka Server服务即可。
  注意:此处@SpringCloudApplication注解定义启动类。@SpringCloudApplication注解定义启动类涉及到hystrix相关内容。

@EnableEurekaServer

@SpringBootApplication

public class EurekaServerApplication {

public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args);

}

}

启动服务,输入http://127.0.0.1:8080 

系统整理springCloud(二) SpringCloud之Eureka注册中心原理及其搭建_第2张图片

在Eureka监控页面,查看服务注册信息:

系统整理springCloud(二) SpringCloud之Eureka注册中心原理及其搭建_第3张图片

 

在status一列中,显示以下信息:

  • UP(1):代表现在是启动了1个示例,没有集群

  • DESKTOP-2MVEC12:user-service:8081:是示例的名称(instance-id),

    • 默认格式是:${hostname} + ${spring.application.name} + ${server.port}

    • instance-id是区分同一服务的不同实例的唯一标准,因此不能重复。

我们可以通过instance-id属性来修改它的构成:

eureka:
  instance:
    instance-id: ${spring.application.name}:${server.port}

重启服务再试试看

系统整理springCloud(二) SpringCloud之Eureka注册中心原理及其搭建_第4张图片

 

下次讲解euraka集群搭建

你可能感兴趣的:(sringcloud系统整理)