【笔记】《app后台开发运维和架构实践》
参考点:
- app后台开发人员在设计稿上标注哪个界面调用了哪个api。(仍是根据对象设计api,并非根据页面)
- 返回数据空值不要null,app端易报错,PHP返回字典及数组均是array.
- 客户端不同图片尺寸可以在数据库中只保存一份原图:在客户端的请求中带上图片尺寸需求,即使不同版本的需求不同,也可以数据库不需要记录多个图片
- API的版本升级:V2版本controller继承V1版本controller,只重写(同参同名)方法
API要表明应该返回的数据字段和格式等。测试就可以先测接口
Redis,MongoDB,MySQL对比
- Redis数据只存放在内存,读写速度开,适用于读写频率高的数据,但成本高
- MongoDB:适用于网站数据,实时性网站数据易复制及具有高度伸缩性。适用于LBS。适用于大尺寸底价值的数据。不适用于复杂计算
- MySQL:事务性的系统(转账),复杂SQL问题
搜索:实现的关键是分词和倒序索引。每行数据的关键字建立映射表,每个关键字出现在哪行记录下来。搜索只需要查映射表。
通信安全
- 涉及安全性的API要使用https协议
- 使用token来代替每次都用账号密码输入
- token加在URL中,明文不安全,处理办法:和请求url一起加密,生成sign来请求。(URL签名只能保证token不泄漏)
- 防止url被截获后不断请求(百度也有说防止重复请求、按照调用顺序被处理、需要精确获取客户端时间,防止缓存等原因):添加时间戳,进行相隔时间对比。(保证后台与app时间同步,启动时获取后台时间,保存时间差)
除上述之外还要使用AES对称加密,保障安全,更安全的方式有:非对称加密DES,第三方工具加密,使用自定义通信协议传输敏感信息,使用自主研发的空间输入密码,密码不保存在app端。
Nginx
高性能的HTTP和反向代理服务器,占用内存小,并发能力强
- Promise:异步编程
- Nodejs是一个让JS运行在服务器端的开发平台