[关闭]
@ronaldoooo 2015-02-02T03:42:31.000000Z 字数 1550 阅读 1004

移动站调用接口说明

2015/02/02 蔡乾

接口调用 TRS数据库 性能


1 背景

2014年11月13日,移动站进入自动运行测试。2015年1月20日,由于评论频道进行了整站发布(于22日查明),导致移动站自动转稿程序重复请求超过70000条数据,导致TRS接口持续崩溃。

2月2日,TRS平台又发现资源占用较高的现象。经核查移动站运行状况正常。为了确保移动站以及TRS后台的正常运行,以及发现移动站转稿逻辑中可能的潜在漏洞,现整理移动站所有调用TRS接口的位置以及调用频率,以供参考。

2 接口分类

2.1 ID参数接口

项目 描述
接口名称 ID参数接口
接口功能 根据单篇稿件ID,返回xml格式稿件相关信息
接口地址 http://trs.cnhubei.com:8000/wcm/docbyid
调用范例 http://trs.cnhubei.com:8000/wcm/docbyid?id=3137359
参数名称 id
参数说明 稿件在TRS中创建时所分配的唯一ID
调用背景 各首页数据每5分钟更新一次,在更新时会将 首页XML数据中PC页链接地址 转换成对应 MOB站链接地址 。在此过程中,会根据稿件ID查询其创建日期,再根据其创建日期得到其MOB站存放路径。

但由于此处已用缓存优化,最近的5000条稿件地址不会重复调用接口查询,仅会在缓存未命中时才会发起接口调用。
调用频率 在 2015/02/02 10:00 粗略统计了现有的12个首页XML数据,在首页生成时一共需要转换的url地址在100条左右。目前的首页数据缓存量为5000条,故可以认为单篇稿件在5分钟一次的频繁更新中,只会调用ID参数接口 一次

依照之前测试中的统计,缓存的命中率平均在95%以上,所以此接口平均调用频率在每5分钟5次以内。峰值时调用频率可能高于此数值,为首页中这5分钟内新增的稿件数量。
实际调用情况 在 9:00-10:00 进行了8次测试,从本机发起转换首页的请求,到服务器处理完成并返回数据,相差时间都在 1s 以内。故转换首页的进程数据库CPU及内存占用时间很低。

由于此时段可能不是首页更新高峰时期,具体峰值的情况尚待日志记录。
最坏情况测试 最坏情况是缓存全都不命中。此接口会对每一篇需要转成移动站url的地址调用一次接口。

测试中我删除了缓存文件,再进行生成首页的操作。从发起请求,到服务器处理完成返回响应,实际处理时间为16秒,接口占用时间只会小于16秒。(由于包含了本地服务器重新部署缓存的时间,实际接口占用时间应该远小于此值。)
Created with Raphaël 2.1.2开始读首页xml数据获取一个pcurl缓存命中?全部处理完成?结束调接口写入缓存yesnoyesno

2.2 时间参数接口

项目 描述
接口名称 时间参数接口
接口功能 根据设定的起始时间,查询这一段时间发出的新稿信息
接口地址 http://trs.cnhubei.com:8000/wcm/docbypubtime
调用范例 http://trs.cnhubei.com:8000/wcm/docbypubtime?last_time=1422836678
参数名称 last_time
参数说明 设定的起始时间,所有在此时间之后发布的稿件信息都会被返回。
此值会被转稿程序记录,并在每一次转稿完成后保存为此次所转稿件的最大pubtime,在下一次请求中以此保存的值为参数来发起请求。
调用背景 转稿程序会记录一个 last_time 值,每5分钟调用一次该接口,请求自 last_time以后发布的所有稿件信息。
调用频率 每5分钟一次
实际调用情况
最坏情况 当TRS平台在短时间内大量发布,接口方会将大量数据一起加入内存,此时可能导致JVM内存溢出。

调用方对于这种情况已加入邮件功能,在TRS接口未正常返回数据时发送邮件告知管理员。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注