spring cloud 之 eureka

这篇具有很好参考价值的文章主要介绍了spring cloud 之 eureka。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Eureka概述

Spring Cloud封装了Netflix 公司开发的Eureka模块来实现服务治理,SpringCloud将它集成在其子项目spring-cloud-netflix中

在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息比如服务地址通讯地址等以别名方式注册到注册中心上

强调一下,eureka从2.0开源版本已经停止,不再维护,建议使用alibaba的nacos作为注册中新和配置中心 

spring cloud 之 eureka,springCloud,spring cloud,eureka,spring

Eureka核心原理 

Eureka组件

Eureka Server:Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册

Eureka Client:Eureka Client用于简化与Eureka Server的交互,向注册中心注册、服务续约,下线、拉取注册信息

Eureka Server 和Eureka Client 都需要自己搭建,而nacos不需要自己搭建注册中心服务,各自的微服务中只需集成客户端即可

Eureka Server 

  Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,并且注册服务会对注册信息进行缓存

服务注册:服务提供者启动时,会通过 Eureka Client 向 Eureka Server 注册信息,Eureka Server 会存储该服务的信息,Eureka Server 内部有二层缓存机制来维护整个注册表,相当于注册服务会维护一个map来缓存信息

public abstract class AbstractInstanceRegistry implements InstanceRegistry {
    private static final Logger logger = LoggerFactory.getLogger(AbstractInstanceRegistry.class);
    private static final String[] EMPTY_STR_ARRAY = new String[0];
    private final ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>> registry = new ConcurrentHashMap();
    protected Map<String, RemoteRegionRegistry> regionNameVSRemoteRegistry = new HashMap();
    protected final ConcurrentMap<String, InstanceStatus> overriddenInstanceStatusMap;
    private final AbstractInstanceRegistry.CircularQueue<Pair<Long, String>> recentRegisteredQueue;
    private final AbstractInstanceRegistry.CircularQueue<Pair<Long, String>> recentCanceledQueue;
    private ConcurrentLinkedQueue<AbstractInstanceRegistry.RecentlyChangedItem> recentlyChangedQueue;

提供注册表:服务消费者在调用服务时,如果 Eureka Client 没有缓存注册表的话,会从 Eureka Server 获取最新的注册表

同步状态:Eureka Client 通过注册、心跳机制和 Eureka Server 同步当前客户端的状态

Eureka Client

在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka  Server将会从服务注册表中把这个服务节点移除(默认90秒),Eureka Client 会拉取、更新和缓存 Eureka Server 中的信息

因此当所有的 Eureka Server 节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者,但是当服务有更改的时候会出现信息不一致

 服务注册:client在启动的时候将自身注册到注册服务它提供自身的元数据,比如 IP 地址、端口,运行状况指示符 URL,主页等

服务续约:Eureka Client服务注册后, 会每隔 30 秒发送一次心跳来续约。 通过续约来告知 Eureka Server 该 Eureka Client 运行正常,没有出现问题

服务剔除: Eureka Server启动时会创建一个定时任务,每隔60s执行一次,把当前注册表中超时(90s)没有续约的Eureka Client服务剔除,但实际上是180s剔除,这是Eureka的一个bug

在服务续约的时候将服务的过期时间修改为当前时间加90s,
后台线程检测线程(60s检测一次)判断注册信息是否需要过期剔除的时候,又将过期时间增加了 90s 然后和当前时间校对,相当于一共延后了180s

拉取注册列表:每隔30s 拉取Eureka Server注册实例信息。TimedSupervisorTask 固定周期性任务,一但超时就会将下一个任务的执行时间间隔增大一倍,直到超过最大任务执行间隔的限制,一旦任务不在超时,就会将任务的执行间隔恢复为默认值

服务下线:Eureka Client 在程序关闭时向 Eureka Server 发送取消请求。 发送请求后,该客户端实例信息将从 Eureka Server 的实例注册表中删除

Eureka Server搭建

添加依赖

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
</dependencies>

 添加配置

  application.yml

server:
  port: 9000
spring:
  application:
    name: cloud-eureka-server
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:9000/eureka/
    register-with-eureka: false

在启动类上添加服务中心注解@EnableEurekaServer

package com.slbuildenv.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaMainApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaMainApplication.class,args);
    }

}

启动访问 

spring cloud 之 eureka,springCloud,spring cloud,eureka,spring

 Eureka Client搭建

添加依赖

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

    </dependencies>

添加配置 

application.properties

server.port= 9400
spring.application.name= cloud-test-service
eureka.client.service-url.defaultZone= http://127.0.0.1:9000/eureka

添加客户端注解@EnableEurekaClient 

package com.slbuildenv.cloud;

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

@SpringBootApplication
@EnableEurekaClient
public class TestMainApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestMainApplication.class,args);
    }
}

