Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建

这篇具有很好参考价值的文章主要介绍了Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

前言

Eureka:服务注册与发现组件,用于实现服务的自动注册与发现,Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装,它实现了服务治理的功能,Spring Cloud Eureka提供服务端与客户端,服务端即是Eureka服务注册中心,客户端完成微服务向Eureka服务的注册与发现。服务端和客户端均采用Java语言编写。

Eureka作为初代的服务注册和发现组件,其基本思想和原理对于后来的Nacos有深远的影响,在nacos中也能隐约看到其身影。

本篇博客介绍Eureka的简介和原理,结合实际使用阐述Eureka的使用并进行分析,此外,介绍了心跳续约策略,服务的下线和剔除以及自我保护,还有Eureka集群的搭建方式。

git代码仓库:https://gitee.com/pet365/spring-cloud-eureka

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

引出


1.Eureka的简介和原理;
2.结合实际使用阐述Eureka的使用并进行分析;
3.介绍了心跳续约策略,服务的下线和剔除以及自我保护;
4.Eureka集群的搭建方式,高可用;文章来源地址https://www.toymoban.com/news/detail-752787.html

Eureka初识

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

Eureka架构中的三个核心角色:

  • 服务注册中心
    Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-server。

  • 服务提供者
    提供服务的应用,可以是SpringBoot应用,也可以是其它任意技术实现,只要对外提供的是Rest风格服务即可。本例中就是我们实现的spring-provider。

  • 服务消费者
    消费应用从注册中心获取服务列表,从而得知每个服务方的信息,知道去哪里调用服务方。本例中
    就是我们实现的spring-consumer。

有趣故事

Eureka的故事来源于人人追求真善美的古希腊,“Eureka”是希腊语,意思是“我发现了!”

这个有魔力的单词是来源于阿基米德。在公元前200多年,他在洗澡时发现了证明王冠是否纯金的方法(黄金密度),他激动地一边大喊“Eureka!”一边跳出澡盆奔去王宫,连衣服都忘了穿。后来人们用Eureka这个词来形容洞察浮现的瞬间。

SMS、库存、积分服务器,服务迁移变更等需要修改相应的URL地址,怎么不修改URL地址?

在微服务中,spring-provider对外提供服务,需要对外暴露自己的地址。而consumer(调用者)需要记录服务提供者的地址。将来地址出现变更,还需要及时更新。这在服务较少的时候并不觉得有什么,但是在现在日益复杂的互联网环境,一个项目肯定会拆分出十几,甚至数十个微服务。此时如果还人为管理地址,不仅开发困难,将来测试、发布上线都会非常麻烦

这就好比是 网约车出现以前,人们出门叫车只能叫出租车。一些私家车想做出租却没有资格,被称为黑车。而很多人想要约车,但是无奈出租车太少,不方便。私家车很多却不敢拦(没有人告诉哪些车私家车可以拉人),而且满大街的车,谁知道哪个才是愿意载人的。一个想要,一个愿意给,就是缺少引子,缺乏管理啊。

此时滴滴这样的网约车平台出现了,所有想载客的私家车全部到滴滴注册,记录你的车型(服务类型),身份信息(联系方式)。这样提供服务的私家车,在滴滴那里都能找到,一目了然。

此时要叫车的人,只需要打开APP,输入你的目的地,选择车型(服务类型),滴滴自动安排一个符合需求的车到你面前,为你服务,完美!

Eureka做什么?

Eureka就好比是滴滴中心,负责管理、记录服务提供者的信息。服务调用者无需自己寻找服务,而是把自己的需求告诉Eureka,然后Eureka会把符合你需求的服务告诉你。

同时,服务提供方与Eureka之间通过“心跳” 机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务列表中剔除。

这就实现了服务的自动注册、发现、状态监控。

Eureka是啥?

Eureka简介

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装,它实现了服务治理的功能,Spring Cloud Eureka提供服务端与客户端,服务端即是Eureka服务注册中心,客户端完成微服务向Eureka服务的注册与发现。服务端和客户端均采用Java语言编写。

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

