博客
关于我
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 优化:Explain 执行计划详解
查看>>
Mysql 会导致锁表的语法
查看>>
mysql 使用sql文件恢复数据库
查看>>
mysql 修改默认字符集为utf8
查看>>
Mysql 共享锁
查看>>
MySQL 内核深度优化
查看>>
mysql 内连接、自然连接、外连接的区别
查看>>
mysql 写入慢优化
查看>>
mysql 分组统计SQL语句
查看>>
Mysql 分页
查看>>
Mysql 分页语句 Limit原理
查看>>
MySql 创建函数 Error Code : 1418
查看>>
MySQL 创建新用户及授予权限的完整流程
查看>>
mysql 创建表,不能包含关键字values 以及 表id自增问题
查看>>
mysql 删除日志文件详解
查看>>
mysql 判断表字段是否存在,然后修改
查看>>
MySQL 到底能不能放到 Docker 里跑?
查看>>
mysql 前缀索引 命令_11 | Mysql怎么给字符串字段加索引?
查看>>
MySQL 加锁处理分析
查看>>
mysql 协议的退出命令包及解析
查看>>