启动测试

spring cloud 之 eureka,springCloud,spring cloud,eureka,spring

 可以看到我们的服务已经注册到Eureka Server上

Eureka集群配置

集群配置很简单,这里不做搭建,写一下集群配置如下:文章来源地址https://www.toymoban.com/news/detail-524323.html

eureka:
  client:
    register-with-eureka: true
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: true
    service-url:
       #集群配置使用逗号隔开即可
      defaultZone: http://127.0.0.1:9000/eureka, http://127.0.0.1:9001/eureka

到了这里,关于spring cloud 之 eureka的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring Cloud应用- Eureka原理、搭建

    初期对Spring Cloud的学习以应用搭建为主,所以内容不会太枯燥。 一直以来,自以为Spring全家桶的学习中,Spring framework是基础中的基础,部分内容也还是必须要读源码去理解底层原理,SpringMVC、SpringBoot,甚至Mybatis等等,都是如此。但是对于Spring Cloud来说,就从应用入手,以系

    2024年02月06日
    浏览(34)
  • 【Spring Cloud系列】- Eureka使用详解

    Eureka2.0版本已经停止维护,为什么要写这篇博客重复已停止更新的中间件,其目的主要是: 认识微服务注册中心:虽然Eureka已经停止维护,但微服务架构在当今非常流程,学习Eureka可以更好的理解微服务。 便于老旧系统维护:如果使用微服务,公司一定会存在使用Eureka服务

    2024年02月09日
    浏览(32)
  • 2-Spring cloud之Eureka快速剔除失效服务 以及 Eureka原理

    添加如下配置: 每个服务的yml配置如下: 如下: 更多可以参考下面的文章,说的不错 Eureka服务端挂了,为什么微服务还能调通?(原理分析).

    2024年02月13日
    浏览(41)
  • Spring Cloud 之注册中心 Eureka 精讲

    🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝 🍓 更多文章请点击 Spring Cloud 官网:https://spring.io/proj

    2024年02月12日
    浏览(34)
  • Spring Cloud Eureka:服务注册与发现

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Spring Cloud Eureka是Spring Cloud生态系统中的一个组件,它是用于实现服务注册与发现的服务治理组件。在微服务架构中,服务之间存在复杂的依赖关系,而Spring Cloud Eureka可以帮助解决服务之间相互查找和通信的问题 Eurek

    2024年02月09日
    浏览(37)
  • 二、Spring Cloud Eureka 简介、快速入门

    Eureka 来源于古希腊词汇,意为“发现了”。在软件领域, Eureka 是 Netflix 在线影片公司开源的一个 服务注册与发现的组件 ,和其他 Netflix 公司的服务组件(例如负载均衡、熔断器、网关等) 一起,被 Spring Cloud 社区整合为 Spring Cloud Netflix 模块。 Eureka 是 Netflix 贡献给 Spring

    2024年02月12日
    浏览(65)
  • Spring Cloud Netflix微服务组件-Eureka

    目录 CAP理论 注册中心对比 为什么注册中心更适合用AP? 分布式系统AP和CP如何取舍? Eureka核心功能点 Euraka server启动的主线流程 总体流程图 @EnableEurekaServer 流程图 EurekaServerAutoConfiguration EurekaServerInitializerConfiguration Euraka client启动的主线流程 总体流程图 EurekaClientAutoConfigurat

    2024年02月01日
    浏览(47)
  • Spring Cloud系列(二):Eureka Server应用

    Spring Cloud系列(一):Spirng Cloud变化 Spring Cloud系列(二):Eureka Server应用     前言 注册中心对比         Nacos         Zookeeper         Consul 搭建服务         准备         搭建                 搭建父模块                 搭建Server模块 启动服务

    2024年04月13日
    浏览(35)
  • Eureka:Spring Cloud服务注册与发现组件

    Eureka 一词来源于古希腊词汇,是“发现了”的意思。在软件领域,Eureka 是 Netflix 公司开发的一款开源的服务注册与发现组件。 Spring Cloud 将 Eureka 与 Netflix 中的其他开源服务组件(例如 Ribbon、Feign 以及 Hystrix 等)一起整合进 Spring Cloud Netflix 模块中,整合后的组件全称为 Spr

    2024年02月03日
    浏览(37)
  • 【spring cloud学习】3、Eureka Server注册中心

    Eureka本身是Netflix开源的一款注册中心产品,并且Spring Cloud提供了相应的集成封装。选择Eureka作为注册中心实例来讲解是出于以下原因: (1)Eureka在业界的应用十分广泛,整个框架经受住了Netflix严酷生产环境的考验。 (2)除了Eureka注册中心外,Netflix的其他服务治理功能也十

    2024年02月11日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包