07 - 3系统容量规划

news2024/11/25 7:12:52

阿里系业务容量规划

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Tair集群部署与水位调配

在这里插入图片描述

阿里系容量精调之单机压测场景

传统模拟请求

流量复制

在这里插入图片描述

流量转发

在这里插入图片描述

网关权重

在这里插入图片描述

线上测试注意点

在这里插入图片描述

阿里系混合部署技术

  • 资源分时复用:提高资源利用率
  • sigama框架做在线资源池调度,伏羲做离线资源池调度;两者之上有顶层混部调度

生产级限流维度和前端柔性方案

网关流控

  • 限流
    • 全局维度
    • 用户维度
    • IP维度
    • Sentinel:调用方限流、热点限流
  • 准入
    • 黑名单
    • 白名单
    • DDos高防
  • 整形
    • 预热、冷启动
    • 匀速通过
    • 排队机制:把当前先到的请求先暂存起来,等时间节点到之后再放出来

后端降级、客户端限流

前端柔性

  • 在前端做削峰、错峰的处理
  • 例如在零点开始双十一大促,在零点零分零秒点击感觉点不动,极短时间比如一秒的时候就点进去了。可能就是前端作了处理。当全国的用户都在狂点请求的时候,前端不会立即发起请求,而是在0 ~ T0秒之间随机取一个延时时间,等延时时间到了之后在发送该请求。这样做就把瞬间的流量洪峰散列开,达到削峰的效果。
  • 也可以设置一个有效请求的最短时间间隔。比如设置的时间阈值是3秒钟,用户在这三秒钟的时间内点了很多次请求,但是前端只会发送一次请求,其他的请求会视为无效请求。
  • 合理的使用前端柔性可以大大降低后端的压力,并且非常轻量级,容易实现

线上应急预案

  • 预防问题
    • 精准评估:容量评估、全链路压测
    • 数据 + 服务:缓存、异构、异步化;分库分表;DR(容灾)
    • 系统阈值:限流、降级熔断(自动 + 手动)、弹性扩缩
  • 发现问题
    • 监控预警:水位监控、QPS/RT监控、业务埋点、硬件资源监控
  • 快速响应
    • 应急预案:三级响应、FO(故障转移:把问题流量的机房转移到容灾备份机房)、手动降级、容灾演练(定期切断部分机房,模拟故障场景)、RCA复盘

识别故障等级

  • 核心主链路(必须马上处理)
  • 外围支持系统
  • 影响范围(受影响的终端用户的数量)
  • 预估资损(比如广告系统故障,可能没有影响到终端用户,但会带来很大的资损)

故障预案

  • 应用层
    • 人工降级方案(留人工干预的接口:第一时间可以响应、主动对边缘业务降级)
      • 降级异步写
      • 读降级(对一致性要求不高的场景)
      • 功能性降级(例如账单模块和历史浏览等可以在双十一大促期间关掉)
    • 客户端限流开关
      • 开关推送(springcloud中的config推送)
    • 禁止爬虫(大促情况下禁止)
  • 平台层
    • 机房断网演练
    • 故障转移

三高系统的稳定性

一个系统的并发量是不是越高越好?

  • 不是,更重要的是高可用
  • 并发QPS vs TP99(99%的请求的平均响应时间,可以反应系统的稳定性)
  • 稳定性指标
    • 时延:空间换时间(缓存,异步)
    • 网络传输:时间换空间(Feign组件有请求压缩的功能,压缩请求可以减少网络传输中的占用的带宽,减少网络开销,但是压缩和解压会增加时间开销)
    • 减少资源开销
      • 降低锁竞争:尽量少用synchronized,开销大。本地可以使用 cas + 线程出让。即使有时候不得不用到synchronized,也要尽可能减少锁定资源的范围
      • 节省线程资源:池化(session建立开销);线程隔离:给指定的资源分配一定数量的线程
      • 服务无状态化:弹性、快上快下
    • 异步化
      • 异步编排、状态机推进
      • 缓存更新(canal监控mysql的binlog日志,做数据同步:业务复杂度–,稳定性++)
      • 队列化——本地、MQ
      • 异步化不可避免的会有重试,所以一定要注意接口的幂等性保证和重试机制

