可伸缩架构-面向增长应用的高可用

简介: 可用性可靠性:系统是否具备无差别的执行预期操作的能力。主要指标:是否通过了所有测试套件。 3+2=6  不可靠可用性:为了执行这些操作,系统当前可运行的能力。主要指标:是否能进行响应。测量可用性公式:网站可用性百分比=(该期间的总秒数-系统宕机的秒数)/该期间的总秒数N个9百分比每月的故障时间2个999%432m3个999.

可用性

可靠性:系统是否具备无差别的执行预期操作的能力。主要指标:是否通过了所有测试套件。 3+2=6  不可靠

可用性:为了执行这些操作,系统当前可运行的能力。主要指标:是否能进行响应。

测量可用性公式:网站可用性百分比=(该期间的总秒数-系统宕机的秒数)/该期间的总秒数

N个9 百分比 每月的故障时间
2个9 99% 432m
3个9 99.9% 43m
4个9 99.99% 4m
5个9 99.999% 26s
6个9 99.9999% 2.6s

什么可能导致低可用性:

  1. 资源耗尽  io&网络&内存等
  2. 预期之外的压力变化  黑客攻击,突发事件流量
  3. 流动行为的增加  一次上线协作的人越来越多,发生失误的概率也就越大
  4. 外部依赖  外部的资源是否可用可靠的影响
  5. 技术债务  对已知bug未修复的累计,未知bug的隐患,新需求的合理性问题

提高可用性的五个要点:

  1.  时刻考虑应对故障
  2. 时刻考虑如何伸缩
  3. 缓和风险  即使服务和资源无法不可用时,依然确保系统以最好的最完整的状态工作
  4. 监控可用性  
    • 服务器监控
    • 配置变化监控
    • 应用程序性能监控
    • 人为测试
    • 报警  
  5. 以可预期及明确的方式来处理可用性问题

风险管理

风险管理就是在消除风险的成本与风险发生的成本(缓和风险)之间保持平衡。

风险缓和指的是通过降低风险发生的可能性或者降低风险发生时的严重性,来降低风险的影响。

风险的重要程度就会风险发生的严重性和可能性两者之和。为了降低风险,至少需要降低其中之一。 

严重性:如果发生风险,所需付出的代价。

可能性:风险发生的几率。 

管理系统风险的基本步骤:

  1. 识别风险  创建系统已知风险列表即风险模型。
  2. 消除风险  找出需要解决的风险,制定解决计划
  3. 风险缓和  制定缓和计划降低风险发生的可能性和严重性
  4. 定期检查  定期检查风险模型,更新计划 

