面试官:你项目是如何保证高可用的?

项目的高可用、高并发和高扩展是当前开发中必须追求的三大目标,因此也是面试中经常被问到的内容,所以我们今天就来看看,如何才能保证项目的高可用性呢?

1.高可用的度量指标

项目的可用性的度量指标是以可用性百分比(N个9)来衡量的,也就是通过系统正常运行时间占比衡量的,例如:

  • 99.9%(3个9):年故障时间≤8.8小时,日故障时间≤7.44分钟。
  • 99.99%(4个9):年故障时间≤53分钟,日故障时间≤8.6秒。
  • 99.999%(5个9):年故障时间≤5分钟,日故障时间≤0.86秒。

通常情况下,核心服务(如支付系统)通常要求 4 个 9,其他普通服务要求为 3 个 9 即可。

保证项目高可用的手段有以下几个:

具体来说。

2.运维层面保证高可用

  • 多机部署:如 MySQL 主从部署、Redis 集群部署、项目多机部署等,通过多台服务器同时运行相同的业务,分散压力,提高容错性,当其中一台或多台服务器出现故障时,业务仍能正常运行。
  • 多区域部署:将系统部署在不同的地理区域,避免因某个区域的灾难(如地震、火灾等)导致整个系统不可用,提高系统的容灾能力。

3.服务设计层面保证高可用

  • 微服务架构:将系统拆分成多个独立的小服务,每个服务独立开发、部署和运行,降低服务之间的耦合度,提高系统的可维护性和可扩展性,即使某个服务出现故障,也不会影响整个系统。
  • 负载均衡+健康检测:通过负载均衡器将用户请求合理分配到多台服务器上,避免某台服务器过载,同时对服务器进行健康检测,及时发现并隔离故障服务器,确保用户请求能被正常处理。
  • 服务限流:在系统出现高并发请求时,限制单位时间内通过的请求数量,防止系统因过载而崩溃,保证系统在高负载情况下的稳定性和可用性。
  • 服务熔断与降级:当某个服务出现故障或响应时间过长时,暂时切断对该服务的请求,直接返回失败结果或降级结果,避免故障扩散,保证核心业务的正常运行。

4.监控与告警

  • 系统监控:实时监测系统的运行状态,包括服务器的 CPU、内存、磁盘使用率,网络流量等,及时发现潜在问题。
  • 性能监控:关注系统的性能指标,如响应时间、吞吐量、并发数等,发现性能瓶颈,以及及时发现潜在问题。
  • 日志监控:收集和分析系统日志,及时发现错误、异常和安全问题,便于快速定位和解决问题。

小结

项目的高可用性需要通过运维层面,以及服务设计层面的多项措施共同保证其可用性。之后再加上监控和告警机制,提前预防和发现问题,从而一定程度的避免不可用问题的发生。

本文已收录到我的面试小站 www.javacn.site,其中包含的内容有:场景题、并发编程、MySQL、Redis、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、JVM、设计模式、消息队列等模块。

相关推荐
Oneslide2 小时前
Ubuntu 26.04 完整安装 Fcitx5 中文拼音输入法指南(适配默认Wayland)
后端
huangdong_2 小时前
电商平台图片URL原图转换技术深度解析:从缩略图到高清原图的完整方案
java·后端·spring
記億揺晃着的那天2 小时前
Java 调用外部 Go 程序的实践:ProcessBuilder 在生产环境中的应用
java·golang·processbuilder
掘金码甲哥2 小时前
3min手搓一个帮助文档站,很合理吧!
后端
JAVA面经实录9173 小时前
Java 数据结构与算法 (终极完整学习文档)
java·数据结构·算法
JAVA面经实录9173 小时前
操作系统面试题
java·服务器·数据库·计算机网络·面试
一杯奶茶¥4 小时前
基于springboot的失物招领管理系统带万字文档 校园失物招领管理系统 失物认领管理系统java springboot vue
java·vue.js·spring boot·java项目
不能只会打代码4 小时前
边缘视频分析平台的架构设计与性能优化——从750ms到190ms的调优之路
java·spring boot·redis·性能优化·边缘计算·物联网竞赛
小刘|4 小时前
Spring AI Alibaba 集成和风天气 API 实战
java·服务器·前端
KANGBboy4 小时前
java知识五(继承)
java·开发语言