线上异常的回退

  • 版本化部署
    • 发布历史记录
    • 快速回退到稳定版本
  • 版本发布
    • 金丝雀测试、灰度发布
    • AB Testing
    • 切流量:将一部分流量导向旧代码,一部分流量导向新代码
  • 数据DDL变更
    • 版本控制 + 发布历史
    • DDL & 数据订正也是代码
    • 全量脚本 + 增量脚本 + 执行脚本 + 回退脚本

面试题

谈谈你对全链路调优的经验(针对大厂)

  • 业务容量预估
  • 单机压测
  • 线上数据 + 模型回测 - 老业务 新业务预估
  • 容量精调 —— 全链路压测(瓶颈)
  • 水位调配,降级熔断,限流——重新压

从架构层面考虑,如何提高线上计算资源的利用率

  • 水位监控,弹性计算
  • 混合部署(面试官懵逼系列)

架构层面,如何防止流量超过系统承载能力

  • 优秀的答案不是一个“点”,而是一个“面”,一个完整的解决方案
  • 限流——网关层限流、分布式组件限流,客户端多个维度
  • 降级、熔断
  • 前端柔性——错峰、削峰
  • 弹性计算

如何评估系统的饿稳定性、可用性

  • 时延:空间换时间,空间:时间换空间
  • 宏观层面:DR(容灾备份)、镜像同步、FO
  • 微观层面:降低资源竞争、池化、无状态(弹性)、异步化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/514016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于fpga的图像处理之图像灰度化处理(Vivado+Modelsim+Matlab联合仿真验证)

** 基于fpga的图像处理之图像灰度化处理 ** 本文的思路框架: ①本文采用两种算法进行灰度处理,平均法和加权均值法;加权均值法采用了直接公式求解和查找表两种方式验证 ②FPGA设计中三个设计技巧,可用于工程项目借鉴&#xff…

Redis了解