风险模型的风险项:模版地址(http://bit.ly/architectbookdl)

  1. 风险ID:每个风险的唯一标识。
  2. 系统:风险所属系统或者子系统或者模块的名称。
  3. 所有人:风险负责人抑或团队,负责制定风险的缓和计划和解决计划。
  4. 风险描述:风险的概要描述,便于查看和领会。
  5. 标识日期:该风险入模型的日期。
  6. 可能性:分高中低。
  7. 严重性:分高中低。
  8. 风险缓和计划:正在使用的或者已商定的用来降低该风险严重性和可能性的措施和策略。
  9. 状态:该风险当前的状态。活跃,已缓和,正在修复,已解决等。
  10. ETA:该风险预估解决日期。
  11. 监控:是否对该风险进行了监控,监控方式策略,譬如人为监控,每周定位。自动监控,日志触发。
  12. 触发计划:此风险发生后,是否有计划处理此风险。时间响应文档,应急手册等。
  13. 备注:记录风险对演化历史,以便于回溯。
  14. 跟踪ID:需求或者bug ID。

风险模型的作用域:

  1. 团队管理
  2. 公司战略
  3. 系统模块
  4. 个人
  5. 售后支持
  6. 安全威胁

维护风险模型:

风险模型最大挑战就是人的惰性和模型本身对过时,需定期变换检查风险模型对人员,可以有碰撞和崭新对视角。

  1. 发现新风险
  2. 删除旧风险
  3. 更新可能性和严重性
  4. 检查优先级高的风险  计划是否生效  当前状态和频率
  5. 检查优先级低的风险

构建低风险系统的常用手段:

  1. 冗余  增强可用性
  2. 幂等  降低出错的概率
  3. 独立性  冗余后却都部署在一个机房就不具备独立性
  4. 安全  攻击,误操作等
  5. 自修复  集群 主备切换等
  6. 运维流程  保持脚本自动化  可追溯 可重现 减少人为的参与   

 微服务

为何要用微服务:

所有者收益:让每个服务都有清晰的所有权,团队可以只关注于他们负责的模块,以及依赖服务的api约定。

规模收益:系统在不同模块上的伸缩性需求不一样。

如何决定服务的边界:

  1. 特定的业务需求   监管 信用卡等业务
  2. 清晰独立的团队所有权  负责该功能的团队是否清晰和独立,在不同城市不同楼层能否帮助确定服务边界
  3. 天然的隔离的数据  其管理的数据是否天然与其他数据相独立?
  4. 共享的能力和数据   是否需要被其他模块共享?代办,消息等。

服务故障的常见形式和解决方案

级联式的服务故障:一个服务故障可能导致整个系统发生严重的问题。

对服务api的响应约定:

  1. 可预测的  返回错误提示信息
  2. 可理解的  格式和结构要稳定和统一
  3. 对当前情形是合理的  需要的是可删除的用户,因为错误,不能返回全部用户,应当返回无或者无法返回结果。

对服务api的请求约定:

  1. 服务约束  服务的能力范围,入参的合法性约束
  2. QPS  服务所能提供的最高并发请求数

 服务故障的应对:

  1. 优雅降级  不重要的服务可选择提供有限的功能,舍弃故障服务提供的数据
  2. 优雅补偿  搜索销量前十的服务故障,可返还最流行的前十的数据
  3. 尽早失败  核心的依赖服务故障或者输入参数不合法,自身的服务在注定会失败的前提下尽早失败。 

微服务的伸缩性(保证两个失误的高度,即挂两个节点的伸缩性):

  1. 丢失一个节点  QPS会不会爆
  2. 升级或者重启一个节点(轮流部署)  升级中丢一个节点QPS会不会爆
  3. 数据中心的冗余和恢复  一个中心可能有多个节点  即也须考虑多个中心的伸缩性   数据中心越多每个数据中心所需的节点越少
  4. 隐藏的共享故障  机架停电  城市断电

服务所有权的义务和权利:

  1. API设计  api的设计实现测试和版本管理工作
  2. 服务开发  业务逻辑的设计开发和测试
  3. 数据  数据展现,模型,访问方式以及生命周期
  4. 部署  负责决定服务是否需要升级以及部署
  5. 部署窗口  决定什么时间可以进行安全部署
  6. 产品变更  负载均衡器的设置和系统调优
  7. 环境  管理服务的生产环境以及所有环境
  8. 服务SLA  讨论确定并监控SLA,以及保障服务满足SLA的相关工作职责
  9. 监控  监控SLA IO CPU等
  10. 值班/突发事件响应  确保突发事件的响应速度能满足之前定的SLA
  11. 报告  向外部发送内部报告,以及服务的运行健康报告。

服务分级:

1级服务  如果某个服务出现故障会导致用户或者公司业务产生重大损失。 登录服务,权限服务,订单处理服务。

2级服务  如果某个服务发生故障,会导致用户体验显著受到影响,但是不会导致无法使用你的系统。 搜索服务,订单结算服务。 

3级服务  对用户造成较小的不易注意到的影响,对系统造成有限的影响。用户头像服务,推荐服务,每日提醒服务。

4级服务  即使失败也不会对用户体验造成任何严重的影响,也不会对业务和资金方有任何影响。 销售报告服务,邮件发送服务。

使用服务分级:SLA服务等级协议

  1. 期望  对这个级数的服务的期望,可成为沟通语言的一部分,描述用户对系统的期待(外部SLA),服务调用方对服务提供方的要求(内部SLA)
    • 调用延迟
    • 流量QPS
    • 运行时长  一段时间的可用性
    • 错误率
  2. 响应性  对这个级数的服务的响应性要求
    • 问题的严重性
    • 出现问题的服务级别
  3. 依赖   依赖的梳理归类
    • 关键依赖   你的服务级别高于依赖服务的级别  自身服务在关键依赖故障时需仍然尽力提供功能
    • 非关键依赖  你的服务级别低于依赖服务的级别  可以忽略你依赖的此服务的故障,因为此服务的可用性和响应性比你高。

ps:

排名SLA,tp90>20ms(前置条件相同的QPS下)

tp90:(抽样总数*10%)  需要排除的样本数量    排除掉这么多的耗时最高的响应样本

20ms:取剩下的样本中耗时最高的响应时间

云服务 

区域:云资源相连形成的一大片地区成为区域,表示一个特定的地理区域。描述和记录了云资源的地理拓扑多样性,网络拓扑多样性。

可用区:一个区域包含多个可用区,表示一个区域指定部分的云资源。

数据中心:一个可用区包含多个数据中心。一个用来放置系统资源(例如服务器)的指定楼层,建筑物或者建筑群。

云资源分配:

  1. 基于固定额度的资源分配,指定实例的数量,服务器的大小等。
    • 根据业务特性,实际场景或者当前资源的使用情况调整分配。
    • 预留容量,固定100台的使用量,其他100台的使用按小时计费。
  2. 基于使用量的分配,可按存储和传输的数据量来计费。

各种基于云服务的应用程序运行环境:

  1. 云服务器  比较基础的服务器技术
  2. 计算分片  与服务器独立的计算环境中以托管的方式运行应用程序。 譬如google app engine
  3. 动态容器  动态分配资源,在不同服务器中迁移容器。包装了完整的服务器功能,提供了快速启动停止服务以及迁移服务到新系统的能力。 譬如docker
  4. 微计算  体积小,高度可扩展,基于事件驱动的运行环境。 譬如aws lambda。

 

 

 

 

 

 

 

目录
相关文章
|
8月前
|
SQL 监控 关系型数据库
MySQL主从复制:构建高可用架构
本文深入解析MySQL主从复制原理与实战配置,涵盖复制架构、监控管理、高可用设计及性能优化,助你构建企业级数据库高可用方案。
|
10月前
|
人工智能 自然语言处理 开发工具
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
本文介绍统一多模态 Transformer(UMT)在跨模态表示学习中的应用与优化,涵盖模型架构、实现细节与实验效果,探讨其在图文检索、图像生成等任务中的卓越性能。
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
|
9月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1338 3
|
9月前
|
运维 监控 搜索推荐
MSE ZooKeeper:Flink 高可用架构的企业级选择
本文深入解析了 Apache Flink 架构中 ZooKeeper 的核心作用,包括 Leader 选举、Checkpoint 管理、作业协调及配置管理等关键功能,并结合金融风控与电商推荐等典型场景,分析了 ZooKeeper 在实际应用中的技术实现。
|
11月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
1254 0
|
7月前
|
运维 监控 安全
公链开发中的高可用架构设计要点
本指南提供公链高可用架构的可复用流程与模板,涵盖目标拆解、先决条件、分步执行、故障排查及验收标准,结合跨链DApp与量化机器人案例,提升落地效率与系统稳定性。
|
7月前
|
人工智能 JavaScript 前端开发
GenSX (不一样的AI应用框架)架构学习指南
GenSX 是一个基于 TypeScript 的函数式 AI 工作流框架,以“函数组合替代图编排”为核心理念。它通过纯函数组件、自动追踪与断点恢复等特性,让开发者用自然代码构建可追溯、易测试的 LLM 应用。支持多模型集成与插件化扩展,兼具灵活性与工程化优势。
573 6
|
8月前
|
人工智能 Cloud Native 中间件
划重点|云栖大会「AI 原生应用架构论坛」看点梳理
本场论坛将系统性阐述 AI 原生应用架构的新范式、演进趋势与技术突破,并分享来自真实生产环境下的一线实践经验与思考。
|
8月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
8月前
|
机器学习/深度学习 人工智能 vr&ar
H4H:面向AR/VR应用的NPU-CIM异构系统混合卷积-Transformer架构搜索——论文阅读
H4H是一种面向AR/VR应用的混合卷积-Transformer架构,基于NPU-CIM异构系统,通过神经架构搜索实现高效模型设计。该架构结合卷积神经网络(CNN)的局部特征提取与视觉Transformer(ViT)的全局信息处理能力,提升模型性能与效率。通过两阶段增量训练策略,缓解混合模型训练中的梯度冲突问题,并利用异构计算资源优化推理延迟与能耗。实验表明,H4H在相同准确率下显著降低延迟和功耗,为AR/VR设备上的边缘AI推理提供了高效解决方案。
1407 0