佰草集CRM服务端优化经验——致曾经的小白(一)
来源:互联网 发布:怎么可以做淘宝模特 编辑:程序博客网 时间:2024/06/01 14:25
2014年10月,当时我还在和几个兄弟一起创业,10月底我们接到了一个外包项目就是题目中介绍的这个佰草集CRM项目,项目是上海家化集团为旗下品牌佰草集开发一款移动端的CRM系统。拿到这个系统,对方要求我们到上海驻场开发,然后我们就派出了2位Android开发的伙伴去上海了,过去大概半个月开始数据集成了我也来到了上海。
刚开始接触这个项目我们是抱着尽快完成的心思来做的,现目前国内的外包开发大部分都是注重功能的实现往往忽略了性能,但是当系统开始使用的时候数据量急速上升,性能就显得特别突出,在后来我就被这个问题给坑了。记得是在年前我们就按照对方的要求完成了这个系统,过年后我们团队也被对方整体挖过来专门从事移动CRM的开发。
先大概介绍一下这个系统,系统分为前端(APP,IOS) 和后端(API )和 数据交互(API和CRM中央数据库交互信息),其中我负责整个后端 和数据交互的开发。第一版中我们是怎么快怎么来的,在这里就我就说一下当时做的很不合理的地方。
场景一:在一个循环中每次循环都去查询数据库
这个可能是大部分刚刚入门的程序员都会惯性的使用这种方式,但是数据量到了一定的大小就会很慢,简单的例子循环10000次,每次访问数据库大概需要30ms,总共就需要30s,到了后期这种写法导致的访问速度会大幅下降。
解决办法:参用局部缓存的方式,把循环中使用到的数据提前拿到,在循环中直接使用缓存中的查询到的数据,一般的采用这种方式后性能至少可以提升10倍,数据量大的时候可以提升几百到几千倍。基于这一点可以把数据库中保存的一些不经常发生变化却经常使用的数据采用缓存的形式保存在内存中,使用这些数据的时候不去查询数据库直接在内存中查询。采用这种方式优势:速度会提高,节省io时间;缺点:占用内存
场景二:平衡服务器间性能
在本项目中采用数据库服务器和应用服务器分开的策略,分为数据服务器,应用服务器。项目上线一段时间后发现应用相应时间过长,开始排查这个问题,原来是应用服务器计算比较多资源消耗大的缘故,同时发现数据库服务有5G的内存资源被闲置
解决办法:利用闲置的数据库资源进行计算,可以把原本在应用服务器消耗资源较多计算以存储过程的形式运行在数据库服务器。这样可以减少应用服务器压力,缩短响应时间。(采用这种方式一定要谨慎,不要弄巧成拙)
时间有限就先到这里
- 佰草集CRM服务端优化经验——致曾经的小白(一)
- 【VC经验】偶的小经验一
- 参加ThoughtWorks实训——学习经验技巧的小分享(一)
- 回顾曾经写过的c语言小代码(一)
- 关于研究生入学考试政治复习的一些经验(来自于一名曾经经历过风雨的考研人)
- db2优化经验(一)
- Dynamics CRM 2013 初体验(14):重构后的服务端
- Dynamics CRM小窍门——表单的参数
- Dynamics CRM小窍门—— 关系的字段映像
- 展望——量化未来真的能跑赢曾经的历史么?(一)
- 刚开始学习DNN的一点小经验(一)
- toolBar开发的一点小经验(一)
- 托管crm的模型研究(一)
- oracle优化经验一
- DSP优化经验一
- 我曾经的经典一
- CRM分析(一) 认识CRM
- CRM不可告人的小秘密
- 【第六章】 AOP 之 6.3 基于Schema的AOP ——跟我学spring3
- 跟我一起写 Makefile(六)
- Python 对图片进行人脸识别
- android中DatePickerDialog只显示年月
- Egret)Demo - eui state自定义状态的使用
- 佰草集CRM服务端优化经验——致曾经的小白(一)
- iOS高德定位和自带逆地理编码进行坐标转换
- 好的软件架构设计
- jquery的animate设置样式overflow:hidden的解决方法
- Andriod之SHA-256,MD5加密字符串
- C++ 编写一个选课系统
- 应用内文件预览
- windows7 android studio jni 例程
- Linux devfreq