Redis 源码大概做了哪些事情? 设置默认参数创建对象、持久化定时器回调加载文件参数 (使用配置文件替代部分默认参数)加载文件数据写入字典创建client connect事件handler(accept后,写入读写事件select(),最新的版本用epoll&…

xlsx 导出 (简单使用)

下载数据为xlsx 安装 npm install xlsx 在src下创建文件utils文件夹,在utils文件夹下创建XLSX.js文件 // 下载excel功能 import * as XLSX from xlsx/*** param dataList 表格数据内容 array* param fileName 文件标题。必须以 .xlsx结尾*/ export const download…

Linux网络——Shell编程之快捷命令

Linux网络——Shell编程之快捷命令 一、快捷排序 — sort 命令二、快捷去重 — uniq 命令三、快捷替换 — tr 命令四、快速裁剪 — cut 命令五、文件拆分 — split 命令六、文件合并 —paste 命令七、变量扫描器 — eval 命令 一、快捷排序 — sort 命令 sort命令用于以行为单位…

五步看平台,选好安全的MT4交易外汇平台

在选择MT4外汇交易平台时,如何避免不正规的平台?以下是5招教你远离不正规MT4交易外汇平台。 1. 查看平台是否取得合法许可证 首要考虑的是该平台是否取得了合法的许可证。许可证是证明一个交易平台合法的最重要证据,因此务必在选择时核查该平台的许可证…

得物深入浅出解析JVM中的Safepoint

1.初识Safepoint-GC中的Safepoint 最早接触JVM中的安全点概念是在读《深入理解Java虚拟机》那本书垃圾回收器章节的内容时。相信大部分人也一样,都是通过这样的方式第一次对安全点有了初步认识。不妨,先复习一下《深入理解Java虚拟机》书中安全点那一章…

你真的了解Java类加载机制吗?

大家好,我是小米,一个喜欢分享技术的程序员。今天我来给大家简述一下Java类加载模型。 在Java中,类的加载过程是在程序运行时动态进行的。Java的类加载模型可以分为三个步骤:加载、连接和初始化。 类加载过程:加载 首…

Android面试指南:谈谈你对Flutter的理解

一、Flutter简介 Flutter是由Google开发的一种基于Dar编程语言的移动应用开发框架。可以帮助开发在构建高性能、美观、灵活的应用程序,从而实现跨平台开发,适用于与Android、ios、web、windows、macOS和linux等多个平台。 二、学习Flutter有什么优势 …

Java EE企业级应用开发(SSM)第11章

第11章SSM框架 一.预习笔记 1.准备jar包(注意版本) Spring一套包 Springmvc两个 Mybatis一个 Spring整合mybatis一个 Jstl一个用于jsp显示数据 Mysql一个用于访问数据库 Gson一个用于返回json数据 2.准备配置文件web.xml applicationContext.xml…

MySQL Client

MySQL客户端很多,自身携带的一些客户端工具也需要了解,方便快速测试。 MySQL Shell MySQL Shell Commands。 执行SQL语句时,必须切换到SQL模式。Shell指令较少,同时可以使用Python \py模式。 MySQL Shell所有的命令后面不需要加…

TCP通道和共享链路通道

推送SDK为了适应不同的场景和需求,对于一些对消息及时性、可靠性、自定义性要求高的应用,如即时通讯、社交、游戏等,可能更倾向于使用TCP通道,对于一些对消息节省流量、耗电量、兼容性要求高的应用,如新闻、天气、股票…

【软件工程】自动化测试保证卓越软件工程能力(3)

测试目标定义 对照目标系统,如下: 给出自动化测试平台目标如下: Case levelCase briefReport send toOVERALLUser 1 -> Process -> Customer 1BossLevel 1User 1 -> Process -> Customer 1 User 1 -> Process -> Custome…

AI自动写文章工具-ai文章智能生成器

随着人工智能技术的快速发展,越来越多的应用开始使用AI自动生成文章的功能,实现全自动、高质量和高效率的文章写作。本文将从全自动批量生成、没有错别字和标准语法、自动插入图片以及严格按照标准格式结构生成几个方面,展开对AI自动生成文章…

数据分析04——Pandas简介/Series对象/DataFrame对象

1、Pandas简介: Pandas是基于NumPy开发的数据分析三大剑客之一,Python数据分析的核心库提供快速、灵活、明确的数据结构Series对象:一维数组结构,由index和value构成DataFrame对象:二维数组结构,由index、…

MySQL基础(二十五)InnoDB数据存储结构

1 数据库的存储结构:页 索引结构给我们提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的,确切说是存储在页结构中。另一方面,索引是在存储引擎中实现的,MySQL服务器上的存储引擎负责对表中数据的读取和写入工作…

在外Windows公网远程连接MongoDB数据库

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自远程内网穿透的文章:公网远…

友元函数,友元类,内部类及其之间的关系,匿名对象等

TIPS 当某一个类当中有自定义类型成员变量的时候,然后对该类的实例化对象调用函数的时候走初始化列表的时候,如果说要对自定义类型成员变量进行初始化列表初始化的时候,尽管那个自定义类型它的构造函数是没有参数的,但是此时括号…

数据剖析更灵活、更快捷,火山引擎 DataLeap 动态探查全面升级

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近期,火山引擎 DataLeap 上线“动态探查”能力,为用户提供全局数据视角、完善的抽样策略,提高数据探查的灵活度以及响应速率。 …

【STL模版库】string类:模拟实现string类

一、成员变量 private:char *_str;size_t _size;size_t _capacity;public:static size_t npos -1; //编译报错,不能在类中初始化const static size_t npos -1; //[1]const char* c_str() const{ //[2]return _str;}size_t size() const{return _size;} size_t ca…

智慧水务云平台助力“十四五”水安全保障规划!

一、《“十四五”水安全保障规划》 水利部印发《“十四五”水安全保障规划》,规划中指出,“十四五”期间要抓好8个方面重点任务。 一是实施国家节水行动,强化水资源刚性约束。 二是加强重大水资源工程建设,提高水资源优化配置能…