当前位置: 首页 > news >正文

系统架构设计(十七):微服务数据一致性和高可用策略

数据一致性问题

问题本质

由于每个微服务拥有独立数据库跨服务操作不能用传统的数据库事务,面临“分布式事务”一致性挑战。

数据一致性策略

策略核心思想应用场景优缺点
强一致性(Strong Consistency)所有操作实时同步成功,用户总是看到最新数据金融、电商扣款等高安全场景实现复杂,性能下降
最终一致性(Eventual Consistency)不保证实时一致,但最终会一致大多数业务场景,如电商订单、库存易扩展,性能好,但用户短时间可能看到“旧数据”
分布式事务协议:2PC/3PC通过协调器两阶段提交实现原子性事务级别操作,如账户转账实现难,性能差,可能阻塞
本地事务 + 异步消息补偿(推荐)本地操作成功后发送消息,由对方服务异步处理,失败可重试或补偿大多数微服务场景实用性强,但需自行处理幂等、消息丢失等问题
TCC 模式(Try-Confirm-Cancel)三阶段事务模型,预留资源后确认/取消操作资源型操作(预订、库存等)设计复杂,适用于少数场景
Saga 模式(编排式/事务链)业务分为多个本地事务,失败时按顺序回滚订单、支付、发货流程灵活,适合复杂业务流程

高可用性设计策略

服务高可用(服务不挂)

策略说明
服务注册与发现使用 Nacos/Consul 等注册中心实现服务发现与自动切换
负载均衡使用 Nginx 或 Ribbon/Gateway 等分流到多实例
服务熔断/限流/降级使用 Sentinel、Hystrix 避免雪崩效应
无状态设计使服务可任意扩缩容,实现快速替换
容器化部署 + 自动恢复K8s/Pod 自动拉起故障实例

数据高可用(数据不丢)

策略说明
数据库主从复制/读写分离实现高并发读写与故障切换
分布式缓存(如 Redis Sentinel、Cluster)降低数据库压力,容错性强
消息队列持久化机制Kafka/RabbitMQ 持久化,保证消息不丢
定期快照 + 增量备份数据恢复能力

网络/基础设施高可用:

策略说明
多机房/跨区域部署容灾设计,机房故障不影响服务
负载均衡器(如 SLB)+ 自动切换实现自动流量调度

示例

某系统采用微服务架构,请说明如何保证其数据一致性和高可用性?

解答:

数据一致性策略

  • 采用“本地事务 + 消息队列”方案实现最终一致性;
  • 各服务完成本地事务后,通过 MQ 异步通知其他服务处理;
  • 使用幂等机制和失败重试/补偿机制保障一致性;
  • 对于复杂业务,采用 Saga 模式或 TCC 模式。

高可用性策略

  • 服务层使用注册中心 + 网关 + 负载均衡;
  • 数据层采用主从复制、缓存降级和数据库读写分离;
  • 引入服务熔断、限流、降级机制防止系统雪崩;
  • 基础设施层采用容器化 + 自动化部署,提升可用性。

相关文章:

  • 黑马Java基础笔记-13常用查找算法
  • MySql数据库连接池
  • Xshell传输文件
  • KLEC--基于知识学习的演化计算算法
  • 技术问答:PHP、JAVA和Go的垃圾回收机制有哪些区别
  • HTML回顾
  • WEB品质标准
  • 分钟级降水预报API:精准预测每一滴雨的智慧科技
  • Hellorobot 开源实践赋能行业:从HPR模型到全栈技术资源,降低家庭机器人开发门槛
  • 算法第24天|93.复原IP地址、 78.子集、 90.子集II
  • 哈希介绍、哈希表模拟实现
  • 图像噪声模拟
  • Linux在防火墙中添加开放端口
  • 深入解析OrientDB:多模型数据库的技术优势与实际应用
  • git学习与使用(远程仓库、分支、工作流)
  • Git命令使用全攻略:从创建分支到合并的完整流程
  • canvas浅析(一)
  • 操作系统学习笔记第5章 (竟成)
  • mariadb-cenots8安装
  • R语言空间分析实战:地理加权回归联合主成份与判别分析破解空间异质性难题
  • 63岁微波遥感领域著名专家李春升参加学术会议期间病逝
  • 小米法务部:犯罪团伙操纵近万账号诋毁小米,该起黑公关案告破
  • 商务部:对原产于美国、欧盟、台湾地区和日本的进口共聚聚甲醛征收反倾销税
  • 玛丽亚·凯莉虹口连唱两夜,舞台绽放唤醒三代人青春记忆
  • 广西鹿寨一水文站“倒刺扶手”存安全隐患,官方通报处理情况
  • 张国清将赴俄罗斯举行中俄“长江—伏尔加河”地方合作理事会第五次会议和“东北—远东”政府间合作委员会双方主席会晤