微博平台核心服务接口的可用性

随着2014年元旦微博平台抗峰的顺利通过,2013年微博平台核心服务接口的可用性指标被定格在99.991%。

微博服务可用性提升是2013年微博平台技术团队的一个重要目标,为此,平台内部还特别建立的微博平台的SLA指标体系,其中微博平台核心服务接口(主要以feed服务相关接口为主)的可用性指标为:全年平均接口请求性能<100ms的比例>99.99%,即4个9的可用性指标。

我们的挑战在哪里?

说到feed服务大家都知道,feed服务是微博最核心,最有价值的服务,于是它也是产品经理们花心思最多的地方,各种产品功能策略逐步在feed服务中实现,“Feed置顶”、“关键词屏蔽”、“热门推荐”等等,伴随而来的是服务依赖的增多,虽然微博平台对内部的各个依赖资源及服务模块都有SLA指标的要求,但就算所依赖的各个服务的可用性都是在合理性能下的99.99%,假设feed服务依赖于9个服务模块,理论上feed服务的可用性只能达到99.99% ^9=99.91%,即只能保证3个9的可用性。更何况,feed服务实际依赖不止9个资源或服务模块,甚至有些依赖的服务模块由于某些限制确实还不能达到4个9的可用性指标。这些情况都对服务的可用性形成很大的威胁,对我们的完成目标造成很大的挑战。

我们做了什么?

为了完成4个9可用性的目标,一方面微博平台内部建立标准的SLA指标体系,无论是资源,还是服务,都严格定义SLA指标(主要包括性能标准和可用性),并且实行服务分级策略,对于一般重要的(弱依赖)资源或服务执行标准的SLA标准,而对于非常重要的(强依赖)资源或服务,实行高要求的SLA标准,同时投入足够的资源和人力确保关键依赖服务的SLA指标的优化保障。另一方面,根据feed服务自身的业务特点,以所依赖资源或服务的SLA指标数据为基础,制定合理的容错和保障策略,通过在架构方面的策略改造,保证服务的健壮性,提升服务的可用性。

对于服务的SLA指标,最主要的就是明确性能标准和到达这一标准的服务调用比例(即可用性),以mysql资源为例:单次请求性能<50ms,整体满足此性能标准的请求比例>99.99%,(当然,这个指标需要根据具体的业务特点、sql的复杂程度等具体情况进行不同的定义,不能一概而论)。 明确了依赖服务的SLA指标,我们就可以从架构上通过一些策略保障整体服务品质,而不必过份依赖特定的资源和服务,具体有如下几个方面:

超时控制:

从connect timeout 到socket timeout细化超时指标和处理策略。Feed服务依赖了10多个资源或服务模块,偶尔会有某个服务出现问题,或者网络的抖动导致请求超时,如果feed服务无差别的进行等待,那将是一个噩梦。所以,feed服务根据业务特点,把这些依赖进行分级,然后再依据强弱依赖关系,对SLA指标进行分级,最后对各个依赖的请求分别设定异常处理阈值。以Feed置顶功能对资源的依赖为例,置顶微博ID存放在缓存memcached中,在feed聚合时需要从memcached取出这个数据,而平台对这个资源的SLA要求为<50ms,>99.99%,正常情况下都能满足整体服务性能,但当遇到特别情况比如网络抖动,很多获取置顶微博ID的请求将超过阈值,如果对请求超时不进行有效控制,就会影响到整个feed的请求。所以,在这种情况下,feed服务从架构上,对置顶功能的资源依赖明确了超时控制,一旦对这个资源请求时间超过80ms(一般情况下,这个阈值要比依赖资源确认的SLA标准稍微放宽一些,确保正常情况下这个超时控制策略不会误伤正常业务功能),则断开请求,避免影响到整个feed请求,而这种策略,就是通过资源的connect timeout和socket timeout来实现的。尽管在这种资源问题的情况下,置顶微博可能会偶发不显示,但feed的最主要功能没有受到影响。可见,这种对依赖隔离非常重要,对于任何依赖不能无止境的信任。

阻塞与容错:

对于必要的依赖,要有一定的容忍度(限定在SLA之内),通过请求队列,自动容错降级等方式容忍短期的服务波动,同时还需要一定的自动修复策略,保证依赖服务恢复后,主服务能够快速自动恢复。

Feed服务中最典型的阻塞容错策略是feed的发表模块,当你发表一条微博时,微博内容并不是直接存入mysql中,而是暂存在消息队列中,然后再由专门的消息处理模块对这些消息进行处理,进行更新入库。这样做把feed服务对3个左右的mysql依赖降低到对一个轻量级的消息队列的依赖,可靠性一下子提高了一个档次。当前类似这样通过阻塞及容错策略进行依赖降级或隔离的场景还有不少。

手动开关:

然而,在一些特殊的情况下,有些依赖的资源或服务可能长时间不可用,这样导致服务一直受到影响。尽管我们有前面所说的比如超时控制等一些保护策略,但这些保护策略也在消耗这一定的时间。短时间波动的问题可以非常好解决,但对于相对持续较长的问题,则很难达到效果。这是就需要我们手动切断依赖,等依赖问题恢复后再打开。

有人可能提出,为什么不能在超时控制的策略之上,自动增加这种开关机制能?实际上,对于非常核心的资源服务依赖,一般性的问题都不允许进行降级,如果采用自动降级策略风险将非常大,因为自动降级的边界非常难以判断,这种情况最好的方式就是采用手动降级的方式。(一旦实施了这个,一般都是出现了非常严重的问题,服务品质已经收到影响,只是尽可能的把影响降到较小范围。类似于“断臂保命”)

时间: 2025-01-02 14:26:32

