04-服务注册Eureka高级

目录
1、Eureka Server 高可用集群
1.1、搭建 Eureka Server高可用集群
1.2、服务注册到Eureka Server集群
2、Eureka中的常见问题
2.1、服务注册慢
2.2、服务节点剔除问题
2.3、监控页面显示ip
 
1、Eureka Server 高可用集群
在上一个章节,实现了单节点的Eureka Server的服务注册与服务发现功能。Eureka Client会定时连接Eureka Server,获取注册表中的信息并缓存到本地。微服务在消费远程API时总是使用本地缓存中的数据。因此一般来说,即使Eureka Server发生宕机,也不会影响到服务之间的调用。但如果Eureka Server宕机时,某些微服务也出现了不可用的情况,Eureka Server中的缓存若不被刷新,就可能会影响到微服务的调用,甚至影响到整个应用系统的高可用。因此,在生成环境中,通常会部署一个高可用的Eureka Server集群。
 
Eureka Server可以通过运行多个实例并相互注册的方式实现高可用部署,Eureka Server实例会彼此增量地同步信息,从而确保所有节点数据一致。事实上,节点之间相互注册是Eureka Server的默认行为。

 

 

 
1.1、搭建 Eureka Server高可用集群
(1)修改本机host属性
由于是在个人计算机中进行测试很难模拟多主机的情况,Eureka配置server集群时需要执行host地址。所以需要修改个人电脑中host地址
127.0.0.1 eureka1
127.0.0.1 eureka2
(2)修改 shop_eureka_server 工程中的yml配置文件,添加如下配置属性
#指定应用名称
spring:
application:
 name: shop-eureka-server
---
#执行peer1的配置信息
spring:
profiles: eureka1
server:
port: 8761
eureka:
instance:
 hostname: eureka1
client:
 service-url:
  defaultZone: http://eureka2:8762/eureka
---
#执行peer2的配置信息
spring:
profiles: eureka2
server:
port: 8762
eureka:
instance:
 hostname: eureka2
client:
 service-url:

 

 

 
在配置文件中通过连字符(---)将文件分为三个部分,第一部分为应用名称,第二部分和第三部
分是根据不同的profiles选项动态添加,可以在IDEA启动时进行激活配置
使用IDEA启动历次EurekaServerApplicaion分别激活eureka1和eureka2配置。访问http://eureka1:8761和http://eureka1:8762/。会发现注册中心 SHOP-EUREKA-SERVER 已经有两个节点,并且registered-replicas (相邻集群复制节点)中已经包含对方。
 
1.2、服务注册到Eureka Server集群
如果需要将微服务注册到Eureka Server集群只需要修改yml配置文件即可
eureka:
client:
 serviceUrl:

 

 

以商品微服务为例,修改defaultZone配置添加多个Eureka Server的地址
 
2、Eureka中的常见问题
2.1、服务注册慢
默认情况下,服务注册到Eureka Server的过程较慢。SpringCloud官方文档中给出了详细的原因

 

 

大致含义:服务的注册涉及到心跳,默认心跳间隔为30s。在实例、服务器、客户端都在本地缓存中具有相同的元数据之前,服务不可用于客户端发现(所以可能需要3次心跳)。可以通过配置
eureka.instance.leaseRenewalIntervalInSeconds (心跳频率)加快客户端连接到其他服务的过
程。在生产中,最好坚持使用默认值,因为在服务器内部有一些计算,他们对续约做出假设
 
2.2、服务节点剔除问题
默认情况下,由于Eureka Server剔除失效服务间隔时间为90s且存在自我保护的机制。所以不能有效而迅速的剔除失效节点,这对开发或测试会造成困扰。解决方案如下:
Eureka Server:
配置关闭自我保护,设置剔除无效节点的时间间隔
eureka:
instance:
 hostname: eureka1
client:
 service-url:
  defaultZone: http://eureka2:8762/eureka
server:
 enable-self-preservation: false  #关闭自我保护
 eviction-interval-timer-in-ms: 4000 #剔除时间间隔,单位:毫秒
Eureka Client:
配置开启健康检查,并设置续约时间
eureka:
client:
 healthcheck: true #开启健康检查(依赖spring-boot-actuator)
 serviceUrl:
  defaultZone: http://eureka1:8761/eureka/,http://eureka1:8761/eureka/
instance:
 preferIpAddress: true
 lease-expiration-duration-in-seconds: 10 #eureka client发送心跳给server端后,续
约到期时间(默认90秒)
 lease-renewal-interval-in-seconds: 5 #发送心跳续约间隔

 

 

2.3、监控页面显示ip
在Eureka Server的管控台中,显示的服务实例名称默认情况下是微服务定义的名称和端口。为了更好
的对所有服务进行定位,微服务注册到Eureka Server的时候可以手动配置示例ID。配置方式如下
 

 

 

posted @ 2022-04-02 21:57  HvH95  阅读(70)  评论(0)    收藏  举报