一个消费者和一个生产者

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

多个消费者与多个生产者

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

下图显示了Eureka Server与Eureka Client的关系

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

  • Eureka Server是服务端,负责管理各个微服务结点的信息和状态。
  • 在微服务上部署Eureka Client程序,远程访问Eureka Server将自己注册在Eureka Server。
  • 微服务需要调用另一个微服务时从Eureka Server中获取服务调用地址,进行远程调用。

原理

  • 服务提供方启动后将注册到注册中心,提供IP, 名字,什么服务等信息,
  • 服务调用方作为客户端注册到注册中心后,拉取注册中心的服务列表,在通过负载均衡调用对应的服务提供方。
  • 注册中心可以建立集群,生成多台eureka,注册中心为了监测各个服务的心跳,将在每30S 向所注册的服务发起请求判断
  • 服务是否挂掉,如果挂掉90S后将会将服务从注册中心剔除。
  • 一个服务可以监测多台服务实例,从而可实现均衡负载。

Eureka使用Hello案例

注册中心Eureka

引入依赖

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

eureka的配置文件

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

server:
  port: 9001 #  eureka默认端口号为8761
eureka:
  client:
    # EurekaServer的地址,现在是自己的地址,如果是集群,需要加上其它Server的地址
    service-url:
      defaultZone: http://127.0.0.1:${server.port}/eureka
    # 不把自己注册到eureka服务列表
    register-with-eureka: false
    # 拉取eureka服务信息
    fetch-registry: false #false表示自己就是注册中心,不需要从注册中心获取注册列表信息
  instance:
    #客户端在注册时使用自己的IP而不是主机名
    prefer-ip-address: true
    # 实例id
    instance-id: ${spring.cloud.ip-address}:${spring.application.name}:${server.port}

logging:
  level:
    root: debug
配置说明:

register-with-eureka: false false表示不向注册中心注册自己

fetch-registry: false false表示自己就是注册中心,不需要从注册中心获取注册列表信息

service-url 设置eureka server交互的地址查询服务和注册服务都需要用到这个地址(单机用)

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

主启动类

在eureka-server的主启动类上开启eureka服务**@EnableEurekaServer**

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

package com.tianju.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer // 声明当前springboot应用是一个eureka服务中心
public class EurekaApp {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApp.class);
    }
}

浏览器访问

启动eureka-server子项目,在浏览器上访问localhost:9001

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

查看日志

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

搭建生产者Provider

引入依赖

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

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

<!--        在provider的pom文件中添加监控依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

配置yml文件

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

server:
  port: 10010

eureka:
  client: #客户端注册到eureka列表中
    service-url:
      defaultZone: http://127.0.0.1:9001/eureka
  instance:
    prefer-ip-address: true #显示访问url 客户端在注册时使用自己的IP而不是主机名
#    # 实例id
#    instance-id: ${spring.cloud.ip-address}:${spring.application.name}:${server.port}
    instance-id: provider-10010  #注册中心显示出来的微服务名称

# 应用名称
spring:
  application:
    name: springCloud-provider

info:
  app.name: SpringCloud
  company.name: tianju
  build.artifactId: $project.artifactId$
  build.version: $project.version$

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

主启动类

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

package com.tianju.provider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient // 或 @EnableDiscoveryClient
public class ProviderApp {
    public static void main(String[] args) {
        SpringApplication.run(ProviderApp.class);
    }
}

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

@EnableEurekaClient和@EnableDiscoveryClient区别

在使用Spring Cloud feign使用中在使用服务发现的时候提到了两种注解:
一种为@EnableDiscoveryClient;
一种为@EnableEurekaClient,用法上基本一致

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

spring cloud中discovery service有许多种实现(eureka、consul、zookeeper等等),

@EnableDiscoveryClient基于spring-cloud-commons;
@EnableEurekaClient基于spring-cloud-netflix。

其实用更简单的话来说,就是如果选用的注册中心是eureka,那么就推荐@EnableEurekaClient, 如果是其他的注册中心,那么推荐使用@EnableDiscoveryClient。

