系统过载及保护的思考

2023-05-16

     家用电器为了防止电流过大,都会有保险装置,当电流过大时,自动切断电流,防止电器损坏, 防洪大坝的水位超过了警戒线,会开闸泄洪,防止大坝崩溃. 而我们的服务系统如果一旦流量过大(用户或请求超过其处理能力),很多情况下,都把自己搞挂了,很显然,我们设计系统时没有像我们的工业及建筑领域那样成熟的引入自我保护机制.稍不注意就把自己搞挂了.

     一个系统的处理能力是有限的,就如一个车站在车次一定的情况下(车辆一定,运力一定),每天可以输送2万名乘客, 如果逢年过节,赶上春运,一天来了25000名乘客,怎么办,多开几个售票窗口,多开几个进站通道,有用吗,显然,是没用的,肯定还有5000名乘客当天运送不了, 如果每天如此,持续10天,那么将有50000名乘客还在排队,假设所有的乘客都是按照先来后到的顺序依次上车,那么第11天来的第一名乘客,需要2.5天后才能乘车(需要等到前面50000人走完才能轮到自己)

   假如我们的一个服务系统A处理的每一个请求都依赖一个下游系统B(若干台机器提供的集群服务,如微信朋友圈拉取动态),系统B的吞吐量为2000/s .  不管你A系统如何优化,B最终一秒钟为你服务2000次. 而且B的这个服务水平是无法因为A的优化而可以提高的(不管你怎么设计车站,和售票窗口,进站通道,你只有100俩运输客车,一天最多装2000人开走)如果A系统的请求数忽然增至2500,如果所有的请求都是先入队列,假设队列长度很大(可容纳10万)再依次处理。(其实基本上所有的系统也都是这样),那20秒后,就会积压有10000个请求未处理,那么第21秒过来的第一个请求,需要等到前面10000个请求都处理完,也就是5秒中后才能处理,如果A上游的系统读超时为5S,那么在系统过载的那一刻开始,第20秒,对于A的上游系统来看,整个A系统已经完全不可用了.假设这是个面向用户的互联网服务,那么系统目前的现状就是,当系统过载后(请求数超过了2000/s)20秒后的第一个请求需要5秒后才能被响应,用户的往往在等待若干秒发现系统没响应时就会不断的重试,导致了新的重复的请求越来越多,而之前的请求早已没有意义,可我们的系统还是很认真值守的处理之前的请求. 看起来,这就已经是个死循环了,无用的请求在大量占用系统的资源,新的请求被排在了最后,需要很久才能被处理,用户得不到响应,开始重试,请求越来越多,直到整个系统完全不可用。

    那么我们怎么才能做到系统的自我保护呢,最简单有效的方式就是丢弃无用请求,当第一秒2500个请求过来时,我们只处理2000个请求,其他的请求可以在队列里直接丢弃,或者直接控制队列的入队速度,那么我们的系统还能正常的按照2000/s的水平提供服务,只是部分请求,也就是 1/5的请求被丢弃,第二秒也是这样,量力而行,只处理我们系统能够承受的服务。而不是尽力而为 . 对于超出自己处理能力范围的请求,要勇于拒绝.系统的能力只有这么多,既然无法提供2500的水平,那就提供2000的水平,最起码我们的服务还能服务4/5的请求.不至于像前面所述那么全部瘫痪.

   有时候觉得对于系统的设计是个价值观范畴的话题.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

