交易流程容灾及测试策略

发表于:2012-11-23 10:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:yaohong    来源:TaoBao QA Team

  什么是容灾

  首先来梳理下什么是系统容灾。 互联网上容灾的概念解释很多,我们来看看百度百科里的解释:

  从其对系统的保护程度来分,可以将容灾系统分为:数据容灾和应用容灾 。

  数据容灾就是指建立一个异地的数据系统,该系统是本地关键应用数据的一个实时复制。

  应用容灾是在数据容灾的基础上,在异地建立一套完整的与本地生产系统相当的备份应用系统(可以是互为备份),在灾难情况下,远程系统迅速接管业务运行。数据容灾是抗御灾难的保障,而应用容灾则是容灾系统建设的目标。

  其实,上面指的容灾已经由我们的数据仓储和运维团队一直在很好的进行着。而且该容灾工作的目的主要是为了预防一些不可预料的意外,比如火灾、地震、紧急硬件故障等等。

  为了保障系统的稳定性和可用性,作为业务团队的我们, 我们的容灾主要做什么呢? 谷歌了下一直没有找到和我们所做的事情相似的概念,索性自己取了个名字叫业务容灾。 这里只讨论基于互联网的web业务系统,业务容灾主要就是指使用一定的技术手段,在极端访问量的情况下,牺牲一小部分非主要业务功能或者一小部分用户体验, 保障整体系统的稳定以及提供的主要功能,以保障绝大部分的用户需求和体验。我们的容灾工作,预防发生的场景是可以预见的,比如今年的双11、双12大促。

  现在我们主要分析总结下我们的业务容灾主要包括哪些内容。

  业务容灾手段

  目前在集市交易系统中使用的业务容灾手段主要有以下几种,下面一一分析。需要说明的是,开关本身不是一种容灾方式,它只是容灾手段中便于人为操作而使用的某种方式,大部分容灾的手段都可以使用开关来达到目的。

  业务降级

  1、提前降级:

  在极端访问的情况下,为了减少对系统的压力,对于一些用户量很小或者对用户体验影响极小的业务可以进行提前关闭。可以使用到时间点自动关闭的方式实现,也可以使用开关提前人为的关闭。这里如果选择使用开关进行人为关闭,需要考虑到不同应用系统之间对同一个业务的协调和时间差,尽可能做到平稳的过渡,让用户完全没有感知。

  2、应急降级:

  应急降级主要是针对重要性稍低的业务提前完成预备降级的工作,并提供开关以备不时之需。在系统稳定的情况下正常提供功能,紧急情况下可以人为临时关闭,以保障系统最高优先级的核心功能的可用性和系统整体的稳定性。

  数据备份

  为了解决数据读取的问题,我们可以对数据进行提前备份,并在当老数据读取出现异常的紧急情况下,临时切换到新的存储系统进行读取。需要完成的研发功能有:新存储的数据备份功能;紧急切换开关;历史数据的复制。

  自动流控/限流

  自动流控主要是指,当系统中对某些二方应用系统访问的线程数超过一定阀值的时候,进行自动限流,防止因为二方应用响应超时太多,拖垮我们的应用。 实现上可以直接抛异常,用户会感觉某功能不可用;也可以直接忽略,让流程继续往下走,用户不会有任何感知。

  当然,限流后是应该抛异常还是直接忽略,这个不能直接凭用户体验来,不是说用户感知不到就一定是最好的。这里一定要根据具体功能点的设计来决定。比如如果查询库存的线程被限流了,那么就一定要抛异常让下单失败,否则会引起宝贝超卖,这个对于卖家是绝对不能接受的。

  对于不同应用请求的流控的阀值的设置也需要再三斟酌,设置高了可能会导致极端情况下流控还没生效,我们的系统已经被拖跨了;设置低了可能会资源浪费,导致系统还未达到自己的最大承受临界点之前就已经牺牲了部分功能和用户体验。所以流控阀值的设置,需要平时在生产系统多观察,不断调整阀值以求达到一个最合适的值。并提供阀值调整开关以备不时之需。

  备注:系统中不是对所有的二方应用的访问都有自动流控,这个是需要单独添加的。对于一些重要性非常高的应用一般不做自动流控。

41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号