注解@EnableEurekaClient上有@EnableDiscoveryClient注解,可以说基本就是EnableEurekaClient有@EnableDiscoveryClient的功能,另外上面的注释中提到,其实@EnableEurekaClient注解就是一种方便使用eureka的注解而已,可以说使用其他的注册中心后,都可以使用@EnableDiscoveryClient注解,但是使用@EnableEurekaClient的情景,就是在服务采用eureka作为注册中心的时候,使用场景较为单一。

查看日志

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

修改配置信息,变成了20s

lease-renewal-interval-in-seconds: 20 #心跳时间

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

server:
  port: 10010

eureka:
  client: #客户端注册到eureka列表中
    service-url:
      defaultZone: http://127.0.0.1:9001/eureka
  instance:
    prefer-ip-address: true #显示访问url 客户端在注册时使用自己的IP而不是主机名
#    # 实例id
#    instance-id: ${spring.cloud.ip-address}:${spring.application.name}:${server.port}
    instance-id: provider-10010  #注册中心显示出来的微服务名称
    lease-renewal-interval-in-seconds: 20   #心跳时间
    lease-expiration-duration-in-seconds: 60 #下线时间

# 应用名称
spring:
  application:
    name: springCloud-provider

info:
  app.name: SpringCloud
  company.name: tianju
  build.artifactId: $project.artifactId$
  build.version: $project.version$

搭建消费者consumer

引入依赖配置等雷同

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

注册到eureka

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

主启动类

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

package com.tianju.consumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApp {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApp.class);
    }

    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

}

在生产端提供controller

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

在消费端调用生产者

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

package com.tianju.consumer.controller;

import com.netflix.appinfo.InstanceInfo;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/consumer")
@Slf4j
public class ConsumerController {

    @Resource
    private DiscoveryClient discoveryClient;

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/getId/{id}")
    public String getMsg(@PathVariable("id") String id) {
        List<ServiceInstance> instances = discoveryClient.getInstances("springCloud-provider");
        ServiceInstance instance = instances.get(0);
        String host = instance.getHost();
        int port = instance.getPort();
        log.debug("消费者拼出路径+端口:"+ host+":"+port);

        // 获取ip和端口信息,拼接成服务地址
        String baseUrl = "http://" + instance.getHost() + ":" +
                instance.getPort() + "/provider/get/" + id;
        String consumer = restTemplate.getForObject(baseUrl, String.class);

        log.debug("采用restTemplate调用生产者:"+baseUrl);
        return "消费者调用生产者获得消息:"+consumer;
    }
}

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

心跳和续约策略

Eureka:就是服务注册中心(可以是一个集群),对外暴露自己的地址

  • 提供者:启动后向Eureka注册自己信息(地址,提供什么服务)
  • 消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新
  • 心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

常见概念

Register 服务注册

当Eureka客户端向Eureka Server注册时,它提供自身的元数据,比如IP地址、端口,运行状况指示符URL,主页等。

Renew 服务续约(心跳机制)

Eureka客户会每隔30秒发送一次心跳来续约。通过续约来告知Eureka Server该Eureka客户仍然存在,没有出现问题。正常情况下,如果Eureka Server在90秒没有收到Eureka客户的续约,它会将实例从其注册表中删除。建议不要更改续约间隔。

  • 心跳机制是每隔30秒发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制。
  • 心跳机制是每隔30秒发送一个固定信息给服务端,服务端收到后回复一个固定的信息。如果服务端90秒内没有收到客户端消息则视客户端断开。
  • 发送方可以是客户端或服务端,根据实际情况,一般是客户端;因为一个服务端可能有很多客户端,服务端作为发送方的比较耗费性能。

Fetch Registries 获取注册列表信息

