架构训练营 - 模块一作业
一、微信业务架构
二、“学生管理系统”毕设架构设计
2.1 复杂度分析
2.1.1 高性能
要支撑管理 1000 个学生,学生登录与权限验证,需要使用缓存来解决
2.1.2 可扩展
1.毕设不用太注重扩展性,由于 3 人组团开发,协调好模块责任人,以及相互之间的接口即可
2.1.3 安全
1.公网访问,需要对关键接口做权限验证
2.接口要做限流处理,防止 ddos 攻击
2.1.4 成本
1.购置两台云服务器,服务拆分部署
2.域名通过《本地配置解析 DNS》实现
2.2 业务架构图
2.3 备选架构
说明:备选架构,是我在看了《作业指导》后修改过的,第一版本《作业指导》反馈的问题我都踩了坑。
2.3.1 备选架构一:拆分部署
说明
拆分为两个子系统
利用《本地配置 DNS》来解析到对应服务器,访问对应的 tomcat
数据库:两个子系统配置自己的数据库
学生信息、登录信息采用 内存缓存
选课/考试子系统+Mysql 部署一台;Mysql+学生子系统部署一台
优点
可扩展性好,子系统内部可自形演变
可分布式部署,良好的高性能、可用性
缺点
比《备选架构二》部署复杂
2.3.2 备选架构二:单体部署
说明
所有功能都集成在一个 App,减少模块依赖外部复杂度
Web 服务使用 tomcat
数据库采用 Mysql
所有程序部署在一台计算机上
优点
易部署
调试成本低
缺点
无高可用、高性能保障
由于是一个 App,扩展性没有分布式的好
2.4 最终方案
最终选择《备选架构一:拆分部署》,理由如下:
满足答辩,架构不推荐太简单和太复杂的要求,所以拆分为两个服务,达到分布式部署的效果
2 人 Java,1 人 PHP 高手,为了降低跨语言的复杂,所以放弃 PHP
版权声明: 本文为 InfoQ 作者【Sam】的原创文章。
原文链接:【http://xie.infoq.cn/article/e16fc0b304338f0d322957a4c】。文章转载请联系作者。
评论