SpringCloud 学习笔记之Eureka

Eureka

文章内容为本人在B站尚硅谷频道学习《SpringCloud(H版&alibaba)》整理复习而得

一、Eureka 基础

**服务治理:**在传统的rpc远程调用框架中,管理每个服务与服务之间的依关系比较复杂,所以需要使用服务治理,管理服务与服务之间的依赖关系,可以实现服务调用、负载均衡、容错等,实现服务的发现与注册。

**服务注册:**Eureka采用了CS的设计架构。Eureka Server作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用Eureka的客户端连接到Eureka Server 并维持心跳链接。这样系统的维护人员就可以通过Eureka Server来监控系统中各个微服务是否正常运行。

在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息,比如:服务器的地址、通讯地址等以别名的方式注册到注册中心上。另一方面(消费者|服务提供者),以该别名去注册中心上获取到实际的服务通讯地址,然后再实现本地rpc调用。

**RPC远程调用框架核心设计思想:**在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。在任何rpc远程框架中,都会有一个注册中心(存放服务地址相关信息(接口地址))

左图是Eureka系统架构,右图是Dubbo的架构

在这里插入图片描述

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

**Eureka Server提供服务注册服务:**各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到。

**EurekaClient通过注册中心进行访问:**是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)

二、单机Eureka构建

2.1 创建EurekaServer端服务中心
  1. 创建Module :cloud-eureka-server7001

  2. 修改pom.xml文件,添加eureka server依赖

    在这里插入图片描述

  3. 编写application.yml配置文件
    在这里插入图片描述

  4. 编写主启动类——添加@EnableEurekaServer注解

在这里插入图片描述

  1. 测试

    在这里插入图片描述

2.2 创建EurekaClient端
  1. 创建Module:cloud-provider-payment8001

  2. 修改pom.xml文件,添加erurka client依赖

    在这里插入图片描述

  3. 编写application.yml配置文件

    在这里插入图片描述

  4. 编写主启动类——添加@EnableEurekaClient注解

    在这里插入图片描述

  5. 测试,先启动 eureka server 端再启动 eureka client 端

    在这里插入图片描述

三、 Eureka集群

**什么是集群:**集群是一组协同工作的服务实体, 用以提供比单一服务实体更具扩展性和可用性的服务平台。

**Eureka集群的原理:**多个Eureka Server服务相互注册,相互守望。

在这里插入图片描述

3.1 创建多个Eureka Client,Eureka Server

####3.2 Eureka Server之间相互注册

cloud-eurake-server7001注册cloud-eureka-server7002

在这里插入图片描述

cloud-eureka-server7002注册cloud-eurake-server7001

在这里插入图片描述

####3.3 Eureka Client注册进入Eureka Server

在这里插入图片描述

####3.4 检测

在这里插入图片描述

####3.5 负载均衡

修改服务使用者cotroller :

在这里插入图片描述

使用@LoadBalanced注解赋予RestTemplate负载均衡的能力

四、服务发现Discovery

4.1修改服务提供者的controller

在这里插入图片描述

4.2修改服务提供者的启动类

添加@EnableDiscovery

在这里插入图片描述

五、Eureka自我保护

5.1 为什么会产生Eureka自我保护机制?

为防止Eureka Client 可以正常运行,但是与Eureka Server 网络不通情况下 Eureka Server立刻将Eureka Client服务剔除

5.2 什么是自我保护模式?

默认情况下,如果EurekaServer在一定时间内没有接收到某个微服务实例的心跳,EurekaServer将会注销该实例(默认90秒)。但是当网络分区故障发生(延时、卡顿、拥挤)时,微服务与EurekaServer之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康的,此时本不应该注销这个微服务。Eureka通过“自我保护模式”来解决这个问题——当EurekaServer节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。在自我保护模式中,Eureka Server会保护服务注册表中的信息,不再注销任何服务实例。它的设计哲学就是宁可保留错误的服务注册信息,也不盲目注销任何可能健康的服务实例。

5.3关闭自我保护

出厂默认自我保护机制开启

在这里插入图片描述

  1. 注册中心Eureka Server端

在这里插入图片描述

  1. 客户端Eureka Client端

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值