挣闲钱
逻辑架构
逻辑架构由四层模型(表示层、业务层、服务层、持久化层)构成
表示层
- 用户端使用 Web 作为表示层, 提供问卷系统、问答系统、用户系统、闲钱交易系统
业务层
- 服务器充当业务层的角色, 为表示层的各个子系统提供相应的服务模块, 根据表示层系统来调用不同的服务模块
服务层
- 从各种数据访问对象检索和创建模型, 更新各个存储对象的值, 执行特定于程序的逻辑和操作等
持久化层
- SQLite 提供了数据的持久化服务
架构问题
可靠性和可恢复性
- 因素:浏览器使用过程中出现访问服务端中断问题并进行恢复
- 度量和质量场景:当浏览器访问服务端中断时, 在正常的工作环境下, 如果在15s内检测到其恢复, 则重新建立连接
- 可变性:在能够重新建立连接之前, 可以在客户端进行简化服务
- 该因素对涉众、架构以及其他因素的影响 :浏览器使用者的访问数据可能会发生丢失, 无法传递给服务端
- 对于成功的优先级 :高
- 困难或风险:中等
可支持性和可适用性
- 因素:支持多种可变的第三方服务(支付系统等)
- 度量和质量场景:当浏览器访问第三方系统时可正常建立连接
- 可变性:对于不同的第三方服务需要可连接的接口
- 该因素对涉众、架构以及其他因素的影响 :提高浏览器的可扩展性
- 对于成功的优先级 :中等
- 困难或风险:中等
解决方案说明
如何提高服务端性能
- 提升服务端性能
- 增加CPU数量
- 增加内存
- 增加程序使用线程数
- 限制同时服务的最多用户数, 避免服务端负载超荷
- 将动态数据存储到缓存文件中, 前端直接调用这些文件, 而不必再访问数据库
- 比如已获取到的问卷可以保存在缓存中, 不必重复向服务端请求
- 优化数据库的查询SQL, 避免使用代价高昂的查询, 每次查询只返回自己需要的结果; 避免短时间内的大量SQL查询
- 数据库适当建立索引
- 数据库定期备份, 当数据库出现操作失误或系统故障导致数据丢失时可以恢复数据
逻辑视图
物理视图
技术选型
前端:VUE
后端:Django
路由:nginx + uwsgi
数据库:SQLite
API 规范:REST API
API 文档:Swagger