天天看点

2016年终工作总结

今天是2016年的最后一天了,回想起这一年的工作,有成长与快乐,也有自己不满意的地方,趁着今天是2016年的最后一天,好好回顾下这一年到底做了些什么

2016年的工作主要是围绕运营后台的开发来展开,运营后台开发分为三块:web开发,日志实时获取,日志数据统计.就这三方面来总结下自己的工作。

年初的时候就设想要把这个后台往大数据方向去做,年初的时候就开始调研storm实时日志处理框架,到三月份完成开发测试,4月份部署到页游海外平台,真正实现了实时获取游戏的日志数据。起初的框架设计是logstash+redis+storm,采用redis主要为了兼顾之前的遗留系统,最早获取日志的方式是通过openresty框架定时从redis中获取,考虑到redis毕竟是内存级别的消息队列,碰到断电等极端情况可能会存在丢失数据的可能性。不过在storm部署上线后发现了storm和redis的进程cpu利用率会会达到40%,略微有点高,从上线后开始陆陆续续开始调研kafka这种分布式消息队列,经过上线测试,storm和kafka的cpu负载马上降到了10%左右,原因应该是redis是单进程的,采用epoll方式运行,不能很好的应对storm这种高密度的请求方式。至此,实时处理平台已经切换成了logstash+kafka+storm,目前这套框架是业界的主流处理框架,可以轻松实现分布式扩展,应对业务的扩展。

数据统计方面,起初的设计是起一个定时脚本去定时统计,随着业务的增长和统计指标的增加,统计完一次需要的时间越来越长,之前一直通过合并游戏服和删去部分不需要的统计指标来压缩统计时间,到8月份的时候自己抽出时间来调研大数据统计框架spark,前期准备花了挺长时间的,要自学Scala语言以及部署spark跑个例子测试。真正的开发是从11月份开始的,期间也碰见很多的问题,比如spark编程的基本元素是RDD,自己在写代码的时候总是或多或少的还是用Scala去做循环而忘了RDD可以轻松实现一些map和reduce的操作,不过遗憾的是到今天为止spark统计还没完全写完,预计一月份能完成吧,毕竟要实现的统计指标确实比较多。

web开发方面:今年开始逐渐转入openresty框架,之前的框架虽说是nginx+lua的,但是真正进行web开发来说还是有很多的限制,而openresty社区有很多封装好的第三方库可以借用,而且执行效率都比自己开发的要高,何乐而不为呢,另外自己也关注了openresty讨论组,出现问题的自己解决不了的时候也会发邮件到讨论组里面问,也会回邮件帮别人解决问题,这也许就是开源社区强大的魅力吧,哈哈,现在我每天早上上班都会去查看邮件讨论组看有没有自己感兴趣的话题。回到正题,openresty这个框架确实非常强大,本身就是借用了nginx的epoll模型进行开发,可以轻松应对高并发的挑战,今年我们公司的游戏业务单日访问量可以达到500w,毫无压力。说到openresty这里个人感觉比较遗憾的就是今年一直想去看nginx的源码,从而更好的能了解openresty框架,但是一直没看,要么是没时间要么是偷懒去了,年初的目标我就设想2016年我要深入了解一下nginx的代码结构。可惜这一项我没有做好。

总结下今年的工作,值得让我满意的地方是终于进入到大数据领域,并且将其投入实践,取得了非常好的效果。另外投身了开源社区,感受了开源项目的魅力,真是那种 众人拾柴火焰高的感觉,感谢openresty。做的不满意的地方,感觉自己的学习能力还是不够强,年初定好的要好好看下nginx源码的目标没有实现

给自己定一个2017年的目标吧: 1.继续投身大数据领域,完成spark项目,同时优化storm+kafka 2.弥补去年的遗憾,深入了解下nginx的源码 3.继续投身openresty

继续阅读