稳定性思考-强弱依赖

淘宝系统依赖关系比较复杂。A系统依赖B系统资源,当B系统发生故障的时候,A系统势必会被拖累,导致A系统也发生故障

                                 图:[ A]--依赖-->[B]

这里的依赖要区分两种情况

1、A强依赖于B

    任何强依赖都要尽可能的转化成弱依赖,因为强依赖本身意味着一荣俱荣,一损俱损。老婆管账,但是老公又没有私房钱,对老公来说强依赖于老婆,也许是很幸福的事情。在系统角度来说这并不是好事情,比如支付系统强依赖银行的支付,一旦银行支付出现问题,那么只能干等着。所以需要尽量的扩展银行的支付通道,让单个节点影响到最小。

    对于强依赖B这个场景,从稳定性来说我们还是可以做一些事情:当B发生故障,虽然A系统不能正常执行业务,但是A不能挂掉,一旦B系统恢复,A系统也要做到立即恢复。同时A有责任对B要进行流量保护,而不是对B进行摧残。

    我和小赌对淘宝某一前台系统做过一次分流压测(和ab,httpload等压测不同,是直接将正常的用户请求不断引入的压测方式,本质区别是分流压测方式用户数会持续不断的增加,ab等则是固定用户数):A系统单机的容量是4,当前的进入的流量是1。进行分流压测,不断增加单机的流量,直到该单机的流量到4,此时一切正常,流量增加到5,此时响应时间突增,减少流量到4,响应时间还是很长,持续一段时间不能自己恢复,再减少到3,系统还是没有恢复,直到减少到2之后,系统恢复。原因是系统被压垮之后,其容量发生了变化,原来容量是4,压垮之后容量变成了2.5。

    此时系统会有比较频繁的fullgc产生,做个简单的分析,因为用户不断增加,而容量有不够只能堆积,导致线程数量大增,直到max-limit值,并且由于强资源,导致每个线程完成工作的时间变长,minagc发生的时候大量的eden区对象不能被回收,拷贝到s0 or s1又放不下或者超过交换次数后被拷贝到了old区。

    所以摧残一个系统不好,同时也说明如果系统没有做特殊的保护,当分流的量大于了单机的容量,持续一段时间后,系统将不能很好的恢复,即便我们把分流进入的量减少到系统容量以下也不能快速恢复。

2、A弱依赖于B

此时B如果发生了故障,那么大家都期望A继续能提供正常的服务

场景1:A调用B,A的主流程不需要等待B的返回结果

  1. 浏览器弱依赖:A从浏览器上发起异步请求,如果B挂了,那么只会出现页面某一个区域不显示B的内容,如果对于用户交互可以接受,那么系统层面无任何问题,商品详情页面的评论列表和购买记录就是这个情况
  2. 异步线程:A调用B的时候只发送消息,然后调用动作由另外的线程来执行,并且不需要即时反馈结果,一般作为消息通知,轨迹记录等场景使用。不过为了防止堆积,也需要控制队列的大小

场景2:A调用B,A的主流程需要等待B的返回结果

  1. 设置超时时间:如果B响应超时,则抛出超时异常,绝对大部分情况下OK;不过两种影响要考虑:1、超时时间设置过长或者过短导致的副作用 2、大量异常抛出
  2. 设置最大并发请求数阀值,一旦超过阀值就跳过访问B
  3. 两种方式相结合使用最佳
时间: 2024-09-27 20:50:43

稳定性思考-强弱依赖的相关文章

稳定性思考-强弱依赖2

弱依赖"并发请求数阀值"这个值设置多少合适?     "并发请求数阀值"在大部分情况下可以理解为同时工作的线程数阀值,这个值不是越大越好,也不是越小越好,而是在最高QPS输出的情况下这个值越小越好.这个也是系统性能优化的一个方向,高QPS,少线程.     线程它是驱动业务逻辑执行的载体,在执行逻辑的生命周期中,它会申请各种各样的资源,会占有CPU,会申请内存对象并持有,会申请锁并持有,会申请IO资源并持有,然后再完成一些工作之后,在恰当的时间释放这些资源.如果这个

中间件技术及双十一实践·稳定性平台篇

稳定性平台--系统稳定运行的保障者 综述 大多数互联网公司都会根据业务对自身系统做一些拆分,大变小,1变n,系统的复杂度也n倍上升.当面对几十甚至几百个应用的时候,再熟悉系统的架构师也显得无能为力.稳定性平台从2011年就开始了依赖治理方面的探索,目前实现了应用级别和接口级别的依赖自动化治理.在2013的双11稳定性准备中,为共享交易链路的依赖验证和天猫破坏性测试都提供了支持,大幅度减小了依赖治理的成本和时间.另一方面,线上容量规划的一面是稳定性,另一面是成本.在稳定性和成本上找到一个最佳的交汇

2017QCon分享:从淘宝到云端的高可用架构演进

