大规模服务设计部署经验谈(8) | 优雅降级和许可控制

8               优雅降级和许可控制

当发生DoS攻击或者由于用户使用模式变化而带来的负载激增时,服务器需要能实现优雅降级和管理控制。例如,911恐怖袭击发生后,大多数的新闻服务都发生瘫痪,无法向所有用户群体提供任何可用的服务。与此相比,如果能够将一部分文章可靠地提供给用户,总比什么都不能提供好。最佳实践有两种:“大红开关(big red switch)”和许可控制,如果能够针对服务进行量身定制,作用将会十分强大。

8.1               支持“大红开关”。

支持“大红开关”。这个概念最初来源于Windows Live Search,它拥有很大的权力。我们对这个概念进行了一定程度的推广,更事务性的服务与搜索差别迥异。不过这个想法非常有效,而且可以应用于任何地方。一般来说,“大红开关”是当服务已经或者即将无法满足SLA时,采用的一个经过精心设计和测试的措施。将优雅降级比喻成“大红开关”稍微有些不恰当,但核心意思是指在紧急时刻卸掉非关键的负载。“大红开关”的主要思想是保证关键任务的运行,同时卸掉或者延迟非关键的负载。从设计角度来说,这种情况应该不会发生,但在发生紧急情况时不失为一个好的救火办法。在紧急情况已经发生之后再来考虑这些问题是十分危险的。如果有哪个负载可以被加入队列并延后处理,或者在关掉高级查询后仍能继续运行事务系统,那么这都是作为“大红开关”的理想对象。关键在于,判断在整个系统出现问题时有哪些任务是必不可少的,然后实现并测试在问题出现时关闭非关键服务的选项。切记“大红开关”必须是可逆的,也就是说当紧急情况解除后,必须保证开关能正确地让所有的批处理工作和先前被停止的非关键任务恢复原状,这是应当经过测试的。

8.2               控制许可。

控制许可。许可控制是另外一个重要的概念。如果都无法对当前的任务进行处理,向系统引入更多的工作负载只会将不好的体验扩散到更大的用户群中。这要如何实现和系统有关,有些系统实现很容易,有些则比较困难。拿我们上次的邮件处理服务作为例子,如果系统超过负荷,开始排队列的话,我们最好是拒绝接受后续邮件进入系统,然后让这些邮件在来源处列队等候。这样做很有意义并实际上减少了整体服务延迟,主要原因在于一旦队列在我方形成,系统会处理得更慢。如果我们拒绝形成队列,吞吐量也会得以提升。另外一个诀窍是:重要客户优先于非重要用户,注册用户优先于访客(但如果是以吸引新访客作为商业模式的,另当别论)。

8.3               对许可进行计量。

对许可进行计量。还有一个无比重要的概念,就是前面所说的许可控制观点的修改方案。如果系统故障并当机,必须能够实现逐步恢复用户使用,并确保系统运行正常。比如先允许1 个用户进入,然后允许每秒进入10 个用户,随后再逐渐放宽限制。对于重新上线或者从严重错误中恢复过来的系统,应该确保每项服务都有一个细粒度的开关,来实现用户的缓慢增加,这是至关紧要的。大多数系统的初始版本中很少有包括这项功能。

对于有客户端的系统,一定会存在一种方式,用来通知客户端服务器当机,并且告知可能的恢复时间。这样一方面使客户端尽可能继续基于本地数据来运行,另一方面也可以避免客户端打扰服务器,以便后者更快恢复。这样同时也给了服务拥有者一个直接和用户沟通的机会(见下节),用来调整用户的期望值。另外一个关于客户端的技巧是刻意设置扰动(jitter),和自动备份来防止客户端在同一时刻“扑向”脆弱的服务器。客户和媒体沟通计划当系统出错时需要就发生的延误和其它相关事项与客户进行沟通。沟通应当能以可选的方式通过多个渠道完成:RSS、Web,还有即时消息等等。另外,对于拥有客户端的系统,通过客户端来进行和用户的沟通也是很有效的。可以告诉客户端在一定时间内或者特定时间点之前避免访问服务器,或者如果支持的话,可以告诉客户端在离线和缓存的方式运行。客户端可以把系统状态告诉用户,并说明可以预计完整的功能在何时恢复。即使在没有客户端的情况下,比如用户通过网页来和系统交互,仍然可以告知用户系统当前的状态。当用户了解发生的状况并对系统的恢复时间有一个合理的期望值,他们的满意度会大大提高。系统管理员常常会不自觉地倾向于隐藏系统发生的问题,但是跟据我们的经验,我们确信,将系统的状态告知用户会极大地提高其满意度。即便是非付费系统,如果人们知道系统发生了状况并被告知其何时会恢复,他们放弃使用这项服务的可能性也会减小。某些事件会引发媒体报导。如果这样的场景有预先备好的应对方案,那么会更加真实地反应服务的情况。大量数据丢失或损坏、安全遭到破坏、违反隐私以及服务器长时间当机,这样的情况都可能引起媒体的关注。事先准备好一份沟通计划。清楚电话通知谁,并能主导谈话。沟通方案的框架应当事先搭好。应针对每一种事故制定一份沟通方案,内容包括该给谁电话通知、电话时间,还有如何掌控沟通过程。客户自预置及自助服务客户自己进行预置可以大幅度降低成本,同时还能提升客户满意度。如果客户可以访问网站,输入所需数据,然后就可以开始使用服务,那么他们要比不得不在电话处理队列中浪费时间开心得多。我们一直认为,主流移动运营商因为没为那些不想致电客户支持组的用户提供自助服务,错过了一次拯救并提升客户满意度的好机会。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值