首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

亿级流量架构之服务降级思路与方法

默认值: 设置安全的默认值,不会引起数据问题的值,比如库存为0 静态值:请求的页面或api无法返回数据,提供一套静态数据展示,比如加载失败提示重试,或者寻亲子网,或者跳到默认菜单,给用户一个稍微好一点的体验...故障降级 如果远程调用的服务器挂了(网络故障、DNS故障、HTTP服务返回错误),则可以进行降级, 例如返回默认值或者兜底数据或者静态页面,也可以返回之前的缓存数据。...爬虫和机器人 分析机器人行为:短时间连续操作,agent,行为轨迹、拖拽(模拟登陆/秒杀/灌水) 爬虫:引到到静态页或缓存页 降级 简而言之,在一个请求内,多级缓存架构下,后端缓存或db不可用,可以使用前端缓存或兜底数据让用户体验好一点...对于服务降级一般采用的策略有: 暂时切换读: 降级到缓存、降级到走静态化 暂时屏蔽: 屏蔽读入口、屏蔽某个服务 通常的流程为: 接入层缓存→应用层本地缓存→分布式缓存→RPC服务/DB 我们会在接入层...页面降级、页面片段降级、页面异步请求降级都是服务降级,目的是丢卒保帅,保护核心线程,或者因数据问题暂时屏蔽。 还有一种是页面静态化场景。

