流年不利的社交游戏服务商Zynga近日在官方博客宣布开源zPerfmon——该工具负责监控Zynga数以千计的社交游戏服务器。zPerfmon的源代码目前已经上传至Github

包括Facebook、Google、Netflix和Twitter在内的众多互联网公司经常会开源自己的开发的工具,但是zPerfmon不同 寻常之处在于其规模:作为单一服务器系统,zPerfmon每天处理的数据量高达150G,增加1亿条数据库记录,并能生成“5000万个档案和上百种查 看方式。”

zPerfmon不是人们想象的那样“大量子程序像珍珠一样轻灵地串缀起来”,而是能够处理海量不同类型文件和任务的单一系统,为每个游戏都提供数十种数据查看和访问方式。流程处理速度超快,稳定性和弹性也值得称道。

Zynga的Philips在博客中详细介绍了zPerfmon的技术原理,摘要如下:

作为处理引擎,zPerfmon服务器的“冲程”为30分钟,所有30分钟内的数据都将被分组、切碎。除了档案外,服务器还保存用户、实例和系统指标数据。所有这些数据都用时间戳赋予键值。通过时间戳可以回溯实例数、CPU峰值以及页面断链和死循环等。

服务器性能监控和故障排查领域已经有大量工具可用,从商业软件如Splunk到开源软件如Ganglia,但是很多互联网公司还是乐于开发自己的产品。这是因为每家公司的系统架构和分析需求都各不相同。例如Facebook就自行开发了至少两种系统监控工具,其中一个是基于Hadoop的数据仓库-Operations Data Store,另一个是事实工具Claspin,负责管理Facebook的缓存架构。

Zynga用zPerfmon监控其自行建设的zCloud混合云架 构中的生产服务器。在公司起步阶段,Zynga选择的是亚马逊AWS应对暴涨的用户数,当需求可以预测后,2012年初zynga选择放弃亚马逊的AWS 转向混合云方案。据Zynga首席技术官Allan Leinwand介绍,Zynga可以在24小时内部署1000台服务器。Allan还把亚马逊比作“四门轿车”,而Zynga的zCloud则是“运动 型跑车”。