springCloud—Eureka知识点总结

本文详细介绍了SpringCloud中的Eureka服务注册与发现机制,包括Eureka如何解决服务地址管理和监控问题,以及服务提供者、服务消费者和EurekaServer的角色。通过配置Eureka客户端,实现服务的自动注册、续约和失效剔除,并探讨了高可用EurekaServer的设置。此外,还提到了自我保护机制和如何关闭自我保护模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:学习挺折磨人的,不过撑过去学完看看学完的“战利品”也挺爽的。(手动狗头)

springcloud

废话不多说先上官网

Spring Cloud简介

Spring Cloud将现在非常流行的一些技术整合到一起,实现了诸如:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态等等功能。

Note:

1.springCloud和Springboot上版本是有要求的。见博客

2.微服务中需要一个父项目同时有多个子项目

Eureka注册中心

问题提出:

user-service对外提供服务,需要对外暴露自己的地址。而consumer(调用者)需要记录服务提供者的地址。此时如果还人为管理地址,不仅开发困难,将来测试、发布上线都会非常麻烦。
简单点说就是需要有工具帮忙自动管理地址!

解决:Eureka做什么?

Eureka负责管理、记录服务提供者的信息。
服务调用者无需自己寻找服务,而是把自己的需求告诉 Eureka,然后Eureka会把符合你需求的服务告诉你。
同时,服务提供方与Eureka之间通过 “心跳”机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服 务列表中剔除。 这就实现了服务的自动注册、发现、状态监控。

原理
在这里插入图片描述
编写Eureka所需的依赖

<!--作用: 能进入Eureka界面 -->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>

<!--作用: 服务注册(提供服务端写) -->
<!-- Eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

<!--作用: 服务发现(客户端) -->
<!-- Eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

启动类需要添加@EnableDiscoveryClient

//提供服务端
@SpringBootApplication
@MapperScan("com.lxs.user.mapper")
@EnableDiscoveryClient //开启Eureka客户端发现功能
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}

//客户端(即comsumer)
@SpringBootApplication
@EnableDiscoveryClient // 开启Eureka客户端
public class UserConsumerDemoApplication {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate(new OkHTTP3ClientHTTPRequestFactory());
}
public static void main(String[] args) {
SpringApplication.run(UserConsumerDemoApplication.class, args);
}
}

Eureka详解:

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

  • 服务注册中心 Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-server
  • 服务提供者 提供服务的应用,可以是Spring Boot应用,也可以是其它任意技术实现,只要对外提供的是REST风格服务即可。本例中就是我们实现的user-service
  • 服务消费者 消费应用从注册中心获取服务列表,从而得知每个服务方的信息,知道去哪里调用服务方。本例中就是我们实现的consumer
高可用的Eureka Server

如果有三个Eureka,则每一个EurekaServer都需要注册到其它几个Eureka服务中。
例如:有三个分别为10086、10087、10088,则:
10086要注册到10087和10088上
10087要注册到10086和10088上
10088要注册到10086和10087上

Eureka客户端工程
在这里插入图片描述

user-service 服务提供

  • 服务地址使用ip方式
    服务提供者在启动时,会检测配置属性中的 eureka.client.register-with-erueka=true 参数是否为true。默认注册时使用的是主机名或者localhost,如果想用ip进行注册,可以在 user-service 中添加配置如下:
eureka:
instance:
ip-address: 127.0.0.1 # ip地址
prefer-ip-address: true # 更倾向于使用ip,而不是host名
  • 续约
    在注册服务完成以后,服务提供者会维持一个心跳(定时向EurekaServer发起Rest请求),告诉EurekaServer:“我还活着”。这个我们称为服务的续约(renew);有两个重要参数可以修改服务续约的行为;可以在 user-service 中添加如下配置项:
eureka:
instance:
lease-expiration-duration-in-seconds: 90
lease-renewal-interval-in-seconds: 30

consumer-demo 服务消费

  • 获取服务地址的频率
    -当服务消费者启动时,会检测 eureka.client.fetch-registry=true 参数的值,如果为true,则会从Eureka Server服
    务的列表拉取只读备份,然后缓存在本地。

Eureka服务端工程 eureka-server

  • 失效剔除
  • 自我保护
    当一个服务未按时进行心跳续约时,Eureka会统计最近15分钟心跳失败的服务实例的比例是否超过了85%,Eureka就会把当前实例的注册信息保护起来,不予剔除。一 般开发阶段关闭自我保护
eureka:
server:
enable-self-preservation: false # 关闭自我保护模式(缺省为打开)
eviction-interval-timer-in-ms: 1000 # 扫描失效服务的间隔时间(缺省为60*1000ms)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值