微服务治理 高可用 HA (High Availability) 的一些理解

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
性能测试 PTS,5000VUM额度
简介: 微服务治理 高可用 HA (High Availability) 的一些理解

@[toc]

微服务治理 高可用 HA (High Availability) 的一些理解


1、简介

一般来说,公司要保证4个9的高可用目标,99.99%,意味着一年的停机时间是 0.876 小时

高可用的目的是通过设计减少系统的不可用时间

目前解决高可用的两个核心要点就是冗余和故障转移

高可用的核心是冗余,也就是备份,挂了之后,backup 可以立马顶上
另外,人工干预会导致故障恢复时间变成,因此系统的高可用还必须要实现自动故障转移

2、Nginx 高可用

Nginx 的高可用 (通过 keepalive + 虚拟 IP)
部署两台 Nginx ,一台提供服务,另外一台冗余,通过 keepalive 存活探测,Nginx 使用相同的虚拟 IP 提供服务
如果使用的 Nginx 挂了,keepalive 可以探测到并自动进行故障转移,将流量迁移到 shadow-nginx,因为使用相同的
虚拟 IP,所以切换过程对调用方没有影响

3、站点层的高可用

部署两个站点,Nginx 可以配置多个 Web ,Nginx 可以探测到多个 Web 的存活性
并自动进行故障转移,整个过程由 Nginx 完成

4、服务层 Service 的高可用

服务层的高可用通过部署多个实例进行负载,也可以根据流量情况在阀值情况下进行自动扩容
注册中心承担了一部分职能

5、缓存层的高可用

可以通过对缓存数据的冗余来实现高可用,Service 对缓存进行双读写

也可以通过支持主从同步的缓存集群来解决高可用问题

Redis 天然支持主从同步,官方也有 sentinel 哨兵机制做存活性检测
sentinel 可以探测到 Redis 是否可用并自动转移故障访问到其它 Redis

但是缓存并不是完全的需要绝对可用,对于允许缓存丢失的业务场景,可以对 Key 进行水平切分访问到不同的实例去
如果某个实例挂了,可以直接返回 Cache Miss

6、数据库层面的高可用

一般较大的数据库架构都采用了 【读写分类、主从同步】 的架构,所以这里高可用要分为两个
一个是读库的高可用,一个是写库的高可用

读库的话,可以多冗余几个数据库实例,数据库连接池会与多个读库进行连接,
连接池可以探测数据库的可用性并自动进行故障转移

写库这边,也是冗余,通过 MySql 双主同步,一台对线上提供服务,另外一台冗余
常见的方案是通过 keepalived 和虚拟 IP 方案进行解决,同 Nginx

相关文章
|
3月前
|
Kubernetes 关系型数据库 MySQL
Kubernetes入门:搭建高可用微服务架构
【10月更文挑战第25天】在快速发展的云计算时代,微服务架构因其灵活性和可扩展性备受青睐。本文通过一个案例分析,展示了如何使用Kubernetes将传统Java Web应用迁移到Kubernetes平台并改造成微服务架构。通过定义Kubernetes服务、创建MySQL的Deployment/RC、改造Web应用以及部署Web应用,最终实现了高可用的微服务架构。Kubernetes不仅提供了服务发现和负载均衡的能力,还通过各种资源管理工具,提升了系统的可扩展性和容错性。
194 3
|
4月前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
177 1
|
7月前
|
监控 Kubernetes Cloud Native
云原生架构下的微服务治理之道
【7月更文挑战第30天】在数字化转型的浪潮中,企业级应用正迅速向云原生架构迁移。本文将深入探讨云原生环境下微服务治理的最佳实践,包括服务发现、配置管理、流量控制等关键策略,并结合实例分析如何在保障系统弹性、可维护性的同时,优化资源利用效率和加快业务创新速度。
70 2
|
7月前
|
运维 Kubernetes Cloud Native
云原生架构下的微服务治理之道
【7月更文挑战第20天】在数字化转型的浪潮中,企业纷纷拥抱云原生,以期实现更高效的资源利用、更快的业务迭代和更强的系统稳定性。本文将深入探讨如何通过云原生架构优化微服务的治理,确保系统的高可用性和可维护性,同时提升开发效率和运维灵活性。我们将从微服务治理的核心原则出发,结合具体案例,分析在云环境中实施微服务治理的策略与挑战。
62 2
|
7月前
|
消息中间件 负载均衡 Kafka
微服务数据问题之Kafka实现高可用如何解决
微服务数据问题之Kafka实现高可用如何解决
|
7月前
|
消息中间件 Java 开发者
Spring Cloud微服务框架:构建高可用、分布式系统的现代架构
Spring Cloud是一个开源的微服务框架,旨在帮助开发者快速构建在分布式系统环境中运行的服务。它提供了一系列工具,用于在分布式系统中配置、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等领域的支持。
228 5
|
7月前
|
监控 Cloud Native 安全
云原生架构下的微服务治理实践
在数字化转型的浪潮中,云原生技术以其灵活性和可扩展性成为现代软件工程的基石。本文将深入探讨云原生架构下微服务治理的实践路径,从微服务的拆分、容器化部署、服务网格的应用到最终的监控与故障排除,提供一套全面的方法论。文章旨在为读者呈现一个清晰的云原生环境下,如何高效管理和维护微服务系统的全景图。
78 2
|
7月前
|
负载均衡 Cloud Native 云计算
云原生架构下的微服务治理与挑战
随着云计算技术的不断演进,云原生架构已成为现代应用开发的首选模式。本文将深入探讨在云原生环境下,微服务治理的重要性、实现方法及所面临的挑战。通过分析微服务治理的关键要素如服务发现、配置管理、负载均衡和故障转移等,揭示如何在高度动态的云环境中保持服务的高可用性和灵活性。同时,本文也将指出在实施微服务治理过程中可能遇到的技术难题和应对策略,为构建健壮的云原生应用提供指导。
|
7月前
|
监控 负载均衡 Java
Spring Boot与微服务治理框架的集成
Spring Boot与微服务治理框架的集成
|
8月前
|
负载均衡 Java 开发者
细解微服务架构实践:如何使用Spring Cloud进行Java微服务治理
【6月更文挑战第30天】Spring Cloud是Java微服务治理明星框架,整合Eureka(服务发现)、Ribbon(客户端负载均衡)、Hystrix(断路器)、Zuul(API网关)和Config Server(配置中心),提供完整服务治理解决方案。通过Eureka实现服务注册与发现,Ribbon进行负载均衡,Hystrix确保服务容错,Config Server集中管理配置,Zuul则作为API入口统一处理请求。理解和使用Spring Cloud是现代Java开发者的关键技能。
201 2