姿势游戏日志模板图片 姿势资料咨询
一、游戏上传日志是啥子意思
游戏日志也就是游戏记录。简称为“游戏志”。
游戏日志主要是用于记录体系运行信息,相关信息,包括bug信息,网络信息,位置信息,时刻信息,但不限于通话记录,拍照,短信发送等,有助于开发人员进一步优化游戏运用尝试,降低运行异常,优化启动速度等,旨在更好地提高用户尝试。
游戏的日志不会上传到服务器,只会存在本地,只有软件的错误才会上传到服务器。用来化解难题。
游戏日志可以分为下面内容几种:
1)体系日志
2)用户操作日志
3)异常日志,即错误日志
二、基于NodeJS的高性能分布式游戏日志体系
最近我司需要做壹个统一的游戏日志体系,标准有一定的通用性,能应对企业全部的游戏业务。接下来同享一下这次日志体系的项目经验。
目前流行的日志体系为ELK,由Beats、Logstash、Elasticsearch、Kibana等组件共同实现,但万变不离其宗,壹个基本的日志体系架构类似如下:
游戏解析,和其它服务体系不同的是,游戏内的体系也许是天马行空的,数据类型是多样的,甚至频繁变化的。大家要在变化中拓展资料到不变的内容,例如体系经济产出,玩家物品消耗,商店购买等进行解析。因此这次的游戏日志体系要满足下面内容需求:
虽然ELK在配置配置方面不算困难,插件众多,例如Filebeat,读log文件,过滤格式,转发,但谁来生产这些log文件,没有提及。业务具有多样性,只要有日志文件的地方,它就可以用。例如多数会运用Nginx进行日志收集。大家也需要思考到日志生产者的难题,责权分离,需要单独一台机子进行日志采集。
游戏是一种技术和艺术结合的产品,数据庞杂,形态各异,光日志埋点也花不少功夫复杂,但不能因此言败治疗。好的游戏日志,还可以帮大家还原玩家玩家画像。游戏更新周期短,数据变化大,需要提供更实时参照报表,为非技术人员更好友的查询界面,才能更好的服务于游戏数据解析。ELK在这方面,基本化解了采集和储存的难题,但实现解析方面还不能满足大家的需求。
经过一翻思索,大家可以用现有工具,粘合多个套件,大家有了下面内容思路:
这个框架主要运用到了Fluentd,ElasticSearch,以及NodeJS,我就称它为 FEN架构吧,如下图。
上图看出,这样的日志架构和第壹个图基本没啥子不同,只是多了后面的解析和分批入库处理,而且大量运用了NodeJS。
注:在这里不会说明各组件的详细的配置配置方式,网上有太多了,如何运用好每壹个组件才是决定因素。
先说明大家用到的工具:
Fluentd一个完全开源不收费的log信息收集软件,支持超过125个体系的log信息收集。Fluentd在收集源日志方面特别方便而且高性能,通过HTTP GET就可以,这类似于Nginx的日志记录行为。它的优点是,日志文件可以高度定制化,例如大家这里每5秒生成壹个文件,这样每分钟有12个文件,每个文件体积特别小。何故要这样做?下面会说明。Fluentd还有特别多的插件,例如直接存入MongoDB,亚马逊云等,要是熟悉Ruby,也可以自己写插件。
有人运用MongoDB进行日志收集,是特别不明智的,只有几千万条还可以,如果半个月生产10亿条日志呢?日志文件需要保存壹个月甚至更长,那么集群和硬盘维护就特别重要。运用便利性也很重要,例如分词检索,在客服回溯玩家日志,解析游戏 BUG的时候特别有用。下文的 ES也是该组件的简称。
NodeJS不适合做 CPU密集型任务,但在网络应用方面还不错,而且是大家正好熟悉的。日志体系并不对实时性标准并不高,延时半小时以内都是允许的,正常情况延时也就10来秒。下面的读和转发日志的Pusher,收集日志的logger,解析日志并数据落袋为安的的analyser,都是由NodeJS实现的。
下面继续说明用 NodeJS实现的每壹个部分:
上面说到,何故Fluentd运用分割成多个小文件的方法,由于NodeJS在大文件处理方面并不友好,而且要思考到通过网络发送到另一台机,转发速度比读慢太多了,因此必须实现续传和断点记录功能。想想,如果读几百 M的文件,出现中断后,需要永久记录上次位置,下次再从此处读起,这就增加了程序复杂度。NodeJS虽然有readline模块,但测过发现并不如文件流那样可控,访模块用于交互界面尚可。相反,如果日志分割成多个小文件,则读的速度特别高效,而且每5秒壹个文件,哪怕有上万条记录,文件也大差点何处去,内存也不会占用太多,在断点续传和出错重试方面都能自如应对。如果游戏日志增多,可以增加节点来缓解文件过大的压力。
何故不直接让日志生产者直接发到Koa上?由于效率和带宽。NodeJS的适合做网站,但比专业的HTTP服务器要弱太多,4核心主机面对3000QPS就吃力,更多的关于NodeJS的性能难题,可以参考网络文章。在高并发量下,带宽是个很大的难题,尤其是需要做统一服务,面对的情况是日志机器和游戏并不在同一内网中。在10万日活下,带宽超过了50M,特别吓人,带宽可是很贵的,过高的带宽费用在这里性价比太低了。
这里大家运用Koa作为日志采集器。运用Koa,无论在性能还是开发效率上,都比expressJS高效。大家还用到了Redis作为缓存,而不是直接在这里做解析任务,是为了尽量进步和Pusher的对接效率,毕竟日志的生产速度是很快的,但网络传送是相对低效的。
注:pm2 3.2.2的集群也许出现集群内端口冲突的吊诡难题,提议用3.0.3
解析器读取Redis的内容,这里就是单进程的队列操作。到这一步,日志如何解析,就可以很自在了。
由于大家本身有后台管理体系,因此大家很方便的把用户画像和其它解析点接了入去,在查询玩家行为时,大家搜索ES,在查询解析报表时,大家查询MongoDB中的数据。当然大家也运用了Kibana来满足也许的需求。
目前该日志体系运行1个半月,由纯MongoDB到结合 ES,走了不少弯路,还好现在终于稳定下来。目前在性能方面,logger和 analyser都在同一台机,平均 CPU为23%左右,高峰47%左右,说明还有更大的机器压榨空间。
内存方面,在高峰期5G以内,总体特别平稳没多大波动,其中redis内存运用为800MB以内,但机器是16G,还有很大余量保障。
NodeJS的脚本中,logger的CPU占用更小,3条进程,每条才3%,每条内存占用差点100MB。analyser的 CPU和内存占用多一点,这一点可以通过脚本内的参数调整,例如内存计数的内容清理得更快,运用pm2的话配置max_memory_restart:'4G'都可以进步稳定性。
以上是我在游戏日志体系中的经验拓展资料。
参考文献:
三、零基础学Python应该进修哪些入门姿势
关于零基础如何样能快速学好Python的难题,度娘提问和解答的都很多,你可以度娘下看看。我觉得从个人自学的角度出发,应从下面内容多少方面来领会:
1何故选择学python?
据统计零基础或非专业的人士学python的相对多,据HackerRank开发者调查报告2024年5月显示(见图),Python排行第一,成为最受欢迎编程语言。Python以优雅、简洁著称,入行门槛低,可以从事Linux运维、Python Web网站工程师、Python自动化测试、数据解析、人工智能等职位,薪资待遇呈上涨动向。
2入门python需要那些准备?
2.1心态准备。编程是一门技术,也可说是一门手艺。如同书法、绘画、乐器、雕刻等,技艺纯熟的背后肯定付出了长时刻的反复练习。不要相信几周速成,也不能急于求成。编程的全球浩瀚无边,因此请保持一颗敬畏的心态去进修,认真对待写下的每一行代码,甚至每壹个字符。收拾好自己的心态,给着编程的全球出发。第一步至关重要,关系到初学者从入门到精通还是从入门到言败。选一条合适的入门道路,并坚持走下去。
2.2配置 Python进修环境。选Python2还是 Python3?入门时很多人都会纠结。二者只是程序不兼容,想法上并无大差异,语法变动也并不多。选择任何壹个入手,都没有大影响。如果你仍然无法抉择,那请选择 Python3,毕竟这是未来的动向。
编辑器该怎样选?同样,主推 pycharm社区版,配置简单、功能强大、运用起来省时省心,对初学者友好,而且完全不收费!其他编辑器如:notepad++、sublimeText 3、vim和 Emacs等不主推了。
操作环境?Python支持现有全部主流操作平台,不管是 windows还是 mac还是 linux,都能很好的运行 Python。而且后两者都默认自带 Python环境。
2.3选择自学的书籍。我主推的书的内容由浅入深,提议按照先后顺序阅读进修:
2.3.1《Python简明教程》。这是一本言简意赅的 Python入门教程,简单直白,没有废话。就算没有基础,你也可以像读小说一样,花两天时刻就可以读完。适合入门快速了解语法。
2.3.2廖雪峰编写的《Python教程》。廖先生的教程涵盖了 Python姿势的方方面面,内容更加体系,有一定深度,有一定基础之后进修会有更多的收获。
2.4学会配置包。Python中有很多扩展包,想要配置这些包可以采用两种方式:
2.4.1运用pip或easy_install。
1)在网上找到的需要的包,下载下来。eg. rsa-3.1.4.tar.gz;
2)解压缩该文件;
3)命令行工具cd切换到所要配置的包的目录,找到setup.py文件,接着输入python setup.py install
2.4.2不用pip或easy_install,直接打开cmd,敲pip install rsa。
3提高阶段需要恒心和耐力。
完成入门阶段的基础进修之后,常会陷入壹个瓶颈期,通过看教程很难进一步进步编程水平。需要的是反复练习,大量的练习。可以从书上的例题、作业题开始写,再写小程序片段,接着写完整的项目。大家收集了一些练习题和网站。可根据自己阶段,选择适合的练习去做。提议最好选择一两个系列重点完成,而不是浅尝辄止。
3.1多做练习。主推网站练习:
crossin编程教室实例:相对于编程教室基础练习着重于单一姿势点,
编程实例训练对基础姿势的融会贯通;
hackerrank:Python部分难度循序渐进,符合进修曲线
实验楼:提高编程水平从做项目开始;
codewar:社区型编程练习网站,内容由易到难;
leetcode:为编程面试准备,对初学者稍难;
牛客网:提供 BAT等大厂笔试题目;
codecombat:提供一边游戏一边编程;
projecteuler:纯粹的编程练习网站;
菜鸟教程100例:基于 py2的基础练习;
3.2遇到难题多探讨。
3.2.1利用好搜索引擎。
3.2.2求助于各大网站。主推
stackoverflow:这一个程序员的姿势库;
v2ex:国内特别不错的编程社区,不仅仅是包含程序,也包含了程序员的生活;
segmentfault:一家以编程问答为主的网站;
反恐精英DN、知乎、简书等
3.2.3加入相关的QQ、微信群、度娘了解。不懂的可以随时请教。