微服务常见问题

跳转到: 导航, 搜索

商业数据API相关问题

1、搜索最近数据接口:search/statuses/limited

(1)使用相同的参数调用接口有时可以返回数据,有时报错,数据不稳定?

为了保证线上服务的响应速度,并降低服务器的负载,访问下游服务的时候,超时设置的比较严格,为500ms,如果下游500ms没有返回,则访问失败。如果要解决这个问题,建议调用时加入重试机制。


(2)使用相同的参数请求接口两次,两次返回的数据结果不一样?

两次搜索数据量不一样,这个属于正常的范畴。搜索微博的检索策略、前端过滤策略、敏感词的数量以及数据库中微博本身的数量都是动态变化的,QA在测试的时候,线下环境与线上环境做diff,基本不超过5%就认为是正常。


(3)关键词一样,只有sort排序不一样,每次返回的数据量总数有很大差异?

线上的后端服务器分为两组,一组用于统一搜索,返回数据类型比较丰富(精选、文章、点评、用户等),另一组用于商业数据,只返回微博数据。不同的参数值对应的索引库会有差异。另外,sort参数值fwnum、cmtnum、hot都只对近期原创微博有效,但是time却无限制,所以这三个参数在返回时会有区别的,而且time与另外的区别很大。


(4)以天为周期查询某关键词,30天的微博数量不等于以月为周期的微博数量?

超过1000条结果的搜索,返回的数量并不是实际数量,而是估算的数量,这个估算是不受过滤策略影响的。


(5)有时某一页返回的数据要小于“count”指定的数量?

count是指每页返回的数量,比如设置为10条,当显示8条时是因为那两条被过滤掉了,再次访问又变成10条了,是因为索引数据库是动态的,它会将过滤掉的信息挤到下一页或者之后的页面。


(6)每页返回的微博数量总和与total_number不一致?

实际返回的结果数与total_num不符,这个现象是正常的。原因是索引中的数据都是入库时的原始数据,后端会返回命中的微博,但是前段会根据微博的实时状态进行过滤,比如有些微博被删除、命中敏感词、用户被封等。


(7)搜索某关键词时,某省的微博数量与其下面的地市微博数量总和不相等?

搜索的数据都来自于平台,当用户指定某个省或城市的微博时,会根据一些标志位来判断微博是否是用户要求的省或城市,具体的的原因是:细粒度的城市与粗粒度的省份之间没有对应起来,比如搜索河北的微博,标记为河北的都会被搜索到,但是搜索石家庄,标记为河北的也会被搜索到。


(8) 如何使用时间参数,尽量搜到最全数据?

结束时间参数的值指定为当前时间,起始时间无需指定,将按时间倒序分页返回1000条微博,再将第1000条微博的创建时间作为结束时间参数的值,起始时间无需指定,依次递推。


(9)调用接口报错,返回403,403报错是什么原因?

403报错是没有登陆或超过频率限制或超过发布上限。


(10)搜索某个关键词最多返回多少条?

在某个时间区间内,搜索某个关键词,分页返回,每页最多返回50条,最多可以翻20页,即最多返回1000条。


(11)对于转发微博,若只是原创内容包含指定关键词,而转发不包含,能被搜到吗?

不能。对于转发微博,检索部分只是转发内容部分,且不包括微博作者名、表情符号、转发昵称。


2、返回一条微博的全部转发微博列表接口:statuses/repost_timeline/all

(1)对于多层级转发微博调用该接口时的返回信息是怎样的?

这个接口是返回一条微博的全部转发微博列表,包括多级转发的,比如A被B转发,B又被C转发,C又被D转发,对A调用此API接口,返回的转发数是B、C、D,这三个层级都包括,同理,对B调用此接口,C和D分别是其一级和二级,但是在返回数据时返回的是API上显示的若干输出参数,没有层级的区分。


(2)调用接口时无法获取某条微博的全部转发微博?

转发列表接口是返回一条微博所有转发的列表,但结果是会过滤无效用户的。如果转发微博的用户是冻结状态与未激活状态,用户转发的微博都无法显示。


3、粉丝服务平台中微博帐号与应用之间的对应关系以及相应的安全机制是怎样?

粉丝服务平台目前只支持一个应用绑定一个推送地址,不支持绑定多个,粉丝服务平台在首次接入调用的时候,会进行一次验证操作,具体参照:http://open.weibo.com/wiki/Messages_api_start.


4、开发者如何操作可以避免频率限制?

确定哪些需要定时访问的接口,每个接口做一个优先级,访问的频率做为一个变量; 计算下一定要访问的接口数据量; 预留给用户一定的更新(发微博,私信等) ;使用Account/rate_limit_status查看当前appkey所能支持的每小时的最大访问量,根据此访问量来确定频率的值。


5、没有单条微博详细页的url,怎么拼接单条微博的网页版地址?

在程序中获得用户的uid,调用statuses/querymid获得用户的MID,拼接成http://weibo.com/uid/mid, 如UID=12345,mid=abcde,则网页版地址为:http://weibo.com/12345/abcde。