失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Spring Cloud Netflix-微服务注册与发现(Eureka)

Spring Cloud Netflix-微服务注册与发现(Eureka)

时间:2024-06-06 18:51:45

相关推荐

Spring Cloud Netflix-微服务注册与发现(Eureka)

目录

前言Eureka简介架构栗子Eureka Server集群配置系统hostsapplication.yml文件启动Eureka Server实例 将微服务注册到Eureka Server上用户认证将微服务注册到有用户认证的Eureka Server上 Eureka的自我保护模式

前言

以下类容来自书籍《Spring Cloud与Docker微服务架构实战(第2版)》

Eureka简介

Eureka是一个服务发现组件,基于REST的服务,包含了server和client两部分。在springcloud之下的一个子项目,用于注册微服务的注册与发现。


架构

上面是Eureka的架构图

Eureka本身也是一个服务,也可以是一个集群。

图中的Application Service和Application Client就是服务提供者和消费者。

Make Remote Call是调用RESTful API的行为。

各个微服务启动时会向Eureka Server发送自身的信息(ip、端口号等),Eureka Client就是一个java客户端,可以是服务消费者、服务提供者、也可以是Eureka Server。

微服务启动后,会周期性(默认30秒)向Eureka Server发送心跳为自己续期。默认90秒没有接收到某个微服务的心跳,则会注销该微服务(实例)。

Eureka Client会缓存服务注册表中的信息,减轻Eureka Server的压力。

栗子

Eureka Server集群

配置系统hosts

windows系统在C:\Windows\System32\drivers\etc下修改hosts文件,追加信息127.0.0.1 peer1 peer2

application.yml文件

spring:application:name: microservice-discovery-eureka-ha---spring:profiles: peer1 # 指定profile=peer1server:port: 8761eureka:instance:hostname: peer1 # 指定当profile=peer1时,主机名是peer1client:serviceUrl:defaultZone: http://peer2:8762/eureka/# 将自己注册到peer2这个Eureka上面去---spring:profiles: peer2server:port: 8762eureka:instance:hostname: peer2client:serviceUrl:defaultZone: http://peer1:8761/eureka/

这是将两个配置文件合并为一个,在启动时,只需指定不同的profiles来启动对应的实例即可 ,(- - -)是连接符。

启动Eureka Server实例

打包后,根据–spring.profiles.active=peer1和–spring.profiles.active=peer2启动两个Eureka Server实例

java -jar microservice-discovery-eureka-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1java -jar microservice-discovery-eureka-ha-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

启动成功后在浏览器访问http://peer1:8761/和http://peer2:8762/,则会在registered-replicas中看到对方的互备节点

将微服务注册到Eureka Server上

修改服务提供者的配置文件

server:port: 8000spring:application:name: microservice-provider-user # 指定注册到Eureka Server上的应用名称jpa:generate-ddl: falseshow-sql: truehibernate:ddl-auto: nonedatasource: # 指定数据源platform: h2 # 指定数据源类型schema: classpath:schema.sql # 指定h2数据库的建表脚本data: classpath:data.sql # 指定h2数据库的数据脚本logging: # 配置日志级别,让hibernate打印出执行的SQLlevel:root: INFOorg.hibernate: INFOorg.hibernate.type.descriptor.sql.BasicBinder: TRACEorg.hibernate.type.descriptor.sql.BasicExtractor: TRACEeureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/instance:prefer-ip-address: true # 是否将ip注册到Eureka Server

添加依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>

启动服务提供者,观察Eureka Server

用户认证

添加依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>

修改配置文件

security:basic:enabled: true# 开启基于HTTP basic的认证user:name: user # 配置登录的账号是userpassword: password123 # 配置登录的密码是password123server:port: 8761# 指定该Eureka实例的端口eureka:client:registerWithEureka: falsefetchRegistry: falseserviceUrl:defaultZone: http://user:password123@localhost:8761/eureka/

启动Eureka Server服务,访问时需要填写用户信息

将微服务注册到有用户认证的Eureka Server上

eureka:client:serviceUrl:defaultZone: http://user:password123@localhost:8761/eureka/

Eureka的自我保护模式

Eureka Server在一定时间(默认90秒)没有接受到某个微服务实例的心跳,则注销改实例。但当短时间类丢失过多客户端时(网络分区故障),微服务本身却是健康的,则进入自我保护模式,不会注销任何一个微服务实例。

可通过以下方式禁用自我保护模式

eureka:server:enable-self-preservation: false


如果觉得《Spring Cloud Netflix-微服务注册与发现(Eureka)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。