App后台开发运维和架构实践
App后台基础技术
从App业务逻辑中提炼API接口
业务逻辑思维导图
功能 - 业务逻辑思维导图
基本功能模块关系
- 人有哪些功能模块
- 事有哪些功能模块
- 人和事之间的关系又有哪些模块 *
功能模块接口UML
编写在线API测试文档
- Swagger-UI
设计稿标注API
设计API的要点
- 根据对下设计API
- API的命名
- API的安全性
- API返回的数据
- 图片的处理
- 返回的提示信息
- 在线API测试文档
- 在App客户端启动时调用一个API获取必要的初始化信息
- 关于API的版本升级问题
如何选择合适的数据库产品
Redies, MongoDB, MySQL 读写数据的区别
- Redies 内存
- MongoDB 硬盘+内存
- MySQL 硬盘
Redies, MongoDB, MySQL 查找数据的区别
- Redies 键值对
- MongoDB 知道id或者索引, 不知道id或者索引
- MySQL 知道id或者索引, 不知道id或者索引
Redies, MongoDB, MySQL 适用场景
Redies 内存价格高, 适合的是读写频率高的数据, 如需要验证的用户的身份信息.
MongoDB 适合的有网站数据, 大尺寸低价值的数据, 高伸缩的场景, 存储地理坐标的数据. 不合适的有高度事务性的系统(银行系统, 会计系统), 传统的商业智能应用, 需要SQL的问题.
MySQL 适合的有事务性的系统, 需要复杂SQL的问题.
如何选择消息队列软件
为什么要用消息队列?
消息队列适用的场景有 发送邮件, 发送短信, 推送消息.
消息队列的工作流程
- 队列服务器
- 队列生产者
- 队列消费者
常见的一些消息队列产品
- RabbitMQ
- Redis
- ZeroMQ
- ActiveMQ
是用分布是服务实现业务的复用
巨无霸系统的危害
- 维护上的麻烦
- 代码管理上的麻烦
- 数据库连接资源的耗尽
远程服务的优点
独立, 影响小
远程服务的实现
- REST(REpresentational State Transfer), 表现层状态转化
- RPC(Remote Procedure Call Protocol), 远程过程调用协议
开源的RPC库: HProse, Dubbo, Dubbox.
搜索技术入门
一个简单的搜索例子
搜索的基本原理
- 分词
- 倒序索引
常见的搜索软件介绍
- Lucene
- Solr
- ElasticSearch
- Sphinx
- CoreSeek
定时任务
场景: 定期清理一下项目产生的垃圾文件, 某段时间执行一些业务逻辑.
Linux 定时任务 Crontab
在后台轻松管理各种各样的定时任务
- Quartz (JAVA)
- APScheduler (Python)