前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >后台必备意识——柔性可用

后台必备意识——柔性可用

原创
作者头像
windealli
修改2018-09-17 11:02:17
4.9K0
修改2018-09-17 11:02:17
举报
文章被收录于专栏:windealliwindealli

什么是柔性可用

柔性可用是指:当条件有限而不能向用户提供完美服务时,可以以柔性的方式提供有损的服务。

柔性可用的目标是:最大程度的保证关键服务的可用性。

柔性可用
柔性可用

通常,有损服务所需要的成本(系统资源消耗、网络带宽等)会低于完美服务,但是相应的体验也较差,系统设计时需要平衡二者的关系,尽力提供等级更高的服务。

另一方面,要注意有损服务应该是柔性的,尽可能贴近用户需求的。比如,用户想要的是一台高性能智能手机,我们不能说提供一台复印机给她。

为什么要有柔性可用

  • 系统不是绝对可靠的: 机器故障、网络波动(故障)在系统运行中是经常会遇到的。
  • 系统的成本是有限制的: 为了系统能更加稳定地运行,系统设计时可能会进行容灾(资源冗余,包括机器、网络、人员等)。但是这种冗余不是无限度的,毕竟成本是有限的。而有些时候,系统可能会有一些超过容灾系统的负载能力的突然高流量。

下面是两个案例:

  1. 2008年陈老师的作品横空出世,网友在qq传阅相关作品,导致qq服务流量急剧升高,引发流量海啸。许多qq的服务均受到影响,不能正常提供服务。
  2. 微信红包产品刚问世的一段时间,每逢高峰期,就经常崩溃。 现在,一款互联网产品提供的服务越来越多,服务的用户量也越来越庞大,在资源有限的情况下,只做容灾、过载保护等是远远不够的。

容灾与柔性可用的目标差异:

  • 容灾: 能够提供完整的服务,但是对负载的提升是有限的,比如从1000万级别的流量负载能力提升到2000万。
  • 柔性: 柔性可用提供有损的服务,其目标不是提升系统的负载能力,而是将负载(请求量下降)。柔性可用把千万级别的流量降低到百万、甚至十万级别。

一个系统可能会提供几十、上百个子功能,其中可能只有少数几个是核心功能,而柔性可用就是尽最大能力保证这少数几个核心功能正常工作。

下面是计算机系统中较为合适的柔性可用的例子:

  1. 门户网站系统(页面有视频、图片、文字),带宽有限的话,可以先不提供视频,只返回图片和文字部分。如果资源还是不够,那就先提供纯文字的页面。
  2. IM聊天工具,拉取好友列表时,如果没办法提供完整信息的时候,可以先不显示备注(直接用昵称)、不显示当前动态等等。
  3. 视频播放器依据网络带宽,蓝光、超清、表情,不同等级的视频。

柔性可用的实现步骤

要实现柔性可用的系统,在产品设计和技术实现两个阶段都应该有柔性的意识。

实现柔性可用的系统,通常包含以下步骤:

  1. 服务分级: 在产品设计阶段,需要对服务的应用场景进行还原。要清楚地认识到哪些服务是系统的核心服务,哪些服务是支撑服务。(这不单单是从重要性进行分级,还要考虑,有些服务是需要实时完成还是可以离线完成后延迟同步)
  2. 自身能力评估: 在产品设计阶段,要了解自己拥有的资源,对自己的负载能力有较好的评估。简单的说,就是要清楚在各种条件下,自己能提供什么样的服务。
  3. 系统划分(分级): 在技术实现初期(系统设计),需要遵循大系统小做的原则,对系统进行拆分,避免各个服务互相影响,降低子模块耦合性。
  4. 自我监控: 系统要有自我监控能力,了解当前负载,评估是否需要提供降级服务。
  5. 降级服务: 满足降级条件时,分级提供柔性服务。
  6. 系统恢复: 当系统重新满足可以提供完美服务的条件时,升级服务等级(有能力时,还应该对之前放弃的局部服务进行恢复)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是柔性可用
  • 为什么要有柔性可用
  • 容灾与柔性可用的目标差异:
  • 柔性可用的实现步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档