Eureka客户端从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。每次返回注册列表信息可能与Eureka客户端的缓存信息不同, Eureka客户端自动处理。如果由于某种原因导致注册列表信息不能及时匹配,Eureka客户端则会重新获取整个注册表信息。 Eureka服务器缓存注册列表信息,整个注册表以及每个应用程序的信息进行了压缩,压缩内容和没有压缩的内容完全相同。Eureka客户端和Eureka 服务器可以使用JSON / XML格式进行通讯。在默认的情况下Eureka客户端使用压缩JSON格式来获取注册列表的信息。

服务的下线和剔除

Cancel 服务下线

Eureka客户端在程序关闭时向Eureka服务器发送取消请求,发送请求后,该客户端实例信息将从服务器的实例注册表中删除,该下线请求不会自动完成,它需要调用以下内容:

DiscoveryManager.getInstance().shutdownComponent();

服务进行正常关闭操作,会触发一个服务下线的REST请求给Eureka Server,告诉服务注册中心:“我要下线了”。服务中心接受到请求之后,将该服务置为下线状态。

Eviction 服务剔除

在默认的情况下,当Eureka客户端连续90秒没有向Eureka服务器发送服务续约(心跳),Eureka服务器会将该服务实例从服务注册列表删除,即服务剔除。

有些时候,我们的服务提供方并不一定会正常下线,可能因为内存溢出、网络故障等原因导致服务无法正常工作。Eureka Server需要将这样的服务剔除出服务列表。因此它会开启一个定时任务,每隔60秒对所有失效的服务(超过90秒未响应)进行剔除。

可以通过eureka.server.eviction-interval-timer-in-ms 参数对其进行修改,单位是毫秒。

eureka:
	server:
		# 每隔多久(ms)触发一次服务剔除
		eviction-interval-timer-in-ms: 10000

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

自我保护

我们关停一个服务,就会在Eureka面板看到一条警告:

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

这是触发了Eureka的自我保护机制。当一个服务未按时进行心跳续约时,Eureka会统计最近15分钟心跳失败的服务实例的比例是否超过了85%。在生产环境下,因为网络延迟等原因,心跳失败实例的比例很有可能超标,但是此时就把服务剔除列表并不妥当,因为服务可能没有宕机。

Eureka就会把当前实例的注册信息保护起来,不予剔除。生产环境下这很有效,保证了大多数服务依然可用。

但是这给我们的开发带来了麻烦, 因此开发阶段我们都会关闭自我保护模式:(eureka-server)

eureka:
	server:
		enable-self-preservation: false # 如果为true,表示要保护实例,不被剔除,false关闭自我保护模式,剔除实例
		eviction-interval-timer-in-ms: 10000 # 扫描失效服务的间隔时间(缺省为60*1000ms)

如果保护实例不被剔除,而且配置了 eviction-interval-timer-in-ms: 10000,则eviction-intervaltimer-in-ms参数为准,实例还是会被剔除

eureka:
	server:
		enable-self-preservation: true # 如果为true,表示要保护实例,不被剔除,false关闭自我保护模式,剔除实例
		#eviction-interval-timer-in-ms: 10000 # 扫描失效服务的间隔时间(缺省为60*1000ms)

Eureka集群搭建

Eureka Server即服务的注册中心,在刚才的案例中,我们只有一个EurekaServer,事实上EurekaServer也可以是一个集群,形成高可用的Eureka中心。

多个Eureka Server之间也会互相注册为服务,当服务提供者注册到Eureka Server集群中的某个节点时,该节点会把服务的信息同步给集群中的每个节点,从而实现数据同步。

因此,无论客户端访问到Eureka Server集群中的任意一个节点,都可以获取到完整的服务列表信息。

允许多个实例

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

1.启动第一个

所谓的高可用注册中心,其实就是把EurekaServer自己也作为一个服务进行注册,这样多个EurekaServer之间就能互相发现对方,从而形成集群。因此我们做了以下修改:把service-url的值改成了另外一台EurekaServer的地址,而不是自己。

先启动一个

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

启动报错,很正常。因为另一个服务没有启动

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

2.再启动一个

启动第二个eurekaServer,再次修改eureka-server的配置

再启动一个

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

3.访问集群

集群效果

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