系统过载及保护的思考 的相关文章

  • 视觉惯性里程计Visual–Inertial Odometry(VIO)概述

    本文主要来自于博客园关于知乎的讨论 链接如下 xff1a Visual Inertial Odometry VIO
  • IBM Was 打补丁记录

    0 拷贝解压ifph52925升级包 通过FTP工具 xff0c 把压缩包传到服务器 xff0c unzip d test01 9 0 0 0 ws was ifph52925 zip 1 停掉was 服务 ps ef grep was k
  • 阿里云服务器远程桌面安装

    阿里云服务器远程桌面安装 环境说明 xff1a CentOS 8 3 一 安装桌面环境 root用户下执行命令 yum grouplist yum groupinstall y span class token string 34 Serv
  • STM32与Futaba遥控器进行S.Bus的通讯程序

    Futaba xff08 日本双叶电子工业 xff0c 戏称 扶他爸 xff09 的遥控器用航模中使用较为广泛的遥控器 S Bus则是Futaba公司提出的舵机控制总线 本篇博文主要以T6K为对象 xff0c 介绍STM32与S Bus协议
  • c++ 小知识点记录

    数据类型 数据类型类型说明符位数取值范围整型int32 2147483648 43 2147483647短整型short int16 32767 43 32768长整型long int32 2147483648 43 2147483647单
  • makefile简明教程

    makefile 主要是编译就是用来编译源文件的 一个工程中的源文件不计其数 xff0c 其按类型 功能 模块分别放在若干个目录中 xff0c makefile定义了一系列的规则来指定哪些文件需要先编译 xff0c 哪些文件需要后编译 xf
  • SLAM 定位和导航

    码一篇文章后面看 xff1a gt https www cnblogs com hiram zhang p 10416081 html
  • 开发工具及环境配置

    一 jdk下载 安装与环境变量配置 1 下载 xff08 1 xff09 打开下载网址Java Downloads Oracle或直接搜索Oracle JDK下载 xff08 2 xff09 根据电脑系统 xff08 win linux等
  • ros2中 用python编写action 的service和client

    第一步 xff1a 定义请求反馈的变量 主要参考官网网站 xff1a Writing an action server and client C 43 43 ROS 2 Documentation Rolling documentation
  • TX2自动刷机视频教程

    TX2自动刷机视频教链接https v qq com x page b0515967lbr html
  • python 中 机器学习算法 --决策树

    文章目录 思维脑图3 1 2 用pandas加载数据集3 1 3 清洗数据集现在计算这些的实际值主队和客队最后一场比赛赢了吗 xff1f 3 2 决策树3 2 1 决策树中的参数3 2 2 决策树的使用 3 3 体育赛事结果预测 3 4 随
  • 结合OPENNI2,Aruco与OPENCV进行视觉定位

    前些时间写了篇文章把我在做这个项目中遇到的问题以及思路说了一下 传送门 http jcs130 iteye com blog 2185533 在上篇文章的思路下作了实现 已经达到了教授的要求 nbsp 首先第一步检测四个角的坐标 经试验 在
  • oracle 备份表

    一 PL SQL备份 xff08 1 xff09 打开PL SQL xff08 2 xff09 在Tools下选择Export Tables xff08 3 xff09 在列表中找到想要备份的表 xff0c 右键选择Export Data
  • 概率机器人——机器人环境交互

    状态 环境特征以状态表征 xff0c 状态是所有会对未来产生影响的机器人及其环境的所有方面因素 概率生成法则 状态转移概率 xff0c 根据条件独立 xff0c 可得到 xff1a 它指出了环境状态作为机器人控制ut的函数是如何随着事件变化
  • cmake、catkin知识点点点点

    GNU GPL GCC G 43 43 GNU xff1a 一个计划 运动 xff0c 目标是创建一套完全自由的操作系统 GPL xff1a GNU通用公共许可协议 xff0c 广泛应用的自由软件许可证 xff0c linux发行时选择了G
  • 大陆ARS-408XX毫米波雷达

    前期准备 xff1a 使用创芯科技CAN分析仪 xff0c 大陆ARS 408XX毫米波雷达 xff0c 电源 xff1a 12DC 24DC 一 安装USBCAN 驱动 1 打开设备管理器 2 鼠标右键 更新驱动 3 手动查找 4 找到自
  • 书籍记录了我技术的成长历程

    看到了有奖征文的内容 xff0c 觉得内容很好 xff0c 很想把自己读过的技术书籍整理一下 xff0c 给自己的技术类图书梳理一下思绪 xff0c 觉得是一件很值得做的事情 xff0c 花了一点时间整理了下 xff0c 与各位博友分享 x
  • 2021-11-01 福州高速公路定位测试有感

    室内定位测试大大小小经历了数十次 xff0c 这次福州的高速公路隧道测试感触颇多 第一 强大的自驱力 xff1a 从测试安排出差伊始 xff0c 团队成员主动提出听从安排 xff0c 积极配合 xff1b 讨论测试计划和方案时 xff0c
  • New Timeline的Toolbar样式设计

    最近在做新版的Timeline xff0c Toolbar Menu 的功能基本完成 xff0c 因此把截图拿出来与各位博友分享一下 新版Timeline HTML版本 主页面 xff1a 这次主要讲解一下Toolbar Menu 的功能
  • VS改大小写的快捷键

    改成小写 xff1a Ctrl 43 U 改成大写 xff1a Ctrl 43 Shift 43 U 记得要选中要修改的一段英文

