第一章 入门
App和后台的沟通:常用HTTP协议, JSON格式;除非是手游和聊天这种延迟要求高的才需要TCP长连接;后台API可参考新浪微博,百度地图等开放平台的API格式;
开发语言:不同的功能,可以用不同的语言,例如: PHP做网站,Golang/Erlang做推送服务器,Java做业务逻辑;
第二章 基础技术
2.2 设计API
- 根据对象设计API,而不是根据UI来设计API (参考成熟的开放平台API)
- API返回值禁止null: 字符串空值使用""不要用null;数组空则使用空数组不要使用null
- 图片:存储唯一一份在后台服务端,根据客户端需要实时生成所需大小的图(客户端和服务器端可都有cache);最好使用七牛或阿里云等云服务;
- API返回码,由客户端App来决定显示给用户的字符串等信息;
- 考虑API版本升级;
2.3 数据库
Redis: <Key, Value>, 全内存,可持久化防宕机;做缓存使用;或高频访问的数据库;
MongoDB: 扩展性好;适合Big Data;适合存储地理坐标的数据;
MySQL: 适合事务性应用(银行);SQL支持全面;
2.4 消息队列
RabbitMQ, Redis, ZeroMQ, ActiveMQ, Kafka
2.5 使用分布式服务实现业务的复用
- REST: 每个URL代表一种资源; 客户端通过GET/POST/PUT/DELETE这4个动词对App后台进行操作;App向后台的请求是无状态了,适合云计算环境;
- RPC: Hprose, Dubbo, Dubbox等
2.6 搜索功能
Lucene, Solr, ElasticSearch, Sphinx, CoreSeek, ......
支持拼音:把拼音也作为倒排索引的Key
2.7 定时任务
LinuxCrontab; Java的Quartz;Python的APScheduler
第三章 后台核心技术
3.1 用户验证方案: 使用HTTPS协议;用户登录方案
3.2 App通信安全:URL签名;AES对称加密;通信安全
3.3 短信服务: 建议接入至少2家短信平台; 1家不可用时,立马切换到使用另一家;
3.4 处理表情的一些技巧
3.5 高效更新数据(微博等Feed流数据):
- App客户端轮询后台服务器 (耗流量,增大后台服务器压力)
- 推送:推送消息发送:后台服务器-->推送服务器-->App后端;App后端根据自身状况,可选的向后抬服务器发送数据索取请求;
- 增量更新数据:后台服务器中,记录每条数据的update_time;App客户端每次发送请求要附带上上次请求的时间戳;后台服务器只返回这个时间戳之后的内容
3.6 图片处理:两级缓存(App客户端缓存;图片服务器端缓存);尽量使用云服务,有现成的图片大小变换功能,速度快!
3.7 音视频处理:FFmpeg; 七牛等云服务
3.9 文件系统:首选云服务;自己搭可以用FastDFS; 租用CDN加速客户端;
3.10 ELK日志分析平台:Logstash+ElasticSearch+Kibana
3.11 Docker