标签 skynet 下的文章

skynet线上使用的数据,解答性能问题

记录一下MMZB的运维运营数据

陌陌争霸已经运行9个多月,记录一下现在的运维运营数据:

总用户460万,集群服务器共30台,其中Game Server
9台,redis集群内存占用接近900G,mongo集群磁盘占用接近5T(定时删除旧数据,所以增长速度趋缓了)。
redis集群内存每周增长20G,很快突破1T。后期会上线leveldb落地redis冷数据的方案,有望把redis内存占用削减到现在的三分之二,则600G左右。使用TokuMX替换Mongo后,减少了的磁盘空间占用压力,已经处于恒定状态。

统观项目状态,资源需求已经趋于平稳状态,运维方向可向更高层次的调优和架构改造偏重。

从最近的两次崩溃所总结出的及我的2013

公司的手游项目(注:手游 陌陌争霸)上线了半个多月,一直运行的稳定,开始的测试过程中也出现了零零散散的几个小坑,都顺利跨过了。能实现单机支持3W在线用户的水平,按云风GG的说法,这结果出乎之前的预算,有那么一点小鼓舞。
过去的这个周末和今天周一连续出现了两次集群中一台服务崩溃的情况,晓靖和云风GG很快找到了梗所在,并迅速修复了这个坑,让我们对这个项目更加充满了希望,我相信合作方也与我们一样。
说回运维层面的东西,首先我想说的是,好的代码和架构能为运维节省大量的工作并同时提升运维效率,从这一点上,skynet和与之配合的各模块都出色的达到了这个标准:完善的日志输出、高效但并不复杂的架构设计,我还是遵循我一向的标准,只要是简单、高效、安全的设计,就是优秀的设计。

skynet简介

skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言。
skynet默认开启_timer线程、socket线程、_monitor线程以及可配置个数的多个_worker线程,启动skynet服务就是向skynet注册由c编写的so模块实例也就是服务。
skynet主要工作是通过模块注册管理服务,并协调服务之间的调用和通讯。

skynet自带的模块中有一个重要的模块是snlua.so模块,通过snlua.so和指定lua脚本文件可以启动多个lua编写的服务,不用每个服务都是用c来编写,而且大部分逻辑都是在 lua 脚本下开发,只有需要考虑性能的模块才用 C 语言开发成库,直接提供给 lua 调用。 现在 Skynet提供给 lua 使用的库还不多,期望以后这些库多了,可以方便、简单的完成一个网络游戏服务端的开发。

Skynet是服务端的最底层框架,和游戏有关的各种服务都是基于架构之上开发的。服务启动后skynet一般由socket接受外部msg传入内部服务做处理。

PPT简介:http://pan.baidu.com/s/1i3qp7b3