spring cloud-注册中心(Eureka)

一、服务注册中心组件(*)

markdown 复制代码
定义:服务注册中心就是在整个微服务架构单独抽取一个服务,该服务不做项目中任何业务功能,仅用来在微服务中记录微服务、对微服务进行健康状态检查,及服务元数据信息存储

常用的注册中心:eureka(netflix)、zookeeper(java)、consul(go)、nacos(java阿里巴巴)

eureka:是netflix开发的服务发现框架。包含两个组件, eureka server 和 eureka client

Eureka

eureka server
  • 1.添加依赖
xml 复制代码
<!-- eureka server -->
<dependency>
	<groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  • 2.在启动类上添加注解@EnableEurekaServer
java 复制代码
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
SpringApplication.run(EurekaServerApplication.class, args);

}
  • 3.配置文件
properties 复制代码
# 服务名称
spring.application.name=EUREKA-SERVER
# eureka server端口号,默认8761
server.port=8761
# eureka server服务注册中心地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
  • 未指定服务名称时,启动服务后,在eureka server管理界面中出现UNKNOW的一个未知应用

在微服务架构中服务名称代表服务唯一标识,服务名称必须唯一,通过配置spring.application.name=EUREKA-SERVER指定,推荐服务名称大写(默认大写),服务名不能出现下划线_

  • eureka server启动过程中报错

eureka含有两个组件eureka server、eureka client,当项目中引入eureka server组件依赖时,这个组件会同时将eureka client引入到项目中,因此启动时将自己作为一个服务注册中心启动,同时也会将自己作为服务客户端进行注册,默认启动时立即注册,注册时的服务还没有准备完成,因此会出现当前错误

  • 关闭eureka server 自己注册自己
properties 复制代码
# 关闭eureka client立即注册
eureka.client.fetch-registry=false
# 让当前应用仅仅是服务注册中心,不向eureka server注册
eureka.client.register-with-eureka=false
eureka client

eureka client 就是日后基于业务拆分出来的一个个微服务

  • 1.引入依赖
xml 复制代码
<!-- eureka client-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  • 2.在启动类上加注解@EnableEurekaClient
java 复制代码
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientApplication {

}
  • 3.配置文件
properties 复制代码
server.port=8989
# 服务名称
spring.application.name=EUREKA-CLIENT
# eureka server注册中心地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
eureka 自我保护机制

经测试,跟spring cloud版本有关,高版本的会立即清除(如Hoxton.SR8)

1.自我保护机制触发现象

当eureka client宕机后,eureka server管理界面出现如下现象,即触发了自我保护机制

2.自我保护机制(Self Preservation Mode)

markdown 复制代码
- 官网地址:https://github.com/Netflix/eureka/wiki/Server-Self-Preservation-Mode
- 自我保护机制默认是开启的。这样做是为了确保灾难性的网络事件不会清除eureka注册表数据,并将其传播到下游的所有客户端
- 自我保护机制,将客户端在服务注册中心清除的条件
	1.心跳次数高于预期阈值
	2.关闭自我保护机制

3.eureka server关闭自我保护机制(了解即可)

properties 复制代码
1.eureka server端添加配置
# 关闭自我保护机制,默认开启(建议开启)
eureka.server.enable-self-preservation=false
# 超时3S自动清除
eureka.server.eviction-interval-timer-in-ms=3000

2.eureka client端添加配置
# 用来修改eureka server默认接收心跳的最大时间,默认是90S
eureka.instance.lease-expiration-duration-in-seconds=10
# 指定客户端多久向eureka server发送一次心跳,默认是30S
eureka.instance.lease-renewal-interval-in-seconds=5
eureka server 集群搭建
properties 复制代码
搭建伪集群,有三台eureka server,分别为
localhost:8761/eureka/
localhost:8762/eureka/
localhost:8763/eureka/

在端口为8761的应用配置eureka server集群地址:
eureka.client.service-url.defaultZone=http://localhost:8762/eureka/,http://localhost:8763/eureka/
在端口为8762的应用配置eureka server集群地址:
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/,http://localhost:8763/eureka/
在端口为8763的应用配置eureka server集群地址:
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/,http://localhost:8762/eureka/

demo:用同一个服务多次启动,分别指定不同的端口号(-Dserver.port=8761、-Dserver.port=8762、-Dserver.port=8763)

在eureka client端添加eureka server集群地址
# eureka server集群注册中心地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/

# eureka client端集群搭建
	- 指定不同的端口分别启动
	- spring.application.name指定的服务名称必须是同一个
  • localhost:8761

  • localhost:8762

  • localhost:8763

eureka 总结
markdown 复制代码
1.作用:在微服务架构中,充当服务注册中心
2.两个组件:eureka server、eureka client
3.eureka组件1.x(稳定),2.x版本停止更新
4.不推荐使用eureka作为服务注册中心
	4.1 最新版本已停止更新
	4.2 每次必须通过手动写代码形式开发服务注册中心
相关推荐
追风筝的人er3 天前
企业管理系统如何实现自定义首页与千人千面?RuoYi Office 给出了完整方案
vue.js·spring boot·spring cloud
三水不滴3 天前
利用SpringCloud Gateway 重试 + 降级解决第三方接口频繁超时问题,提升性能
经验分享·笔记·后端·spring·spring cloud·gateway
知识即是力量ol4 天前
微服务架构:从入门到进阶完全指南
java·spring cloud·微服务·nacos·架构·gateway·feign
Java水解4 天前
【Spring Cloud】优雅实现远程调用-OpenFeign
后端·spring cloud
Remember_9934 天前
SpringCloud:Nacos注册中心
java·开发语言·后端·算法·spring·spring cloud·list
J_liaty4 天前
Spring Cloud 微服务面试高频题
spring cloud·微服务·面试
西门吹雪分身4 天前
SpringCloudGateway过滤器之RequestRateLimiterGatewayFilterFactory
java·redis·spring cloud
vx_Biye_Design4 天前
【关注可免费领取源码】云计算及其应用网络教学系统--毕设附源码35183
java·spring·spring cloud·servlet·eclipse·云计算·课程设计
Coder_Boy_5 天前
Java后端核心技术体系全解析(个人总结)
java·开发语言·spring boot·分布式·spring cloud·中间件
悠闲蜗牛�5 天前
Kubernetes从零到集群:本地Minikube环境搭建与Spring Cloud微服务运维实战
spring cloud·微服务·kubernetes