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

微服务如何实现服务的高可用

背景:微服务分层需要考虑高可用高并发的问题

微服务如何实现服务的高可用

先说结论:微服务实现高可用主要通过集群冗余+故障自动转移来实现的具体可以从底下几种方案来实现。

  • “端”到“反向代理”的高可用
  • “反向代理”到“站点应用”的高可用
  • “站点应用”到“微服务”的高可用
  • “微服务”到“缓存”的高可用
  • “微服务”到“读库”的高可用
  • “微服务”到“写库”的高可用
常见的互联网分层架构

首先先了解下常见的分层架构入下图所示

“客户端”到“反向代理”的高可用

可以通过Keepalived+VIP实现虚拟IP漂移,主节点故障时秒级切换

“反向代理”到“站点应用”的高可用

Nginx反向代理是实现站点应用高可用的关键技术手段,它通过负载均衡、请求分发和故障转移等机制,确保应用服务的持续可用性

“站点应用”到“微服务”的高可用

主要通过连接池技术来实现的:连接池技术是站点应用访问微服务集群时实现高可用的关键技术手段:资源复用机制‌、故障隔离能力‌、负载均衡功能‌;除了连接池技术还可通过熔断限流来实现高可用

“微服务”到“缓存”的高可用

微服务到缓存的高可用实现方案通过分层缓存架构(本地缓存→分布式缓存→持久化存储)和智能数据一致性策略(双写/失效模式+异步补偿)保障系统可靠性,采用Redis Cluster实现自动分片和主从切换(切换时间<2秒),配合Redisson分布式锁防止缓存击穿。多级容错设计包含同城双活部署、Sentinel监控和熔断降级机制,数据持久化提供RDB/AOF混合方案选择。通过缓存预热、LRU/LFU淘汰策略优化性能。一句话总结:通过多级缓存+集群部署确保高可用

“微服务”到“写库”的高可用

“微服务”到“写库”的高可用如果对数据库进行读写分离,必须保证写库高可用:

采用双主或主从+keepalived实现自动故障转移

“微服务”到“读库”的高可用

微服务读库高可用通过读写分离+自动故障转移实现,主从延迟超阈值时自动切换读节点,配合健康检查剔除异常实例,结合Redis缓存和熔断重试机制,保障读可用性

http://www.xdnf.cn/news/446689.html

相关文章:

  • html js 原生实现web组件、web公共组件、template模版插槽
  • 【嵌入式开发-软件定时器】
  • Java内存马的检测与发现
  • GraphPad Prism简介、安装与工作界面
  • 【软件测试】第二章·软件测试的基本概念
  • 二叉树前序与后序遍历迭代法详解:栈操作与顺序反转的巧妙结合
  • NVMe简介1
  • Android 中 图片加载库 Glide 简介
  • 【Java-EE进阶】SpringBoot针对某个IP限流问题
  • Protocol Buffers 全流程通俗讲解
  • vLLM - SamplingParams 参数
  • 【BUG】滴答定时器的时间片轮询与延时冲突
  • 力扣热题——找出 3 位偶数
  • 康谋分享 | 自动驾驶仿真进入“标准时代”:aiSim全面对接ASAM OpenX
  • C++类和对象--高阶
  • 猫眼浏览器:简约安全,极速浏览
  • 基于多目标进化算法的神经网络架构搜索及其高级可视化技术
  • Huffman树
  • 常用的Java工具库
  • 错误: 加载主类 org.springframework.boot.loader.launch.JarLauncher 时出现 LinkageError
  • 鸿蒙Next API17新特性学习之如何使用新增鼠标轴事件
  • 蚂蚁seo强引蜘蛛池,SEO优化的利器
  • 【Linux笔记】——进程信号的捕捉——从中断聊聊OS是怎么“活起来”的
  • Kotlin Compose 与传统 Android UI 开发对比
  • LabVIEW在电子电工教学中的应用
  • Python 之 selenium 打开浏览器指定端口进行接续操作
  • Nginx+Lua 实战避坑:从模块加载失败到版本冲突的深度剖析
  • 数字信号处理-大实验1.1
  • Vue3吸顶导航的实现
  • Jmeter变量传递介绍