大家好,我今天分享的题目是<高可用实践:从淘宝到上云的差异>,取这个标题是因为会涉及到两个方面内容,一方面以淘宝为例子,传统的IDC的时候,我们稳定性是怎么做的,另外在云计算背景下,有很多创业公司是基于阿里云这样的公有云基础设施做研发,在公有云的环境下怎么做好我们系统的高可用. 长期做稳定性的人会有一些职业病,记得去年冬天有个周末,我要寄快递,穿着睡衣在门口填快递单,那时候我家里养了一只猫,因为怕猫跑出去,就把门关上了.寄完快递口袋一掏发现自己没带钥匙,冷静了3秒钟,打车到公司刚巧碰到同事,看

纯干货 | 从淘宝到云端的高可用架构演进

近日在Qcon开发者大会北京站上,来自阿里巴巴商家事业部技术专家沐剑在专场分享了题为<高可用实践:从淘宝到上云的差异>的演讲,主要介绍了其近几年在阿里电商平台及阿里云上的高可用设计的经验,分为两个部分:第一部分主要包括传统的淘宝店铺稳定性体系的建设及相关的基础链路设计.缓存和容灾方案的设计及部署:第二部分主要包括目前公有云高可用设计的主要思路.经典故障及应对措施等. 演讲全文: 沐剑 大家好,我今天分享的题目是<高可用实践:从淘宝到上云的差异>,取这个标题是因为会涉及到两个方面内容

阿里10年分布式技术沉淀:阿里高可用体系核心缔造者、全链路压测创始人告诉你!

本次活动看点十足,大咖齐聚.纯正干货,下面给大家做下详解介绍,相信看后定会让你动心! 议题详情 双11核武器全链路压测--张军 / 阿里巴巴中间件高级技术专家 阿里巴巴双11备战期间,保障系统稳定性最大的难题在于容量规划,而容量规划最大的难题在于准确评估从用户登录到完成购买的整个链条中,核心页面和交易支付的实际承载能力.全链路压测的诞生改变了这一现状,通过对双11进行模拟,支持线上不影响正常用户访问的集群读写压测,获得最真实的线上承载能力数据.全链路压测开启了大促稳定性保障的新纪元,被誉为备战核

八年来我们到底经历了什么?——中间件专家带你“重走”双11高可用架构演进之路

双11的技术挑战 双11技术挑战的本质使用用有限的成本去是实现最大化的用户体验和集群整体吞吐能力,用最合理的代价解决零点峰值,支撑好业务的狂欢.阿里做双11已经有八年之久了,八年来双11的交易额增长200倍,交易峰值增长400多倍,系统复杂度和大促支撑难度以指数级攀升:并且经过多年的发展,双11技术实现链条中的变量不断增加,如峰值的增量和系统架构的变化.交易峰值的组成.拆单比.每个业务入口的访问量等,这些变量也给系统带来了不确定性.回顾这八年的双11零点之战,它推动了阿里的技术进步.推动了架构优

BaaS后端即服务 - 通往中台架构之路

该文章来自阿里巴巴技术协会(ATA)精选集 BaaS代表第二代云服务,相对于AWS.阿里云等公有云(IaaS,PaaS)是第一代云服务,通过广泛部署云数据中心解决了开发和运维系统不需要管理服务器的问题,BaaS则在第一代公有云数据中心基础之上,对云计算资源进一步封装.简化与优化,提供开发.运维和服务的一站式云服务. 这就是所谓BaaS(后端即服务)模式的兴起,BaaS将公有云数据中心资源根据前端应用场景打包,通过简化的调用接口提供给开发者使用.通过减负,开发者得以集中精力于用户的研究.APP软件

超全总结 | 阿里如何应对电商故障?神秘演练细节曝光

近日,在 QCon北京2017大会上,来自阿里巴巴中间件团队的技术专家周洋(花名中亭)发表了题为<阿里电商故障治理和故障演练实践>专题演讲.在会后官方组织的评选中,本次演讲的内容得到了一致好评,中亭获选为本次大会的明星讲师.此次演讲整体上分享了从 2011 年至今,阿里巴巴电商平台遇到的诸多有代表性的故障,以及在此过程中积累的非常多的高可用保障经验和解决方案. 演讲内容包括两大部分:第一部分会从分布式系统经典依赖故障出发,剖析故障成因,介绍治理方案和技术演进:第二部分从宏观视角探讨构建一套&q

一杯茶一本书 读懂&quot;双11&quot;8年技术保卫战

文章讲的是一杯茶一本书 读懂"双11"8年技术保卫战,喝茶醒神,读书清心.在古代,对于文人骚客来说,饮茶与读书是一样的风雅.书室之内,燃上一柱香,泡上一壶茶,淡淡的清香营造出一种幽静的氛围,意境很典雅,用现在时髦点的话说,就是"有品位". 4月12日,阿里巴巴技术团队在京就办了一场有品位的分享会,在一个佛堂环境,用一杯茶,一个本书,为我们揭秘"双11"这一世界级经济现象背后的技术支撑. 茶是禅茶,书是阿里巴巴集团唯一官方出品的<尽在双11-