4.客户端注册

因为EurekaServer不止一个,因此注册服务的时候,service-url参数需要变化:

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

5.注册效果

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud

Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建,SpringBoot,eureka,云原生,spring cloud


总结

1.Eureka的简介和原理;
2.结合实际使用阐述Eureka的使用并进行分析;
3.介绍了心跳续约策略,服务的下线和剔除以及自我保护;
4.Eureka集群的搭建方式,高可用;

到了这里,关于Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes 中的服务注册与发现原理分析

    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。 对k8s有点了解技术人员,应该都只知道k8s是有服务注册发现的,今天就分析下这个原理,看看怎么实现的。 服务注册与发现是一种机制,用于在集群中动态地发现和连接不同的服务,比如

    2024年02月05日
    浏览(68)
  • eureka服务注册和服务发现

    我们要在orderservice中根据查询到的userId来查询user,将user信息封装到查询到的order中。 一个微服务,既可以是服务提供者,又可以是服务消费者,因此eureka将服务注册、服务发现等功能统一封装到了eureka-client端

    2024年02月10日
    浏览(36)
  • 服务注册发现_搭建单机Eureka注册中心

    创建cloud-eureka-server7001模块 pom添加依赖 写yml文件 主启动类 测试 访问浏览器localhostL:7001 参数: Environment: 环境,默认为test,该参数在实际使用过程中,可以不用更改 Data center: 数据中心,使用的是默认的是 “MyOwn” Current time:当前的系统时间 Uptime:已经运行了多少时间

    2024年02月07日
    浏览(44)
  • 微服务注册与发现——Eureka

    服务发现(注册)机制 nodejs的Eureka Client开源实现 服务发现组件具备功能: 服务注册表 服务注册与服务发现 服务检查 Eureka架构图 http://localhost:8761/ 微服务工程添加引用 注意添加版本号,否则会下载不下来 增加配置 启动类增加注解 启动服务注册 防止因Eureka Server宕机导致微

    2024年02月04日
    浏览(45)
  • springcloud Eureka服务注册与发现

    代码上传到 :https://github.com/13thm/study_springcloud/tree/main/days3 什么是服务治理 Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理 什么是服务注册与发现 Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使

    2024年01月18日
    浏览(69)
  • 第二章 Eureka服务注册与发现

    gitee:springcloud_study: springcloud:服务集群、注册中心、配置中心(热更新)、服务网关(校验、路由、负载均衡)、分布式缓存、分布式搜索、消息队列(异步通信)、数据库集群、分布式日志、系统监控链路追踪。 1. Eureka基础知识 什么是服务治理? 在传统的rpc远程调用框

    2024年02月03日
    浏览(51)
  • 1-Eureka服务注册与发现以及Eureka集群搭建(实操型)

    直接看下面的文章 idea创建maven多模块项目. 简单介绍一下: 父工程: dog-cloud-parent 管理实体项目: dog-po 微服务-服务提供者: dog-provider-8001 微服务-服务消费者: dog-consumer-80 如下: 1.3.1 父工程:dog-cloud-parent pom如下: 1.3.2 管理实体项目:dog-po 如下: 1.3.3 服务提供者:dog-

    2024年02月16日
    浏览(54)
  • Eureka、Zookeeper、Consul服务注册与发现

    一、Eureka服务注册与发现 1.1 概念 Eureka 是 Netflix 公司开源的一个服务注册与发现的组件 。 Eureka 和其他 Netflix 公司的服务组件(例如负载均衡、熔断器、网关等) 一起,被 Spring Cloud 社区整合为Spring-Cloud-Netflix 模块。 Eureka 包含两个组件:Eureka Server (注册中心) 和 Eureka Clien

    2024年02月02日
    浏览(44)
  • 什么是SpringCloud Eureka服务注册与发现

    😀前言 本篇博文是关于SpringCloud Eureka 介绍,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰 如果文

    2024年02月09日
    浏览(48)
  • SpringCloud服务注册与发现组件Eureka(五)

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

    2024年02月09日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包