博客
关于我
SpringCloud--02构建高可用的Eureka集群
阅读量:702 次
发布时间:2019-03-17

本文共 1858 字,大约阅读时间需要 6 分钟。

Eureka的一些核心概念及高可用架构设计

Eureka 是一款开源的服务注册中心解决方案,广泛应用于微服务架构中,以确保服务的最大可用性和灵活性。本文将深入探讨 Eureka 的核心概念及其高可用架构设计。

Eureka 的核心概念

首先,Eureka Client 和 Eureka Server 是 Eureka 架构的两大核心组件。Eureka Client 负责各服务实例的心跳传递与注册管理,而 Eureka Server 则负责维护服务的注册列表和心跳检测。

心跳机制是 Eureka 的一个关键特性。Eureka Client 默认每 30 秒发送一次心跳信号,向 Eureka Server 通知其存活状态。如果 Eureka Server 在 90 秒内未接收到 Client 的心跳,Server 会将该实例从注册列表中剔除,以避免考虑已故服务。

此外,服务注册列表的信息每 30 秒更新一次。Eureka Client 会缓存这些信息,以便快速获取最新的服务状态。然而,由于缓存存在延迟,新注册的实例可能需要 30 秒才能被其他服务调用。

Eureka 的高可用架构

Eureka 的高可用架构主要包括 Eureka Server 和 Eureka Client 的多角色体系。Eureka Client 又可细分为 Application Server 和 Application Client,分别负责服务注册与远程调用。

在高可用架构中,Eureka Client 会向 Eureka Server 注册服务信息,并根据心跳机制保持服务状态。该架构确保即使部分服务不可用,其他服务仍能通过最优路由找到可用的实例。

Eureka 的自我保护模式

防止网络分区故障导致的服务误删除是 Eureka 的一个重要创新。Eureka Server 采用自我保护模式,当节点观察到多个客户端丢失时,会临时防止服务注销。

具体而言,如果在 15 分钟内 Eureka Server 接收到的续约率低于 85%,Server 就会启动自我保护模式,不再剔除注册表信息。这种机制防止了因网络问题导致的服务误删除,确保服务的持续稳定运行。

高可用的 Eureka 集群搭建

搭建高可用的 Eureka 集群通常采用负载均衡和分布式的部署策略。在本地环境中,Eureka Server 的配置文件如下所示:

spring:  application:    name: eurka-server1  profiles:    active: peer1server  port: 8761eureka:  instance:    hostname: peer1  client:    serviceUrl:      defaultZone: http://peer2:8762/eureka/
spring:  application:    name: eurka-server2  profiles:    active: peer2server  port: 8762eureka:  instance:    hostname: peer2  client:    serviceUrl:      defaultZone: http://peer1:8761/eureka/

此外,需在 host 文件中配置 IP 记录,确保各节点能够互相发现。Eureka Client的配置文件则如下:

server:  port: 8763spring:  application:    name: service-hieureka  client:    serviceUrl:      defaultZone: http://peer1:8761/eureka/

在 Maven 项目中需注意 pom.xml 的配置,避免使用 relativePath 标签,以免打包时因路径问题导致错误。完成项目部署后,可通过 Java 命令启动各节点,确保集群正常运行。

客户端配置与服务注销问题

在 Eureka 集群中,Eureka Client通常只向主节点注册服务。配置文件中需明确指定服务注册地址,以避免重复注册或服务注销问题。

通过以上配置和搭建,Eureka 集群能够有效保障服务的高可用性和稳定性。建议在实际应用中根据需要灵活调整配置参数,如自我保护模式等,以适应不同的网络环境和业务需求。

转载地址:http://yghhz.baihongyu.com/

你可能感兴趣的文章
MySQL 中开启二进制日志(Binlog)
查看>>
MySQL 中文问题
查看>>
MySQL 中日志的面试题总结
查看>>
mysql 中的all,5分钟了解MySQL5.7中union all用法的黑科技
查看>>
MySQL 中的外键检查设置:SET FOREIGN_KEY_CHECKS = 1
查看>>
Mysql 中的日期时间字符串查询
查看>>
mysql 中索引的问题
查看>>
MySQL 中锁的面试题总结
查看>>
MySQL 中随机抽样:order by rand limit 的替代方案
查看>>
MySQL 为什么需要两阶段提交?
查看>>
mysql 为某个字段的值加前缀、去掉前缀
查看>>
mysql 主从
查看>>
mysql 主从 lock_mysql 主从同步权限mysql 行锁的实现
查看>>
mysql 主从互备份_mysql互为主从实战设置详解及自动化备份(Centos7.2)
查看>>
mysql 主从关系切换
查看>>
MYSQL 主从同步文档的大坑
查看>>
mysql 主键重复则覆盖_数据库主键不能重复
查看>>
MySQL 事务的面试题总结
查看>>
Mysql 事务知识点与优化建议
查看>>
Mysql 优化 or
查看>>