工作 进入新项目组大概一年半了,做的事情挺多,虽然产品和运营不怎样;理下:
1,thrift 引入,以及相关配套的一堆自动化代码以及makefile之类的,后来又加入了 lua so 自动
生成的模块;thrift 的引入,基本把过去手动做的编解码等手活全包干了,极大的解放了以前浪费在这上面
的生产力,一键make,生成编解码代码,编解码工厂,类映射,以及和svr框架搭接的所有代码;这些活以前
手动做,非常麻烦,而且非常容易产生bug,且非常无聊;
另外,相关的python client组件也都配套产生了,每个svr都可以非常简单的写一个client,鄙视
过去那种连client不写的开发,低级到极点;
现在基本所有的svr的协议都已经全部使用 thrift 套件,每个svr也都有了自己的client;对于测试
运维都提供了极大的方便;
2,svr 框架扩展,主要是用了一段时间的原svr框架后,以及接手了原项目中的一些svr代码,实在
被恶心到了,也被吓倒了,动不动就是几十个头文件,cpp文件,里面一堆看起来重复却总有一些很小的不同
的地方;想理清楚里面一个简单的逻辑,都是一件很难的事情;于是尝试在原来的框架上将很多能够重用的
逻辑写成扩展包,方便使用;最终产生了一个还算凑合能用的扩展框架,扩展框架用的比较多的模版和宏之类
的玩意,所以这些代码对于一个新手来说确实有点难度,但扩展框架保证了,即使看不明白这些代码,也能
方便快速的写出 svr 来;做不到 keep it simple,stupid,能做到 make it complicated, then hide it 也
可以了;
后来扩展框架所包含的功能越来越多,甚至包装了任务线程的一些代码,使得使用线程简单到了极点
也包括了一些svr中经常用到的机制,比如:注册监听,广播,特别是广播的使用,极大的解耦了原来乱成一
团麻众多的模块;
扩展框架绝对不是理论的玩意,绝不是想出来的功能,都是极度的需要,我才将之加入到扩展框架中
去的;
现在基本新的svr都采用了这套svr框架,虽然培训团队成员用这套玩意是费了点时间,但带来的效益
绝对是值得;
3,nginx+自定义扩展+lua 引入及使用,项目对外接口都用的http协议,所以http 接入服务器是避
不开的,原来都是搭svr解决,扩展性可配置项都差到极点,后来引入了 nginx,当然原生的 nginx 肯定不
合适,所以开始是尝试自定义nginx扩展来解决;后来发现这一玩法成本过高,然后就玩起了nginx内嵌lua;
收益颇丰:
首先:项目的接入变得极其灵活,可配置项极大,且效率比起原来自搭svr要高了n倍,当然这一切
都拜 nginx 所赐;从此喜欢上了“接入”^_^
其次:发现了脚本语言的强大魅力,体会到了语言表达能力的极大差异;喜欢上了 lua 的简洁高效
再次:体会到了 nginx 代码的魅力,感觉到了我们一直用的svr框架与nginx的巨大差距;站的更高
了,看的更多了,开始极不满意现在的svr框架;
4,用户文件系统的搭建,开始碰到的最大挑战就是这个用户文件系统,有些用户的文件数量巨大,
且还要支持版本,支持比较,支持类似svn之类的功能;光有效高效的存储拉取这些数据就不是一件简单的
事情;后来,用到了快照+日志类似方法基本完美的解决了这一问题;
后来又碰到了内存使用的问题,然后半个月解决之,然后诞生了一篇文章:
5,系统理顺+解耦,系统太多乱七八糟的耦合了,且都以c++写的svr,尝试将系统划分成了几个
子系统,然后尽量尝试将子系统隔离;这一块的工作量非常大,且需要花很大的力气;
另外一些基础组件的管理,发现有时候必须采用强制的方法才奏效,比如 makefile 的编写之类的
6,项目组管理,兄弟技术培训,花的时间不少;在管理和技术之间寻找平衡;另外,感觉效率的
低下,尝试解决之;
自我提高
不断学习,不断进步
1,动态语言学习,除了系统学习,大量使用 python 外,开始学习其他动态语言,lua 是重点,
perl也尝试了一把;comm lisp 是将来的重点;
2,看书,看了大量书,视野开阔不少;
3,反思,反思工作中的一些不满意的现状,尝试改进,纵然不易;
4,开源,写文章;将自己一些比较满意的东西开源出来
生活
生活虽依旧贫苦,压力巨大,但也幸福;
1,有了个一个漂亮可爱的女儿,但迫不得已放在老家让妈带着,过年来,已经6个月没看到我的宝贝
了,非常想她,视频聊天看过两次,非常可爱,好想抱抱;想她,老婆也非常想她,非常想她;
2,生活不易,想买房,谈何容易;
阅读(1219) | 评论(0) | 转发(0) |