zoukankan      html  css  js  c++  java
  • SpringCloud微服务_注册中心Eureka

    Eureka 是什么

       Eureka是Netflix开源的一个RestFul风格的服务,是一个用于注册和发现的中心化的组件。是SpringCloud 微服务必不可少的组成部分。它的核心功能是,为服务提供了一个集中管理的地方。使得服务的请求方不用关心有多少提供方。将服务调用方和服务提供方进行解耦合,使得开发者将精力放到业务上。这样做的好处是,可以使得微服务的网络地址可变,微服务数量可变。更有利于动态调节和分配资源。

      相当于你点外卖,如果没有外卖平台,你吃饭需要知道各个饭店的具体位置,然后需要自己去饭店,或者自己想办法存下饭店的手机号打电话订餐去下单吃饭。有了外卖平台后,你只需要搜索你想吃啥,然后就下单即可,不用自己存储每家饭店的信息。

    Eureka 和微服务关系

      Eureka的服务注册与发现包含两部分:服务器端,另一个是客户端。

      Server是一个公共服务,为Client提供服务注册和发现的功能,维护注册到自身的Client的相关信息,同时提供接口给Client获取注册表中其他服务的信息,使得动态变化的Client能够进行服务间的相互调用。

      pom文件:  

     <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
        </dependencies>
    

      Server 注册中心功能主要有:    

    1. 服务注册表:记录各个微服务信息,例如服务名称,ip,端口等。

      注册表提供 查询API(查询可用的微服务实例)和管理API(用于服务的注册和注销)。

    2. 服务注册与发现:注册:将微服务信息注册到注册中心。发现:查询可用微服务列表及其网络地址。

    3. 服务检查:定时检测已注册的服务,如发现某实例长时间无法访问,就从注册表中移除。

      Client将自己的服务信息通过一定的方式登记到Server上,并在正常范围内维护自己信息一致性,方便其他服务发现自己,同时可以通过Server获取到自己依赖的其他服务信息,完成服务调用,还内置了负载均衡器,用来进行基本的负载均衡。

      pom文件:

     <dependencies>
            	<dependency>
    			<groupId>com.netflix.eureka</groupId>
    			<artifactId>eureka-client</artifactId>
    		</dependency>
        </dependencies>
    

      Client 功能有:  

        1. 注册:每个微服务启动时,将自己的网络地址等信息注册到注册中心,注册中心会存储(内存中)这些信息。
        2. 获取服务注册表:服务消费者从注册中心,查询服务提供者的网络地址,并使用该地址调用服务提供者,为了避免每次都查注册表信息,所以client会定时去server拉取注册表信息到缓存到client本地。
        3. 心跳:各个微服务与注册中心通过某种机制(心跳)通信,若注册中心长时间和服务间没有通信,就会注销该实例。
        4. 调用:实际的服务调用,通过注册表,解析服务名和具体地址的对应关系,找到具体服务的地址,进行实际调用。

      Eureka Server与Eureka Client之间的联系主要通过心跳的方式实现。心跳(Heartbeat)即Eureka Client定时向Eureka Server汇报本服务实例当前的状态,维护本服务实例在注册表中租约的有效性。Eureka Client将定时从Eureka Server中拉取注册表中的信息,并将这些信息缓存到本地,用于服务发现。

    Eureka搭建

      单节点

      服务端搭建

      1.新建一个maven项目,在pom.xml 中,引入Eureka的配置  

    <dependency>
    	<groupId>org.springframework.cloud</groupId>
    	<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    

      2.配置application.yml  

    eureka: 
      client:
        #是否将自己注册到Eureka Server,默认为true,由于当前就是server,故而设置成false,表明该服务不会向eureka注册自己的信息
        register-with-eureka: false
        #是否从eureka server获取注册信息,由于单节点,不需要同步其他节点数据,用false
        fetch-registry: false
        #设置服务注册中心的URL,用于client和server端交流
        service-url:                      
          defaultZone: http://localhost:7900/eureka/
    

      2.配置appplication.properties方式

    #是否将自己注册到Eureka Server,默认为true,由于当前就是server,故而设置成false,表明该服务不会向eureka注册自己的信息
    eureka.client.register-with-eureka=false
    #是否从eureka server获取注册信息,由于单节点,不需要同步其他节点数据,用false
    eureka.client.fetch-registry=false
    #设置服务注册中心的URL,用于client和server端交流
    eureka.client.service-url.defaultZone=http://localhost:7900/eureka/
    

      4.启动类

     在启动类上添加注解,标识该服务为注册中心。

    @EnableEurekaServer
    

      6.运行项目,访问8080端口(可通过配置修改)查看当前Eureka启动情况。

      client 端

      1.创建项目时,在pom中加入如下配置:  

    		<dependency>
    			<groupId>org.springframework.cloud</groupId>
    			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    		</dependency>
    

      2.配置application.yml  

    #注册中心
    eureka: 
      client:
        #设置服务注册中心的URL
        service-url:                      
          defaultZone: http://localhost:7900/eureka/
    

      启动项目会向注册中心进行注册。

    Eureka Server与Eureka Client之间的联系主要通过心跳的方式实现。心跳(Heartbeat)即Eureka Client定时向Eureka Server汇报本服务实例当前的状态,维护本服务实例在注册表中租约的有效性。Eureka Client将定时从Eureka Server中拉取注册表中的信息,并将这些信息缓存到本地,用于服务发现。  

      高可用

       Eureka集群搭建只需要在节点配置appplication的时候,将相关的配置加入即可。

      1.节点1

    #是否将自己注册到其他Eureka Server,默认为true 需要
    eureka.client.register-with-eureka=true
    #是否从eureka server获取注册信息, 需要
    eureka.client.fetch-registry=true
    #设置服务注册中心的URL,用于client和server端交流
    #此节点应向其他节点发起请求
    eureka.client.serviceUrl.defaultZone=http://ek2.com:7902/eureka/
    #主机名,必填
    eureka.instance.hostname=ek1.com
    management.endpoint.shutdown.enabled=true
    #web端口,服务是由这个端口处理rest请求的
    server.port=7901
    

      2.节点2

    #是否将自己注册到其他Eureka Server,默认为true 需要
    eureka.client.register-with-eureka=true
    #是否从eureka server获取注册信息, 需要
    eureka.client.fetch-registry=true
    #设置服务注册中心的URL,用于client和server端交流
    #此节点应向其他节点发起请求
    eureka.client.serviceUrl.defaultZone=http://ek1.com:7902/eureka/
    #主机名,必填
    eureka.instance.hostname=ek2.com
    management.endpoint.shutdown.enabled=true
    #web端口,服务是由这个端口处理rest请求的
    server.port=7902
    文章来源:http://www.cnblogs.com/liyasong/
  • 相关阅读:
    Android调用Camera API 拍照导致图片变形
    [转]Android PorterDuff.Mode效果
    Android视频录制
    Android调用Camera API 拍照
    Android调用系统拍照
    android:windowIsTranslucent影响Activity生命周期onStop
    ProgressBar自定义之后图片拉伸的解决办法
    android开源ORM框架OrmLite使用教程
    AutoCompleteTextView源码分析
    Android App安全加固
  • 原文地址:https://www.cnblogs.com/liyasong/p/springcloud_eureka.html
Copyright © 2011-2022 走看看