外包学生管理系统架构
1. 业务背景
随着学校的发展和信息化建设的工作展开,学校需要建设一个学生管理平台,让教职工能更快、更好的管理学生信息,也能让学生更好的查询自己的相关信息。
该平台需要具备如下基本功能:
学生信息管理
学生的课程管理
2. 约束和限制
平台必须在 9 月 1 日开学前正式上线,并实现先有数据迁移到平台中。
必须采用云服务器,保证服务的高可用。
平台必须支持 3w 师生同时在线。
每年的运维成本不能高于 20w
3. 总体架构
3.1 架构分析
高性能:师生数量为 3w 左右,总体性能压力不大。
高可用:学生管理系统宕机小段时间对学校的运营、管理影响不大,但是必须保证数据不可丢失,针对抢课、考试这类特殊场景需要保证服务不崩溃。
可扩展:后期可能涉及一些学生成绩、课程相关的分析功能模块。
3.2 总体架构
整个平台拆分为五大模块:网关层 nginx、学生子系统、课程子系统、账户权限子系统和数据库存储。
数据库采用主从配置,保证数据的高可用。
4. 详细设计
4.1 核心功能
学生管理
课程管理
4.2 关键设计
所有的请求首先经过 nginx 网关,先从权限子系统获取当前用户有没有资源的访问权限,没有访问权限则返回,有返回权限才转发到相应的子系统中。
数据库主从同步时须采用同步操作。
4.3 设计规范
MySQL 必须使用 Innodb 存储引擎。
接口规范遵循 restful。
所有接口操作必须实现幂等。
5. 质量设计
可测试性:
每个子系统内部使用单元测试+mock 进行测试。
子系统对外提供的功能,通过 http 接口工具进行测试。
可维护性:子系统的维护通过配置文件进行管理。
可观测性:使用云服务器厂商提供的控制台对系统进行监控。
6. 演进规划
第一期:实现学生信息管理、权限管理和课程基本管理功能。
第二期:实现考试、成绩统计分析功能。
评论