自我介绍一下,本人以前是.net程序员,去年下半年负责把项目从.net转到java,并且有跨机房迁移,亿级访问量,app服务端项目。
自我吐槽一下,工作了8年了,没有成为架构师,也没有进入管理层,没有成为技术大师,也没能成为分享大师。一直在做业务,并在这条路上越走越远。有的时候觉得很尴尬,但又有的时候觉得还蛮适合自己。
过年之前,老婆生了一个小公举。宝宝饿了,“老婆快来喂奶!”,宝宝又饿了,“老婆快来喂奶!”,宝宝睡醒了又饿了,“老婆快来喂奶!”……老婆说:“我感觉我就是头奶牛”!作为一名“奶爸”,感触颇为深刻!
自己负责的项目就像自己的孩子,孩子出事了,大家首先想到的就是这个奶爸。奶爸上阵(常常半夜爬起来),该换尿布换尿布(服务器故障),该喂奶就喂奶(bug)。如果生病了,就喂喂药,吃药不管用,就外面请大夫(疑难杂症,搞不定,请别人搞定也是搞定)。宝宝的奶粉如果出了问题,恨不得拿刀宰了那个奸商(调用了别人的服务,服务挂了,影响到了自己)。宝宝吃饱喝足,安静睡了,奶爸也可以安心睡了!
-------------------------------------------------------------------------------
下面开始干货,记录一下自己的“育儿”心得:
一. 技术选型
开发语言:java,go,php,nodejs
如开头所说,本人之前是C#程序员,C#的语法精妙,逆天的ide,.net版本更新较快,快到我都不记得最新的版本号了。那么多新特性,如果服务器上安装的始终都是.net3.5 对我们来说又有什么用呢。
开始是很抵触java的,断断续续学了好多次也没投入使用,这次必须要上了。不得不说,这么多年了,java一直在增长,稳定,成熟,几乎能解决所有问题,而且性能也不差。这大半年下来,java的水真的好深,异步、并行等等,还没接触过的好多好多。
go的好处就不说了,在学习,如果喜欢又觉得能拿捏的住,就上吧(哈,肯定不会像说的那么轻松)。
nodejs做前端太方便,也有人用来做服务端接口层。
php做前端页面,就像服务端用java一样,万金油,成熟,稳定,用的人多,资料也多。
总之一句话,没有最好的,只有最适合的!
选java是因为 我们后端的很多微服务也是用java开发的,方便调用。还有就是,不用java还能用啥。
存储:mysql, mongodb, redis
当分库都不能解决问题的时候,分表就格外重要,有一种无限扩展的感觉。之前用的oracle,只分库,没有分表,hold不住了。
存储的类型还是尽量越少越好,redis做缓存一般是绕不过去,都要用的。
团队里有很多人排斥mongodb,就不说具体原因了,redis能搞定的事情,就不要用mongodb了。
还是那句话,没有最好,只有适合,把相应的数据放到最适合的存储里。
mq: rabbitmq,activemq
你肯定会用到mq的,即使现在不会,以后肯定会的。
java框架:spring mvc
用的人多,成熟,坑都被大家踩过了,遇到问题好查资料好解决。
ibatis和struts在我们的项目中没有用到。
二. 源代码管理工具
语言选好了,框架选好了,要开始写代码了,问题来了,写好的代码用什么管理?
Git! SVN!
Git的分支真的可以解决太多问题,很强大!
SVN的tag也不错,用来做发布不错。
不管用什么工具,一定要做好规范,比如git的分支命名。时间长了分支越来越多,如果不规范一下,会乱的一团糟。
再比如分支的