46640
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    双十一的亿级流量架构服务降级

    默认值: 设置安全的默认值,不会引起数据问题的值,比如库存为0 静态值:请求的页面或api无法返回数据,提供一套静态数据展示,比如加载失败提示重试,或者寻亲子网,或者跳到默认菜单,给用户一个稍微好一点的体验...故障降级 如果远程调用的服务器挂了(网络故障、DNS故障、HTTP服务返回错误),则可以进行降级, 例如返回默认值或者兜底数据或者静态页面,也可以返回之前的缓存数据。...爬虫和机器人 分析机器人行为:短时间连续操作,agent,行为轨迹、拖拽(模拟登陆/秒杀/灌水) 爬虫:引到到静态页或缓存页 降级 简而言之,在一个请求内,多级缓存架构下,后端缓存或db不可用,可以使用前端缓存或兜底数据让用户体验好一点...对于服务降级一般采用的策略有:暂时切换读: 降级到缓存、降级到走静态化暂时屏蔽: 屏蔽读入口、屏蔽某个服务 通常的流程为: 接入层缓存→应用层本地缓存→分布式缓存→RPC服务/DB 我们会在接入层...页面降级、页面片段降级、页面异步请求降级都是服务降级,目的是丢卒保帅,保护核心线程,或者因数据问题暂时屏蔽。 还有一种是页面静态化场景。

    37110

    亿级流量架构之服务降级思路与方法

    3.2 默认值 设置安全的默认值,不会引起数据问题的值,比如库存为0 3.3 静态值 请求的页面或api无法返回数据,提供一套静态数据展示,比如加载失败提示重试...6 故障降级 如果远程调用的服务器挂了(网络故障、DNS故障、HTTP服务返回错误),则可以进行降级, 例如返回默认值或者兜底数据或者静态页面,也可以返回之前的缓存数据。...WEB端: 在服务不可用时,web端增加重试按钮或自动重试可以提供更友好的体验。...对于服务降级一般采用的策略有: 暂时切换读: 降级到缓存、降级到走静态化 暂时屏蔽: 屏蔽读入口、屏蔽某个服务...页面降级、页面片段降级、页面异步请求降级都是服务降级,目的是丢卒保帅,保护核心线程,或者因数据问题暂时屏蔽。

    67530

    网页错误码详细报错

    • 302 - 对象移动。  • 304 - 未修改。  • 307 - 临时重定向。4xx - 客户端错误  发生错误,客户端似乎有问题。...• 401.3 - 由于 ACL 对资源的限制而未获得授权。 这表示存在 NTFS 权限问题。即使您对试图访问的文件具备相应的权限,也可能发生此错误。...• 403.2 - 访问被禁止。验证是否已将 IIS 设置为允许对目录进行访问。另外,如果您正在使用默认文件,请验证该文件是否存在。...• 230 用户登录,继续进行。  • 250 请求的文件操作正确,已完成。  • 257 创建“PATHNAME”。...4xx - 瞬态否定的完成答复该命令不成功,但错误暂时的。如果客户端重试命令,可能会执行成功。  • 421 服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。

    5.5K20

    【网页】HTTP错误汇总(404、302、200……)

    • 302 - 对象移动。 • 304 - 未修改。 • 307 - 临时重定向。 4xx - 客户端错误 发生错误,客户端似乎有问题。...• 401.3 - 由于 ACL 对资源的限制而未获得授权。 这表示存在 NTFS 权限问题。即使您对试图访问的文件具备相应的权限,也可能发生此错误。...• 403.2 - 访问被禁止。验证是否已将 IIS 设置为允许对目录进行访问。另外,如果您正在使用默认文件,请验证该文件是否存在。...• 230 用户登录,继续进行。 • 250 请求的文件操作正确,已完成。 • 257 创建“PATHNAME”。...4xx - 瞬态否定的完成答复 该命令不成功,但错误暂时的。如果客户端重试命令,可能会执行成功。 • 421 服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。

    11.4K20

    服务降级方案

    :比如可用率低于90%,或者数据库连接池被打爆了,或者访问量突然猛增到系统能承受的最大阀值,此时可以根据情况自动降级或者人工降级; 严重错误:比如因为特殊原因数据错误了,此时需要紧急人工降级...爬虫降级:在大促活动时,可以将爬虫流量导向静态页或者返回空数据从而降级保护后端稀缺资源。 自动开关降级:自动降级是根据系统负载、资源使用情况、SLA等指标进行降级。...服务降级:对于服务降级一般采用的策略有:暂时切换读(降级到缓存、降级到走静态化)、暂时屏蔽(屏蔽读入口、屏蔽某个服务)。...页面降级、页面片段降级、页面异步请求降级都是服务降级,目的是丢卒保帅(比如因为这些服务也要使用核心资源、或者占了带宽影响到核心服务)或者因数据问题暂时屏蔽。...领豆豆防刷降级为拼图验证 H5变PC页面 使用通用内容代替个性化推荐内容   降低安全级别 发放京豆、提交订单、发表评论、登录不调用风控接口 结算页前端下单不启用验证码 集中式session不可用

    1.8K20

    常见的面试问题

    普通索引 唯一索引 主键索引 联合索引 外键索引 全文索引 3、什么是锁、写锁、读写锁 读写锁有四种操作: 读上锁 解锁 写上锁 写解锁 写锁最多有一个,锁可以有多个(最大个数据说和CPU个数有关...201 创建 请求成功并且服务器创建了新的资源。 202 已接受 服务器已接受请求,但尚未处理。 203 非授权信息 服务器已成功处理了请求,但返回的信息可能来自另一来源。...410 删除 如果请求的资源永久删除,服务器就会返回此响应。 411 需要有效长度 服务器不接受不含有效内容长度标头字段的请求。...代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。常见有500、503状态码。...502 错误网关 服务器作为网关或代理,从上游服务器收到无效响应。 503 服务不可用 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。

    75010

    企鹅电竞登录鉴权系统架构与核心数据热备容灾方案

    检查用户是否被禁 CMEM存储 变为非关键路径 上游业务暂时性无法得知用户是否被禁。...方案优缺点如下: 优点: (1)数据备份交由同步中心完成,依靠DB层对账功能,有效保证备份数据的完整性和一致性; (2)服务L5采用就近寻址,在主CKV不可用时,自动访问只读svr,完成自动切换;...架构如下: 在极端情况下,当login_svr或主CMEM出现故障导致服务不可用时,紧急切换至异地服务,保证服务正常运行。...方案缺点: (1)故障发生后需人工介入,完成切换; (2)备份login_svr大部分时间闲置,浪费机器资源。...架构如下: 方案优点: (1)失败二次重试,保证现网旧用户在主CMEM发生故障时仍可正常登录访问; (2)没有复杂的检测错误、统一自动切换逻辑,实现相对简单。最终采用此方案。

    49120

    无法获得锁 varlibdpkglock - open (11: 资源临时不可用)

    一、无法获得锁 /var/lib/dpkg/lock – open (11: 资源暂时不可用) 在用sudo apt-get install 安装软件时,由于速度太慢,想换个软件源,直接关闭了终端,apt-get...但进程没有结束,结果终端提示 “E: 无法获得锁 /var/lib/dpkg/lock – open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它...debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: 资源暂时不可用 amw@...[Y/n]y debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: 资源暂时不可用...dpkg:处理 squid (--configure)时出错:  子进程 安装 post-installation 脚本 返回了错误号 1 由于已经达到 MaxReports 限制,没有写入 apport

    1.9K150

    网络编程第六讲Select模型

    hServerAddr)); //监听 listen(m_socket, 1); //主要是进行连接的时候.代码不一样了.因为是非阻塞.所以返回的错误资源暂时不可用...nRet = FD_ISSET(m_socket, &Read);//只判断 char szBuf[0x1000] = { 0 }; if (SOCKET_ERROR...可以看到套接字是一个f4 有一个.所以下方我们进行判断是否是操作.如果是操作我们就进行接受连接 接受连接之后.我们把客户端的套接字也设置到集合中.当监听客户端操作的时候.写操作就会来了. ?...如果出现异常.我们就需要用 getsockopt 来检索错误值了. 因为我们使用的FD_xxx都是宏. 如果在使用GetLastError 则会出现错误.结果不准确....所以直接使用这个函数进行错误代码的获取.

    63430

    无法获得锁 varlibdpkglock - open (11: 资源临时不可用)

    一、无法获得锁 /var/lib/dpkg/lock – open (11: 资源暂时不可用) 在用sudo apt-get install 安装软件时,由于速度太慢,想换个软件源,直接关闭了终端,apt-get...但进程没有结束,结果终端提示 “E: 无法获得锁 /var/lib/dpkg/lock – open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它...debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: 资源暂时不可用 amw@...[Y/n]y debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: 资源暂时不可用...dpkg:处理 squid (--configure)时出错:  子进程 安装 post-installation 脚本 返回了错误号 1 由于已经达到 MaxReports 限制,没有写入 apport

    6.4K30

    亿级流量网站架构核心技术【笔记】(一)

    ,系统隔离是为了在系统发生故障时,能限定传播范围和影响范围,即发生故障后不会出现滚雪球效应,从而保证只有出问题的服务不可用,其他服务还是可用的 2.资源隔离通过隔离来减少资源竞争,保障服务间的相互不影响和可用性...提供了请求缓存、请求合并实现 J.基于Servlet3实现请求隔离 四、限流详解 1.限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页或告知资源没有了...:可用率低于90%,或数据库连接池用完了,或访问量突然猛增到系统能承受的最大阈值 * 严重错误:因为特殊原因数据出现错误,需要紧急人工降级 2.降级按照是否自动化可分为:自动开关降级和人工开关降级 3....D.服务降级 1.一般采取的策略有:暂时切换读(降级到缓存、降级走静态化)、暂时屏蔽(屏蔽读入口、屏蔽某个服务) 2.我们会在接入层、应用层设置开关,当分布式缓存、RPC服务/DB有问题时自动降级为不调用...time:设置重试最大超时时间,默认0表示不限制 * upstream存活超时,max_fails和fail_timeout:配置什么时候Nginx将上游服务器认定为不可用/不存活 4.Twemproxy

    1.9K20

    常见HTTPFTPWebSockets状态码大全

    201 - (创建)请求成功且服务器创建了新的资源。。 202 - (已接受)服务器已接受了请求,但尚未对其进行处理。...对重定向一般是由浏览器来控制重定向的次数,重定向会导致客户端不必要的资源消耗 300 - 多重选择,被请求的资源有一系列可供选择的回馈信息。 301 - 永久移除,被请求的资源永久移动到新位置。...502 - 错误网关,Web 服务器用作网关或代理服务器时收到了无效响应。 503 - 服务不可用,这个错误代码为 IIS 6.0 所专用。...4xx 瞬态否定的完成答复,该命令不成功,但错误暂时的。如果客户端重试命令,可能会执行成功。 421 服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。...服务端发送的关闭码,以下为分配的状态码。 状态码 名称 描述 0–999 - 保留段, 未使用。 1000 CLOSE_NORMAL 正常关闭; 无论为何目的而创建, 该链接都已成功完成任务。

    6.4K32

    高并发之服务降级与熔断

    ,导致你依赖的A服务把你卡在哪里,耗尽了资源,也导致了你另外一个B服务也不可用了。...比如,请求会失败可能是由于远程的服务崩溃,这可能需要花费数分钟来恢复;也可能是由于服务器暂时负载过重导致超时。熔断器应该能够检查错误的类型,从而根据具体的错误情况来调整策略。...比如,可能需要很多次超时异常才可以断定需要切换到断开状态,而只需要几次错误提示就可以判断服务不可用而快速切换到断开状态。...同样的,如果受熔断器保护的服务暂时不可用的话,管理员能够强制的将熔断器设置为断开状态。 并发问题:相同的熔断器有可能被大量并发请求同时访问。...资源的差异性:使用单个熔断器时,一个资源如果有分布在多个地方就需要小心。比如,一个数据可能存储在多个磁盘分区上(shard),某个分区可以正常访问,而另一个可能存在暂时性的问题。

    4.3K40

    Twitter推荐引擎架构设计分析

    0 前言 可靠性保障是复杂的系统工程,尤其可靠性异常的线上服务,在业务迭代、成本约束、人力投入等方面的约束下 ,提升可用性就不再纯技术问题。...此外,当时物料规模、存储能力等方面的设计已无法满足现在业务需求。...多数公司难100%保证某一长板,需结合公司具体情况保证基本质量,出现错误时多数依靠工具解决,少数依靠运维人员。...4.2 质量改造- 功能,推荐流程的核心环节,推荐系统需要依赖用户读数据,将用户未内容排序。推特推荐系统原是基于 bloom filter 实现。...bloom filter 完成记录 稳定性,一方面建立独立的短期(如几个小时)存储,在主要资源不可用时提供降级服务;另一方面,优化 Redis 资源访问方式,Meta 信息及最新一个 bloom

    12300

    面试官:CAP都搞不清楚,别跟我说你懂微服务!

    让我们想象一个简单的分布式系统,它由G1和G2两个节点组成的,这两个节点都存有相同的变量V且初始值都是V0,如下图 ?...对某个指定的客户端来说,它的操作保证能够返回最新的写操作结果。如下 ? ?...非故障节点将在合理的时间内返回合理的响应,但不能是错误响应或超时。 ? ? 第一阶段,client向节点G1发出写操作请求,数据是v1。...由于网络分区,导致G1无法把数据同步给G2节点,如果此时满足可用性A,client向节点G2发出操作请求,如下图 ? 由于满足可用性A则G2返回给client的数据是v0,则不满足一致性C。...如果需要满足一致性C,则失联的G2暂时不可用,直到网络恢复并同步数据完成方可。 ?

    36310

    python filelock 文件锁_详解进程文件锁FileLock

    * 也可以看出,能够利用文件锁的这种性质,在一些场景下,虽然我们不需要操作某个文件, * 但也可以通过 FileLock 来进行并发控制,保证进程的顺序执行,避免数据错误。...*如何避免死锁 在读写关键数据时加锁,操作完成后解锁; 一次性申请所有需要的资源,并且在申请不成功的情况下放弃申请到的资源; * @author shijin * */ public class FileLockTest...raf.seek(raf.length());//raf在文件末尾追加内容的处理 channel = raf.getChannel(); // 获得锁方法一lock,阻塞的方法,当文件锁不可用时...,当前进程会被挂起 // lock = channel.lock(0L, Long.MAX_VALUE, true);//共享锁,有写操作会报异常 lock = channel.lock...at sun.nio.ch.FileDispatcher.write0(Native Method) at sun.nio.ch.FileDispatcher.write(Unknown Source)

    1.5K20

    nodeEE双写与分布式事务要点一二

    (如网络原因、redis服务不可用等)。...如果在“写频繁,而频率远小于写的情况下,频繁的刷新缓存是否有必要?”...如上图,A先删除缓存,同时开始更新db;与此同时B查询缓存为空,进而查询db,由于db的性能高于写且数据库隔离级别默认为提交,因此B查询db的数据往往为旧数据,此后B查询完毕更新缓存,导致缓存在超时时间或者下次修改...缓存操作问题 在上一节中提到的所有缓存更新策略都是在暂时不考虑缓存操作失败的情况(如网络原因、redis服务不可用等)前提下讨论的,如果缓存操作失败,则必须通过业务代码重试、消息队列或者设置缓存超时解决...其中try接口预留相关资源,并确保数据一致性,confirm接口和cancel接口保证幂等性,执行或回滚try阶段预留的资源

    80320
    领券