随机推荐

  • 我的2013,我的CSDN

    2013年是我写CSDN博客的第三个年头了 xff0c 这一年我的博客访问量直线上升 xff0c 这一年我知道了什么是博客专栏 xff0c 这一年我知道如何申请CSDN专家 虽然失败了 xff0c 这一年我从CSDN博客收获了很多很多 xf
  • SQL两表之间:根据一个表的字段更新另一个表的字段

    1 写法轻松 xff0c 更新效率高 xff1a update table1 set field1 61 table2 field1 field2 61 table2 field2 from table2 where table1 id 6
  • 多边形面积计算公式

    function polygonArea points var i j var area 61 0 for i 61 0 i lt points length i 43 43 j 61 i 43 1 points length area 4
  • 《最重要的事,只有一件》读书笔记

    背景 每天都在忙忙碌碌中度过 xff0c 感觉到很累 xff0c 但仔细思考一下好像也没有收获 仔细想一想 xff0c 在每天之中 xff0c 大脑主动或被动的接受了太多的信息 xff0c 如果没有给信息分出轻重缓急 xff0c 整理归类
  • table合并单元格colspan和rowspan

    span style font family none code span style background color rgb 255 255 0 span style font family none code span style f
  • jQuery两个稳定版本的比较

    jquery历经了多个版本的更新 xff0c 版本上的比较貌似没什么必要性 xff0c 一般来说新的版本会比旧的版本各方面都略有提升 xff0c 但由于新版中增加了各种新的功能 xff0c 难免会引起bug的发生 评估一个版本是否适合当前开
  • 室内定位简介

    室内定位定义 xff1a 室内定位是指在室内环境中实现位置定位 xff0c 主要采用无线通讯 基站定位 惯导定位等多种技术集成形成一套室内位置定位体系 xff0c 从而实现人员 物体等在室内空间中的位置监控 室内定位需求 xff1a 在室外
  • 命令行提交代码到gitLab服务器

    1 创建项目 xff0c 前提是gitLab服务器已经搭建完成 xff0c 在gitLab个人账户下创建一个项目 xff0c 项目名称自己定义 xff0c 如图 xff1a 2 拷贝本地代码到指定目录 xff0c 一般自己创建一个固定的代码
  • VS 附加到进程调试技巧

    有些时候碰到自己开发的程序嵌入到别人的框架中 xff0c 而在接口的地方出了问题 xff0c 而又不方便将自己的模快加入到别人的工程中 有很多相关的文件 xff0c 还有mster页面等 xff0c 这个时候VS的附加到进程调试变得不可或缺
  • Request和Response详解

    Request 和 Response 对象起到了服务器与客户机之间的信息传递作用 Request 对象用于接收客户端浏览器提交的数据 xff0c 而 Response 对象的功能则是将服务器端的数据发送到客户端浏览器 一 Request对象
  • 人最宝贵的东西是生命

    钢铁是怎样炼成的 人最宝贵的东西是生命 生命属于人只有一次 一个人的生命是应该这样度过的 当他回首往事的时候 他不会因虚度年华而悔恨 也不会因碌碌无为而羞耻 这样在临死的时候 他才能够说 39 我的生命和全部的经历 都献给世界上最壮丽的事业
  • 树莓派卡在开机界面循环要求输入密码,提示cannot currently show the desktop

    这个必须得记录下来 xff0c 太坑了 昨天树莓派用着好好的 xff0c 突然就拷贝ssh拷贝东西进去拷贝不成功 xff0c VNC登陆图形界面 xff0c 输入密码后又循环弹出输入密码解密 xff0c 还提示 cannot current
  • FreeRTOS----debug之任务的挂起和恢复实验,任务无法切换

    任务的挂起和恢复 debug xff1a 背景 xff1a 有两个Task Task1为LED闪烁任务 Task2为挂起恢复LED任务 调试程序遇到的问题 xff1a LED灯闪烁任务不能正常执行 一直常亮 原因 xff1a LED闪烁任务
  • 提高IT运维效率,深度解读京东云AIOps落地实践(异常检测篇)

    基于深度学习对运维时序指标进行异常检测 xff0c 快速发现线上业务问题 时间序列的异常检测是实际应用中的一个关键问题 xff0c 尤其是在 IT 行业 我们没有采用传统的基于阈值的方法来实现异常检测 xff0c 而是通过深度学习提出了一种
  • Android getResources的作用和需要注意点

    今天做一个Android的文件管理器 xff0c 里面用到很多的地方用到了getResources Drawable currentIcon 61 null currentIcon 61 getResources getDrawable R
  • Mac OS X 的包管理器 HomeBrew

    Homebrew 是最简单和灵活的方式 xff0c 用来在 Mac OS X 安装 Linux 工具包 Homebrew 国内高速安装脚本 xff1a HomebrewCN Homebrew 国内安装脚本 安装过程很简单 xff1a rub
  • Android中Parcelable的原理和使用方法

    Parcelable的简单介绍 介绍Parcelable不得不先提一下Serializable接口 xff0c Serializable是Java为我们提供的一个标准化的序列化接口 那什么是序列化呢 进行Android开发的时候 xff0c
  • 小米路由器安装mt工具箱

    去年六月底的时候在小米路由3上开启了ssh 安装了mt工具箱 现在回头看来 xff0c 开启ssh的方法已经大相径庭 不过 xff0c 今天的主角换成了小米路由器pro半个月前替换掉原来的小米路由3 那么 xff0c 肯定也是要在小米路由器
  • SSD的随机读能力 和一个高访问量的读写服务系统

    昨天晚上写了个代码 xff0c 测试了下目前我这个1000块钱的SSD的随机读能力 主机配置 i5 4核 两物理核 8G内存 linux 内核版本 2 6 18 128 el5 一个50G的文件 gt gt 8G内存 防止全缓存至内存中 p
  • 系统过载及保护的思考

    家用电器为了防止电流过大 xff0c 都会有保险装置 当电流过大时 xff0c 自动切断电流 xff0c 防止电器损坏 防洪大坝的水位超过了警戒线 xff0c 会开闸泄洪 xff0c 防止大坝崩溃 而我们的服务系统如果一旦流量过大 用户或请