产品开发中的一些小经验(置顶)

一些经验,随时补充

  1. nginx可以代理tcp服务,但是无法获取用户真实ip。阿里云的SLB支持tcp协议获取用户真实ip。
  2. 高并发下采用mysql数据库,必须要做读写分离,同时充分利用缓存机制辅助数据储存。
  3. 高并发下尽可能使用批量插入功能,性能非常高。
  4. 高并发下的另一种优化思路,将sql语句放到Map中,update语句只执行最后一句,一旦有delete语句,前面的sql全部删除。
  5. 逐步将关系型数据库向非关系型数据库中转移。
  6. 尽量采用域名方式发布应用。
  7. 使用git管理项目时,最少建立两个分支——master和dev。开发人员在dev分支上进行开发,程序测试通过时,再将dev分支合并到master分支。每个版本建立一个tag。
  8. 必须准备一套和生产环境相同的测试环境。
  9. 尽量不要采用自增主键,有锁,影响效率。
  10. 在手机采用3G/4G等移动网络上网时,当来电时,电信手机3G/4G会断网,移动联通4G会断网,在断线重连后,ip很有可能发生改变,这时如果采用socket连接时,连接会关闭;同时,如果nginx采用ip hash算法找节点服务器的策略时,很有可能跑到其他服务器上。
  11. 数据库只记录业务过程中的关键部分,具体细节部分由日志体现。
  12. 手机CPU架构不同的情况下,如果APP调用了.so文件,一定要注意在相应的CPU架构文件夹(x86、x86_64、arm64-v8a、armeabi、armeabi-v7a、mips、mips64)中放置同样架构的.so文件,不然会报无法被捕获的ERROR。
  13. 开发过程中如果采用读写分离方式,一定要考虑到主从库有可能出现不同步问题,代码要针对这些问题作出判断。
  14. nginx日志文件如果过多,会导致下载功能持续返回http206的状态导致无法下载。
  15. 注册等带验证码的页面,千万不要一打开页面就直接把验证码生成出来,这样很容易被黑客利用。
  16. 阿里云slb的证书在用于ios应用的时候,必须导入根证书。slb是基于nginx实现的,因此需要导入nginx证书,但是需要注意的是,根证书和服务器证书中间不能有空行。
  17. 在时间允许的情况下,移动端所有的提示信息都要由后端给出。
  18. 项目初期一定要指定统一的业务判断代码,移动端的业务判断代码分为0:成功(一般采用0代表成功,因为0是唯一的);1:失败等等,一定要多做一个代码,提示请更新版本,做为扩展。
  19. 在产品上线初期,如果涉及提现操作,一定要加入审核机制,防止系统漏洞被黑客利用导致资金大量损失。
  20. 任何产品都要在初期考虑风险控制,尤其从资金的入口和出口方面仔细思考,防止刷单大量出现。比如:注册送现金,现金又能通过其他途径转移到其他账号中,黑客可以通过大量注册新用户的方式获得现金。
文章导航