本文是一个搜狐视频的大神wz给的文档,供参考
转载请注明出处 http://blog.csdn.net/tjpu_lin/article/details/38167753
==========================================
技术选型:
1、通信框架:dubbo文档地址:https://github.com/alibaba/dubbo
2、管理:
项目管理使用maven、代码管理使用git或者svn
3、前端服务使用nginx
4、应用服务器使用tomcat或者resin或者jetty
5、缓存使用memcached或者redis(前者数据单一,后者数据结构丰富,支持主从)
6、数据库使用mysql或者mongodb
7、服务端框架使用json + spring mvc + spring + mybatis
web负责做日志统计、鉴权、安全处理
service负责业务逻辑处理(注意好和钱相关的数据)
客户端,网页上面使用jquery,手机使用android或者swift
8、数据方面,前期可以通过web端的日志来做数据统计,使用shell分析将结果入库,后期可以考虑hadoop
细节注意:
1、打开各种连接时候,一定要有try{}catch{}finally{},finally里面包含关闭链接操作,防止内存泄露
2、非测试代码禁止出现System.out.println、e.printStackTrace,禁止出现System.gc
3、经常修改的节点开关要放到数据库当中,一般配置放到配置文件中,固定全局常量加上final,局部变量非语法要求情况下不需要加final
4、如果集合做为全局进程缓存,那么需要控制其长度和加上失效时间,适当引入进程缓存,比如ehcache
5、实现底层服务接口时候,不要已知上层服务的存在,实现接口时候必须加上对参数的验证
6、代码中的setter、getter方法写在最下面,private方法写在前者的上面,public的下面
7、代码尽量精炼,如果业务复杂,代码实现上要写上实现步骤的注释,能提炼出的公共方法尽量抽取出来
8、尽量减少服务直接通信次数,包括http、rmi、cache操作等
9、测试服把jvm 参数-xms -xmx开小些
10、远程传输的对象必须经过序列化
其它方面注意:
技术方面:
1、做好各个服务器的主从分配,重启或者服务器宕机时候也可以保证服务7 * 24 小时服务
2、服务必须可以横向扩展,如果访问量增加可以随时增加服务
3、删除文件时候一定要注意
4、建一个公共的wiki,养成写文档,分享知识的习惯
5、如果时间允许,要养成互相review代码的习惯
非技术方面:
1、产品或者其它人提出需求,一定要先理解清楚并和对方沟通是否有意义去做,保证每个需求都有意义,如果需求实现会影响到性能问题,和产品协调
2、主动去想一些必要的需求和问题,告诉自己,我负责这个东西,我要对它负责任,不断优化,完善系统和程序
3、团队开发一个产品的时候,不要想我只负责某一块把这个东西负责好就行,凡事要从团队角度考虑,要把自己功能完成基础上帮助团队其他人解决困扰