编者按:本文来自36氪特约作者叶新江(@猪立叶-Anson )。叶新江曾任MSN中国总架构师,现任“个信互动”高级技术副总裁。个信互动公司推出专注于应用推送技术的服务“个推”,为包括新浪微博、百度、网龙等在内的公司提供推送服务。这里是我们之前对个推的报道。

昨天微信发生部分服务故障,媒体微博上面就此事表现相当热闹,这也从另一方面印证了微信的江湖地位以及移动互联网改变生活的真实写照。

从用户角度来说,一直好好的一个东西突然坏了,很大情况下可能不会首先想到是这东西本身坏了,而是先从别的地方找原因,这也是人的一种惯性思维。 而一旦发现是用的这东西本身坏了,愤怒和无奈的程度会更加加倍。但是有一点大家想过没有,任何一个东西的可用性都是需要有一定代价才能保证的。 越能用得长的东西,要么就是质量一流,要么就是需要不断检修和维护,这都需要不断付出努力才能做到。

服务可用性落实到具体的可以衡量的指标上来说,通常用几个9 来表示。通常大家所说的3个9 (99.9%), 是说一个业务系统造成大部分用户无法使用的时间一年中不超过 8小时46分钟,而全球互联网中的老大Google 对于服务可用性达到了5个9(99.999%), 也就是一年内故障时间不超过 5分钟 15 秒,这个故障时间对用户基本无感知。对于用户数量和交易数量可预测或者凭经验就可以了解的,而又关系到国计民生的行业,譬如银行、电信企业来说,一般都要求达到5个9。 然而对于互联网而言,5 个9 的服务可用性需要付出的代价和挑战是相当巨大的。

首先,在基础设施方面,针对服务质量,IDC 也分成很多等级;A 级一般承诺服务可用性达到或者接近4 个9, 这就要求至少以下几个方面: 必须多路电源接入(如果只有一路电源,万一没电了就瞎了),必须有支持至少 5 小时的蓄电设备、必须有独立的发电设备、所有设备和线路冗余备份(是所有设备),整个系统无单点故障。 以上这些还是比较粗的几条。

有了这样的基础设施保证,如果应用系统本身支持不到相应的几个9, 那么整个业务系统就服从木桶原则,哪个服务可用性低就是哪个。 而动不动就上亿用户一起访问的互联网应用来说,要做到 4 个或者5个9, 至少需要在几个方面来考虑:架构上的合理性和灵活性、整个系统成本的控制、运维的方便和高效。

先说说成本,对于类似传统的金融系统等而言,一般采用的是大块头的机器,因为其服务规模相对可控,譬如同时进行存钱、取钱转账的用户也就说那么万级别。 但是对于互联网系统而言,如果也采用大块头的机器,那么整个系统的花费将是天文数字。所以除了特别关键的数据会采用大块头机器来处理,一般都买的是普通的商业计算机(小几万一个), 随着用户规模的增加不断买新的机器进行扩充,这本身也符合发展规律。 但是一般的商用机器故障率还是相当高的。你如果买过家用电脑,估计也经常碰到机器开不起来的问题吧。 那么怎么样在一堆机器里面的几个机器坏了的情况下,系统还能正常工作呢,这就要求在应用设计的时候能采用集群技术,自动进行故障转移和容错。 这就要求在架构上要能考虑到这些因素。

然后我们再来看,你如果所有的机器放在一个地方,即使能够在一个机房放得下, 在地大物博的中国,从北京来访问在杭州的服务器,如果是跨运营商的网络之间来访问,估计比坐飞机快不了多少。 这样的速度显然不符合好的体验这条金律。 而且把所有机器放在一个地方,万一这个地方出了什么问题,岂不是全完蛋了! 所以不能把鸡蛋放在一个篮子里面,就需要根据用户的分布情况在不同的城市、同一城市的不同区域来建设业务系统。但是在逻辑上, 不同城市的系统应该又是同一个系统的,否则我在杭州加了一个在北京的朋友,如果过两天看不到了,谁还用啊。

这里又有一些问题需要解决,譬如就在某一天某个城市的开挖下水道,把光纤给挖断了, 导致访问到这个城市的系统无法使用了,那怎么办呢? 把这些用户分流到别的城市的系统上去不就行了? 是的,理论上是可以的。 但是就相当于如果一个城市被台风影响,需要把全部居民转移到另外一个城市或者几个城市里一样,转移到哪个城市、接收的城市是否能容纳这些新增加的居民,这些居民的银行存款等数据是否也能保证到了新城市后还能保持可用?在实在万不得已的情况下,有一部分居民可能无法转移。大规模互联网系统在故障时的处理思路也大致如此。 首先需要规划哪个城市给哪些用户服务,容量是多少,如果要接收别的城市的居民,那么还需要留多少容量,接收哪个城市来的用户,事先要把这些用户的信息能同步过来保存着等等。 即便如此在规划无法做到十分完善的情况下,部分用户可以继续服务,部分用户只能降级服务甚至拒绝服务,这也是为了保障整个系统能尽可能提供有限服务。

还有一个就是运维的高效性, 在故障出现后或者出现之前就能及时启动合理的应急措施,进行用户的分流,甚至对部分用户进行限流等。

如果在有些地方考虑不周,譬如我之前所在一家知名 IM 企业,由于地震导致海底光缆故障,很大部分的用户无法通过原路径访问系统,系统本身无法在中国提供应用层面的路由选择;只能依赖运营商来调整路由,这就在时间上大大超出可用性承诺的时间,无论最终是谁的原因, 最终导致用户大量流失。 也碰到过由于没有对部分用户降级服务或者延迟服务,而导致全部用户不断进行服务恢复尝试,形成浪涌和雪崩,导致整个服务最终拒绝服务(Deny of Service).

