热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

由某CDN故障引发的思考2:业务方如何应对那些坑爹的第三方故障

大部分公司的业务规模应该还没有达到所有服务都能够自给自足的程度,而且就算是BAT这些巨头们,很多服务也完全没有必要所有东西都自己做,一是效率问题,二是成本问题。喜欢喝牛奶未必就要自己养


  大部分公司的业务规模应该还没有达到所有服务都能够自给自足的程度,而且就算是BAT这些巨头们,很多服务也完全没有必要所有东西都自己做,一是效率问题,二是成本问题。喜欢喝牛奶未必就要自己养头奶牛,所以大部分公司的业务或多或少都会依赖一些第三方公司的服务,尤其是需要和第三方合作的业务,这种依赖就比较普遍,与业务的关联度也比较大了。


  CDN服务算是第三方服务的一种,还有很多其他服务,比如短信发送服务,声讯服务,关键词过滤服务,第三方合作数据接口,酒店ota服务,运营数据统计服务,DNS解析服务 ,安全防范平台服务等。如果要给这些第三方服务分个类的话可以将其分为三大类:基础类,比如CDN服务,DNS解析,安全防范服务,这一类第三方服务属于基础服务,与具体的业务没有关系,也不直接与用户产生关联,但是一旦基础服务出现异常往往会导致整个业务完全不可用;业务类,比如酒店ota服务,短信发送服务,,声讯服务,第三方数据合作接口(比如点评信息的引用,第三方登录),业务类的服务会与业务紧密联系在一起,必要的时候还是会业务密不可分的一部分,这一类服务出现异常,只会导致部分业务功能异常或者逻辑异常,将此类异常做好降级工作,业务的其余功能理论上是不受影响,继续能够为用户提供服务的;第三类服务,运营辅助类服务,其实也可以归为基础类,但是第三类服务的重要性对于大部分网站远远没有其他基础类服务的重要性高,一旦出现异常顶多是运营数据的异常,对于用户而言,这部分的异常是无感知的。很多公司在能力所及的范围下都会将这一部分作为自身的运营工具来开发,对于一些业务规模还比较小的网站而言,这部分还是需要依赖一些专业的第三方数据运营平台的,比如GA,站长工具,还有一些点击统计的工具。


  在实际的工作场景中,想必大家多数人和我一样,多多少少都会遇到这三类服务中某些或者全部服务出现过异常从而影响到自身业务的可用性。

  对此,我们也想过很多方法来规避这些第三方服务发生故障时对我们的业务造成不必要的影响,很多时候,对于基础或者非常重要的服务,要做好备份,容错,降级等准备工作,而且要定期对这些异常备用方案进行演练,切实验证这些准备工作的可用性以及切换效率,避免出现关键时刻准备工作完全不起作用的情况。


   针对基础类的第三方服务,我们应该从系统架构着手去支持服务的冗余与高可用,尽量将基础类的服务冗余散列在多个服务商处,就算是其中部分的服务商出现问题,我们也可以及时屏蔽掉这些有问题的服务,从而有效的保证业务的高可用。同时,最好相应基础服务的监控也是非常有必要的,因为基础服务一旦出问题,对整个业务的影响那是非常严重的,基础服务与业务的关系更像冰面上行走的人,一旦冰面破了,人就会掉到冰窟里面去了。比如DNS解析异常,那就会导致用户完全无法访问我们的站点,当然也就无法完成其他业务的处理了;CDN服务出现异常,那放在CDN服务上的静态文件,影音文件无法正常访问的话,就会导致用户看不到正常的内容或者无法完成相关的交互操作,比如登录,比如购买,整个业务站点基本上就处于全部瘫痪状态了。基础服务很多后尾效应比较严重,比如DNS服务出现异常后,我们自身是切换到正常的服务方了,但是有可能局部地区的DNS会很长时间出现异常;比如CDN服务异常,很多时候这些异常会被用户或者一些小的运营商的内部代理服务器缓存掉。及时发现,处理基础服务的异常,就是给我们的业务争取可用的时间。


   针对业务类的第三方服务,我们应该从业务设计出发,去掉强依赖,做好服务的降级和容错,以便当部分第三方服务异常的时候可以保证业务的其他部分是可用的。业务类第三方服务往往存在着类似“握手”的关系,所以很少能够做备份冗余的工作,而且这种备份冗余也最好是第三方服务来做的,对于业务方而言,出现握手失败的话就只能自己处理相关异常并做适当的降级,做到异常部分功能隐藏,同时其他部分的功能不受异常影响能够继续为用户提供服务。



   针对运营辅助类的第三方服务,我们首要要做的是,不要让这类异常影响到任何业务功能,同时不要让用户感知到。对于运营工具服务的异常,完全可以临时将此类服务关闭,相关数据可以用过往的数据进行填充,毕竟运营数据一时的异常不会对长远的运营工作造成任何大的影响,但是如果影响到业务的可用性就得不偿失了。



   尽量找靠谱,质量有保证的第三方服务提供商,成本不是这么省的,有的时候为了节省成本而选择了一家质量无保证的服务商最后损失的也许比我们节省的要多得多。

   第三方服务商的责任心与沟通渠道也很重要,需要我们关注的,除了服务商服务质量保证外,我们也需要关注服务商的责任心,出问题后是否会主动,及时通知以及迅速降低第三方服务异常对客户造成的影响。另外,沟通渠道是否顺畅,客服与技术人员是否可以及时有效处理用户的问题也是非常重要的。服务商的改进是不是灵活可变的,对于客户提出的需求,能否尽可能地去实现,很多第三方服务商要么需要花钱定制,要么直接告诉你我们系统就是这个样子的,没的改,虽然他也知道自己系统存在着诸多的不合理之处。


    不要把鸡蛋放在一个篮子里,对于大多数的网站,如果成本压力不是很大的话,非常建议不要把所有的服务放在一家服务商身上,必要的时候要做好冗余备份,而且尽可能的在平时就利用其这些备份措施,以保证其可用性。


本文出自 “运维者说:从菜鸟到老鸟” 博客,请务必保留此出处http://liuqunying.blog.51cto.com/3984207/1422341


推荐阅读
  • 电信网为不能访问联通服务器的网站_老板说网站慢,我们总结了三大阶段提升性能...
    作者:李平来源:https:www.cnblogs.comleefreemanp3998757.html前言在前一篇随笔《大型网站系统架构的演化》中&# ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • 提供:ZStack云计算原创2016-12-26张鑫讲师介绍张鑫ZStack总架构师、联合创始人《系统虚拟化》主要作者,曾任职Intel开源软件技术中心 ... [详细]
  • CentOS 7配置SSH远程访问及控制
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • OS的版本是:windows2003R2EnterpriseEditionServerPack2IIS6.0安装后,Web服务器扩展中的ASP.NETv1.1.4322也都启用, ... [详细]
  • c# java socketn 字节流_C#Socket编程详解(一)TCP与UDP简介
    一、TCP与UDP(转载)1、TCP1.1定义TCP(TransmissionControlProtocol)传输控制协议。是一种可靠的、面向连接的协议(eg:打电话)、传输效率低 ... [详细]
author-avatar
Dark-胡俊賢
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有