微博平台核心服务接口的可用性的相关文章

腾讯低调推出微信公众平台第三方接口平台风铃

中介交易 SEO诊断淘宝客 站长团购 云主机 技术大厅 [最科技讯]最近,腾讯低调推出微信公众平台第三方接口平台风铃,除自定义菜单外,还有其他众多微信接口高级权限:一键生成HTML4和WAP站,留言.报名.抽奖等组件,集成QQ客服,打通微信与微博等. 腾讯风铃的最大卖点就是通过各种模块的选择快速的生成属于企业或者个人自己的微信APP,随着微信5.0的到来,服务号每月只能推送一条后,企业将只能通过微网站的方式来配合自定义回复接口为用户提供服务,图中可以看出风铃提供了16种不同功能的模块,包括抽奖.

微信公众平台消息接口开发(34)微信墙之表白墙/婚礼墙/晚会墙/会议墙/晒单墙/照片墙/历史墙

微信公众平台开发模式 微信 公众平台 消息接口 开发模式 企业微信公众平台 微信墙 婚礼墙/晚会墙/会议墙/晒单墙/照片墙/历史墙 历史上的今天作者:方倍工作室  原文: http://www.cnblogs.com/txw1958/archive/2013/06/08/weixin-if34-wall.html    微信上墙是利用微信公众平台,让观众将希望互动的内容通过手机发送给相关平台账号,进而由工作人员从后台筛选/或不筛选上墙的一种方式.只要像和朋友聊天一样,将你想要表达的内容发给对方,

115网盘推微博平台应用插件 支持国内主流微博

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 115网盘今日悄然上线微博平台应用插件 4月26日消息,国内知名网盘服务商115网盘今日悄然上线微博平台应用插件.腾讯科技登陆115网盘时发现,在"应用市场"按钮,发现应用列表中赫然新增了一款名为"115微博通"的应用. 经了解,这是115为用户打造的一款微博应用组件,无缝整合了包括腾讯微博在内的国内多

收集到的震灾信息会写入到微博平台

摘要: 今晨,新浪微博开放平台官方微博@微博开放平台表示,其已向多家合作方提供专用推送接口,以实现救援数据互通. 微博内容写道:网友在百度.搜狗.360的寻人页中,可查询到新浪 今晨,新浪微博开放平台官方微博@微博开放平台表示,其已向多家合作方提供专用推送接口,以实现救援数据互通. 微博内容写道:"网友在百度.搜狗.360的寻人页中,可查询到新浪微博上的最新内容.同时,收集到的震灾信息也会写入到微博平台,通过微博实现寻人数据的共享.这是国内大型互联网公司首次实现灾难救援数据的互通."

微博平台架构和安全——微博平台首席架构师杨卫华演讲

微博平台首席架构师杨卫华演讲 新浪科技讯11月16日下午消息,由新浪微博(http://t.sina.com.cn)主办的中国首届微博开发者大会在北京举行,这是国内微博行业的首场技术盛宴 作为国内微博市场的绝对领军者,新浪微博将在此次大会上公布一系列针对开发者的扶持政策,以期与第三方开发者联手推动微博行业的整体发展 以下为演讲实录: 大家下午好,在座的大部分都是技术开发者,技术开发者往往对微博这个产品非常关心 最晚的一次,是12点多收到一个邮件说想了解一下微博底层是怎么构架的 很多技术人员对微博

微博平台的链路追踪及服务质量保障系统:Watchman系统

如其他大中型互联网应用一样,微博平台由众多的分布式组件构成,用户通过浏览器或移动客户端的每一个HTTP请求到达应用服务器后,会经过很多个业务系统或系统组件,并留下足迹(footprint).但是这些分散的数据对于问题排查,或是流程优化都帮助有限.对于这样一种典型的跨进程/跨线程的场景,汇总收集并分析这类日志就显得尤为重要.另一方面,收集每一处足迹(footprint)的性能数据,并根据策略对各子系统做流控或降级也是确保微博平台高可用的重要因素.要能做到追踪每个请求的完整调用链路:收集调用链路上每

智能平台管理接口简介

智能平台管理接口 (IPMI) 是一种开放标准的硬件管理接口规格,定义了嵌入式管理子系统进行通信的特定方法.IPMI 信息通过基板管理控制器 (BMC)(位于 IPMI 规格的硬件组件上)进行交流.使用低级硬件智能管理而不使用操作系统进行管理,具有两个主要优点: 首先,此配置允许进行带外服务器管理:其次,操作系统不必负担传输系统状态数据的任务. 主板supermicro x8dtt-f 1.下载ipmi软件ftp://ftp.supermicro.com/utility/IPMIView/ 2.

微博平台的RPC服务化实践概述

2014年第一分钟,新浪微博的发布量以808298条再次刷新记录,第一秒微博发布量相较去年提升55%.(数据来源:新浪科技 )这是微博平台 RPC 框架 "Motan" 上线后第一次抗峰值,整体表现平稳,基本达到最初的"应用方无感知"的目标. 在RPC服务化这个事情上,微博平台不是第一个吃螃蟹的:早的有亚马逊和eBay等国外先驱,近的有Twitter的finagle,淘宝的dubbo等等,网上各种公开的资料铺天盖地.另一方面,单纯的RPC调用功能实现,从技术上看其实

PHP对接微信公众平台消息接口开发流程教程_php实例

一.写好接口程序 在你的服务器上上传好一个接口程序文件,如http://www.yourdomain.com/weixin.php  内容如下: 复制代码 代码如下: <?phpdefine("TOKEN", "weixin");//自己定义的token 就是个通信的私钥$wechatObj = new wechatCallbackapiTest();$wechatObj->valid();//$wechatObj->responseMsg();c