【SpringCloud学习笔记】服务发现-Eureka

本文介绍了如何使用Spring Cloud中的Eureka实现服务注册与发现。包括构建Eureka Server作为服务注册中心,配置Eureka Client进行服务注册,以及Eureka的工作原理,如自我保护机制等。

服务注册和发现-Eureka

一、Eureka相关内容

EurekaServer构建

1、构建

创建项目

在启动类上加注解@EnableEurekaServer表示这是一个Eureka服务端注册中心项目

2、引入依赖
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
3、配置注册组件
server:
  port: 20880

eureka:
  #服务端实例名称
  instance:
    hostname: 127.0.0.1
  client:
	#表示自身不在eureka注册
	register-with-eureka: false
    #表示自己就是注册中心不需要去检索服务
    #不从Eureka获取注册列表
	fetch-registry: false
    #eureka访问地址
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

EurekaClient注册

1、引入依赖:
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2、编写配置:
server:
  port: 8888
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://127.0.0.1:20880/eureka/
  instance:
    prefer-ip-address: true
spring:
  application:
    name: cloud-provider

启动类上添加注解:@EnableEurekaClient

使用同上

二、相关注解和API

注解:

序号注解作用
Eureka注解
1@EnableEurekaServer加在启动类上声明这是一个Eureka服务端
2@EnableEurekaClient加在启动类上声明这是一个Eureka客户端

API:

序号API作用
DiscoveryClient
1getInstances(“cloud-consumer”)传入服务的application.name获取服务实例列表List< ServiceInstance>
ServiceInstance
1URI getUri()获取服务实例的url地址
2String getHost()获取服务实例的主机名
3int getPort()获取服务实例的端口号

三、Eureka原理部分

Eureka注册

​ 随着服务启动,服务将通过Eureka进行注册,服务将ip、端口号和服务id告诉Eureka进行注册。调用服务时,服务将使用Ribbon来进行客户端侧负载均衡,Ribbon与Eureka通讯,获取注册列表,缓存在本地。Ribbon将定期的ping Eureka服务端,刷新本地缓存。

Eureka的自我保护

​ Eureka服务端会检查最近15分钟内所有实例的正常心跳占比,如果低于85%就会触发自我保护,将这些失效的服务保护起来。Eureka没60s会检查一次服务健康状态,如果一段时间后,默认90s,被保护的服务还是没有恢复,则将其剔除。如果服务恢复了且正常服务心跳占比高于85%则关闭自我保护。为了保证服务的高可用,考虑到生产环境下网络等其他因素的影响。

服务端配置项:

eureka:
	server:
		## 关闭或者开启
		enable-self-preservation: false
		## 服务端扫描间隔
		eviction-interval-timer-in-ms: 2000

客户端配置项:

eureka:
	instance:
		## 客户端向服务端发送心跳时间间隔
		lease-renewal-interval-in-seconds: 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值