spring cloud组件Eureka相关理论

一 spring cloud 组件

1.1 综述

在这里插入图片描述

二 服务注册中心

解耦服务提供者和服务消费者

服务注册中心一般存储服务提供地址信息,服务发布的相关信息。消费者通过主动查询和被动通知的方式获取服务提供者的地址信息。消费者只需要知道部署了那些服务,而不需要知道服务位置。这就是透明路由

注册中心还监控服务提供者的健康,失效时将主动剔除。

2.1 服务注册中心一般原理

在这里插入图片描述

push模式: 消费者订阅服务

2.2 主流注册中心对比

  • Zookeeper
    Zookeeper它是一个分布式服务框架,是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题。

    如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。简单来说

    zookeeperz本质=存储+监听通知。

    znode
    Zookeeper用来做服务注册中心,主要是因为它具有节点变更通知功能,只要
    客户端监听相关服务节点,服务节点的所有变更,都能及时的通知到监听客户
    端,这样作为调用方只要使用Zookeeper的客户端就能实现服务节点的订阅和
    变更通知功能了,非常方便。另外,Zookeeper可用性也可以,因为只要半数
    以上的选举节点存活,整个集群就是可用的。

  • Eureka
    由Netflix开源,并被Pivatals集成到SpringCloud体系中,它是基于RestfulAPI
    风格开发的服务注册与发现组件。

  • Consul
    Consul是由HashiCorp基于Go语言开发的支持多数据中心分布式高可用的服务
    发布和注册服务软件,采用Rft算法保证服务的一致性,且支持健康检查。

  • Nacos
    Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平
    台。简单来说Ncos就是注册中心+配置中心的组合,帮助我们解决微服务开
    发必会涉及到的服务注册与发现,服务配置,服务管理等问题。Nacos是
    Spring Cloud Alibaba核心组件之一,负责服务注册与发现,还有配置。

在这里插入图片描述

2.3 Eureka

在这里插入图片描述

在这里插入图片描述

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

Eureka Client是一个Java客户端,用于简化与Eureka Servert的交互;Eureka Server提供服务发现的能力,各个微服务启动时,会通过Eureka Clientl向Eureka Server进行注册自己的信息(例如网铬信息),Eureka Server会存储该服务的信息;

  1. 图中us-east-1c、us-east-1d,us-east-1e代表不同的区也就是不同的机房

  2. 图中每一个Eureka Server都是一个集群。

  3. 图中Application Service作为服务提供者向Eureka Servert中注册服务,Eureka Server接受到注册事件会在集群和分区中进行数据同步,Application Client作为消费端(服务消费者)可以从Eureka Server中获取到服务注册信息,进行服务调用。

  4. 微服务启动后,会周期性地向Eureka Server发送心跳(默认周期为30秒)以续约自己的信息

  5. Eureka Server在一定时间内没有接收到某个微服务节点的心跳。Eureka Server将会注销该微服务节点(默认90秒)

  6. 每个Eureka Serverl同时也是Eureka Client,多个Eureka Server之间通过复
    制的方式完成服务注册列表的同步

  7. Eureka Client会缓存Eureka Servert中的信息。即使所有的Eureka Server节
    点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者

    Eureka通过心跳检测、健康检查和客户端缓存等机制,提高系统的灵活性、可 伸缩性和可用性。

入门代码请看另外一遍博客

入门代码请看另外一遍博客

入门代码请看另外一遍博客

我的怨种同事陈大龙天天pua我。我很生气!!!!!

三 Eureka简单梳理

3.1 元数据

3.1.1 概述

包括标准元数据和自定义元数据。

标准元数据:主机名,ip地址,端口号等信息。这些信息都会被发布在服务注册表中,用于服务之间的调用。在yml文件中,也可以使用标准元数据。

自定义元数据:使用eurreka.instance.metadata-map配置,符合k-v即可。这些元数据可以在远程客户端中访问。

3.1.2 自定义格式

instance:
	metadata-map:
		k: v

3.1.3 远程服务器获取元数据

使用discoveryClient

discoveryClient.getInstances("id").get(0).;

3.2 客户端

客户端就是服务提供者或许服务消费者。

对于客户端来说,要完成对Eureka的注册和续约。

3.2.1 服务注册

  1. 导入eureka-client依赖坐标,配置Eureka服务中心地址
  2. 服务在启动时候会向注册中心发起注册请求,携带服务元数据信息。
  3. Eureka注册中心会把服务的信息保持在Map中。

3.2.2 服务续约

服务每隔30秒需要向注册中心续约(心跳)一次,如果没用续约,租约在90秒到期,服务则失效。

eureka:
	instance:
		lease-renewal-interval-in-seconds: 30
		laese-expiration-duration-in-seconds: 90

3.2.3 消费者获取服务列表

一般来说消费者30秒就会向注册中心拉取一份服务列表

  1. 服务消费者启动时,会像EurekaServer服务列表获取只读备份,缓存到本地。
  2. 每隔30秒,重新获取数据
  3. 时间通过eureka.client.registry-fetch-interval-seconds修改。

3.3 服务端

3.3.1 服务下线

  1. 服务正常下线时,会发送下线的Rest请求给EurekaServer。
  2. 服务中心收到后,将该服务设置为下线状态

3.3.2 失效剔除

  1. EurekaServer会定时(默认60s)进行检查,如果发现实例在一定时间(该时间由客户端设置)内没收到心跳,则注销实例。

3.3.3 自我保护

就像我打陈大龙一样,如果陈大龙被我打怕了,他就会自我保护了。

如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么就会进入自我保护状态。

自我保护状态

  1. 不会剔除任何实例
  2. 仍能接受新服务的注册和插叙请求,不过不会同步到其他节点上面。当网络可用时,会重新同步
  3. eureka.server.enable-self-preservation配置是否打开,默认打开

自我保护状态的设计初衷:

分区网络故障时候,那么通信是不正常的,但是实例运行是正常的。如果剔除,可能会引起其他节点复制。

四 源码剖析

看我七十二变,给我剖析,剖析。计划月底剖!!!
假如没意外的话。

时间安排

时间
2022年3月3日完成Eureka基本入门。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值