这些对于目前我们自己拥有上千万并发的个推系统而言,也都是一直在完善的方面。

对于腾讯而言,这十几年来对于几亿 QQ 用户的服务,积累了大量的有价值的经验. 微信出现这样的情况,应该说还是不多见的, 可能也说明在腾讯内部的资源分配还存在一定不均衡。 不过相信他们可以很快进行调整和完善,当然在这背后也意味着他们巨大的努力和付出。

原创文章,作者:guest

转: 从微信的故障谈谈服务可用性相关推荐

  1. 微信如何实施微服务?

    作者:许家涛,2005 年加入腾讯,见证 QQ 邮箱从百万到数亿用户的整个敏捷开发过程以及架构变迁.2011 年起负责微信后台基础架构,包括分布式存储平台和后台服务框架等,覆盖微信账号 / 消息 / ...

  2. k8s停止服务_Kubernetes 服务部署最佳实践(二) 如何提高服务可用性

    引言 上一篇 文章我们围绕如何合理利用资源的主题做了一些最佳实践的分享,这一次我们就如何提高服务可用性的主题来展开探讨. 怎样提高我们部署服务的可用性呢?K8S 设计本身就考虑到了各种故障的可能性,并 ...

  3. SLA服务可用性4个9是什么意思?怎么达到?

    image SLA:服务等级协议(简称:SLA,全称:service level agreement).是在一定开销下为保障服务的性能和可用性,服务提供商与用户间定义的一种双方认可的协定.通常这个开销 ...

  4. 【微服务】Go进阶② 微服务可用性设计

    文章目录 微服务可用性设计 隔离 核心隔离 快慢隔离 热点隔离 线程隔离 进程隔离 集群隔离 超时控制 双峰分布 超时原因 超时控制中间件 过载保护 常见限流的缺点 过载保护策略 如何计算接近峰值时的 ...

  5. 互联网晚报 | iPhone 15 Pro Max预计售价2万块;周杰伦起诉网易不正当竞争;腾讯定性微信QQ故障为一级事故...

    iPhone 15 Pro Max外形曝光,预计售价2万块 据推测,苹果今年将会带来四款iPhone 15机型,而最贵的将仍然是Pro Max,预计价格在2万元.目前曝光的iPhone 15 Pro ...

  6. 多视角看云平台中的服务可用性

    近几年随着云计算的飞速发展,各大软件巨头厂商如微软.IBM等们也都纷纷向云计算转型.大中型企业即便没有上公有云也都在云计算方面布局,加大投入建设企业私有云.中小型企业都越来越热衷于将自己业务应用部署到 ...

  7. 如何提高线上服务可用性

    上一篇文章中我简单介绍了一次线上服务的可用性下降追查过程,今天我们接着上次的内容来学习如何保证服务的高可用性. 具体分为开发阶段.测试阶段.上线阶段.监控阶段等几大项.这些内容就像是一套组合拳,练好了 ...

  8. 浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务)

    浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) 参考文章: (1)浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) (2)https://www.cnblogs.com/ ...

  9. 用c#开发微信(1)服务号的服务器配置和企业号的回调模式 - url接入

    2019独角兽企业重金招聘Python工程师标准>>> 阅读目录 一.用法 二.实现方法 最近研究了下服务号的服务器配置和企业号的回调模式.真正实现完后,觉得很简单,但一开始还是走了 ...

最新文章

  1. 应用进退法确定一维搜索区间_NMR-如何确定官能团含量(MestReC)
  2. OpenCV:OpenCV中的 parallel_for 和opencv parallel_for_
  3. iOS工程中的info.plist文件的完整研究
  4. MATLAB如何把图片显示在GUI上
  5. Linux下修改时间时区
  6. 第一:Python安装需要的第三方库时,命令行输入pip提示不是内部或外部命令
  7. python连接阿里云服务器_阿里云服务器python
  8. 鸟哥Linux学习笔记(从头学习Linux基础)
  9. 还在用PS?程序猿:给我200行Python代码分分钟给你批量换脸
  10. 【车载IoT】国标《电动汽车远程服务与管理系统技术规范》:车载设备设计规范
  11. 弹出登录框 您未被授权查看该页 的解决办法
  12. 基于wincap写抓包程序
  13. 传奇开服怎么开的起来?
  14. Ubuntu系统关闭搜狗输入法Shift切换中英文
  15. VA软屏和IPS硬屏的区别
  16. 一起来了解一下FIFO!
  17. 嘉立创电路板制作过程全流程详解(二):沉铜、线路
  18. 商务投标的“内卷化”行为,竟无言反驳
  19. dedecms采集基础篇
  20. 合合信息CV算法岗在线笔试题目回忆

热门文章

  1. 腾讯新公开这张「图」,我看了眼,上面写满「智驾」二字
  2. 奔四的听力障碍码农,被开除15次,面试被拒200+次,还要继续干下去吗?
  3. MIT微软为AI量身打造了一套leetcode编程题
  4. 48万!百度推出全球最便宜RoboTaxi,赚钱能力2倍于人类网约车
  5. PDF发明者逝世,曾因学生建议转行计算机,享年81岁
  6. 中国物流供应链“零的突破”!阿里路径规划算法入围运筹学“奥斯卡”
  7. 中国AI芯片公司霸榜谷歌Waymo自动驾驶算法挑战赛!五个赛道,四项冠军
  8. 云从创始人周曦追忆导师黄煦涛:他是化繁为简的大师,对学生不求回报关怀细微...
  9. 英伟达再发边缘AI计算设备:仅信用卡大小,性能比TX2强15倍
  10. Julia数据统计最全教程,代码图解全都有,昆士兰大学出品,公开免费阅读