文章目录
App后台开发
后台基础
App后台两个重要作用
- 远程存储数据
- 消息中转
App和App后台的通信
提炼API接口
- 业务逻辑思维导图
- 功能—业务逻辑思维导图
- 基本功能模块关系
- 功能模块接口UML
- 在设计稿标注API
- 编写API文档
选择合适的数据库
(Redis、MongoDB、MySQL)
- 读写数据的区别
- Redis的数据存放在服务器的内存
- MongoDB同时使用硬盘和内存,其使用了操作系统提供的MMAP(内存文件映射)机制进行数据文件的读写
- MySQL的数据是放在硬盘中,MySQL缓存的是查询的结果。
- 查找数据的区别
- Redis的数据是基于“键值对”存储。读写速度快。
- MongoDB和MySQL中,数据都有一个id(索引)。查找数据,有两种模式,知道id或索引,效率高,反之,效率低。
- 适用场景
- Redis:数据读写速度快,但只存放在服务器的内存中。所以读写频率高的数据一般放到Redis中,比如,每次API调用都需要验证身份信息,这些身份信息就适合存放到Redis中。
- MongoDB:网站数据,大尺寸、低价值的数据,存储地理坐标位置
- MySQL:事务性的系统,需要复杂SQL的问题
消息队列
消息(Message)是指在应用之间传送的数据。
消息队列(Message Queue)是一种应用间的通信方式。
但不需要立即获得结果,但是并发量又无限大的时候,差不多就是需要使用消息队列的时候了。(发送邮件、发送短信、推送消息等)
消息队列处理流程:
分布式服务
远程服务
把重复实现的模块独立部署为远程服务,新增的业务调用远程服务所提供的功能实现相关的业务,不依赖于里面具体的代码的实现。
远程服务实现
-
REST
定义:
REST(Representational State Transfer表现层状态转化),它指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful的。
特点:
- 每一个URL代表一种资源(图片、音频、视频等)
- 客户端和APP后台之间,传递这种资源的某种表现层。(表现形式JSON、XML、TXT等)
- 客户端通过4个HTTP动词(GET、POST、PUT、DELETE),对后台资源进行操作
-
RPC
远程过程调用协议(就是像调用本地方法一样调用远程方法)。通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
App 后台架构的演进
高性能
从App发出请求到App后台返回响应结果的过程
高可用
保证为App提供7*24小时服务的后台。
对应用服务器而言,多台应用服务器组成一个集群,由负载均衡设备把请求按照一定的策略分发到集群中的每个应用服务器。
保证策略有效的核心是应用层必须是无状态(任意一台应用服务器上不会保存用户的状态信息)的,防止用户信息丢失。
可伸缩
应用服务器的可伸缩性:是指当访问量增大后,往集群中添加服务器。
数据存储的可伸缩性:是指文件数据(分布式文件存储软件)、缓存数据(改进的路由算法)、数据库(分库,分片策略)
可拓展
核心是减少模块间的耦合度,每个模块都尽量少依赖其他模块。
- 消息队列:通过动态增减消息,消息的生产者和消费者分离
- 分布式服务:把业务中可复用的模块抽离成一个独立的服务
- 开放时API:自身的服务封装成开放式API供其他开发者调用
安全性
保证用户的核心数据不被非法人员盗窃。
架构的演进
单机部署
分布式部署
分布式缓存架构