1、SLO
SLO(服务等级目标)是服务质量的量化标准,核心围绕可用性、响应时间等关键维度,以下为简洁版标准框架:
核心指标与通用标准
- 可用性:基础服务≥99.9%(月故障≤43分钟);核心服务(金融/医疗)≥99.99%(月故障≤4.3分钟)。
- 响应时间:普通API P95≤500ms;高频交易P99≤50ms。
- 错误率:非核心接口≤0.1%;支付等核心接口≤0.01%。
- 吞吐量:按业务峰值设计(如电商大促每秒10万+订单)。
制定原则
可量化、匹配业务优先级、基于用户体验、动态调整。
2、SLA
SLA(Service Level Agreement,服务等级协议)是服务提供方与客户间的正式约定,核心内容简洁如下:
- 核心要素:明确服务范围(如API接口、云服务器)、SLO指标(可用性、响应时间等)、达标标准(如可用性99.9%)。
- 责任与补偿:约定未达标时的补救措施(如退款、服务时长补偿),以及双方权责(如客户数据提供义务、服务商维护责任)。
- 时效与变更:协议有效期、指标调整流程、争议解决方式。
本质:将SLO(目标)转化为具有约束力的双方约定,保障服务质量与客户权益。
2.1、SLO和SLA区别
- SLO(服务等级目标):是服务提供方内部定义的、可量化的服务质量目标(如“可用性99.9%”),是衡量服务本身的标准,不直接涉及双方权责。
- SLA(服务等级协议):是服务提供方与客户签订的正式协议,包含SLO作为核心指标,同时明确未达标时的补偿机制、双方权责等法律性内容,具有约束力。
简言之:SLO是“内部目标”,SLA是“双方约定(含SLO+补偿等)”。
3、MTTR
MTTR(Mean Time to Repair,平均修复时间)是衡量故障恢复效率的指标,即从故障发生到服务恢复正常的平均耗时。
核心标准:无统一数值,需结合业务场景设定,如:
- 核心系统(金融交易):MTTR ≤ 15分钟
- 非核心系统(普通APP):MTTR ≤ 2小时
意义:反映团队故障响应与修复能力,目标是越小越好。
4、MTBF
MTBF(Mean Time Between Failures,平均无故障时间):
衡量产品可靠性的指标,指设备在正常运行中,两次故障之间的平均时间间隔。数值越大,可靠性越高。
5、负载均衡 Nginx LVS
5.1、Nginx
一款高性能的开源 HTTP 服务器、反向代理服务器及邮件代理服务器。
- 核心特点:轻量级、高并发处理能力(支持数万并发连接)、低内存占用、模块化设计。
- 主要用途:
- 静态资源服务(如网页、图片)
- 反向代理(负载均衡、请求转发)
- 动静分离、SSL 终端代理等。
5.2、LVS
Linux Virtual Server,Linux虚拟服务器是基于Linux内核的负载均衡技术。
核心功能:通过IP负载均衡技术,将多台服务器组成集群,分发客户端请求,提升服务可用性与并发处理能力。
主要工作模式:
- NAT(网络地址转换)
- DR(直接路由)
- TUN(隧道)
特点:轻量、高效,适用于高并发场景(如大型网站、服务器集群)。
6、熔断降级 Sentinel Hystrix
工具 | 核心功能(熔断降级) |
---|---|
Sentinel | 基于流量控制,支持熔断(错误率/响应时间触发)、降级(RT/异常比例/异常数阈值),轻量级且规则动态配置。 |
Hystrix | 基于线程池/信号量隔离,熔断(错误率超阈值时断开)、降级(返回默认值),依赖隔离能力强,已停止维护。 |
两者均用于保障系统稳定性:Sentinel 更灵活轻量,Hystrix 侧重隔离但已过时。
7、Docker K8S Pod Deployment Service
组件 | 核心功能 |
---|---|
Docker | 容器化平台,打包应用及依赖为镜像,确保环境一致性,支持快速部署与资源隔离。 |
K8S | 容器编排系统,自动化部署、扩缩容、负载均衡,实现高可用集群管理。 |
Pod | K8S 最小调度单元,包含1个或多个紧密关联容器,共享网络和存储。 |
Deployment | 声明式部署控制器,管理 Pod 生命周期(创建、更新、回滚),支持滚动更新。 |
Service | 稳定网络端点,为 Pod 提供集群内固定 IP 和 DNS,实现负载均衡与服务发现。 |
8、CI/CD jenkins
Jenkins 是开源 CI/CD 工具,核心功能包括:
- 持续集成(CI):自动拉取代码、编译、单元测试,快速反馈代码问题。
- 持续部署(CD):支持自动化构建、打包、部署到测试/生产环境,可集成 Docker、K8s 等。
- 插件生态:丰富插件支持多语言(Java、Python等)、版本控制(Git、SVN)、通知工具(邮件、Slack)等。
- 流水线管理:通过代码定义构建流程(Jenkinsfile),实现流程可视化与版本化。