架构实战营模块 1 课后作业
1、微信业务架构图
微信业务架构图如下
2、学生管理系统架构设计
2.1 系统复杂度分析
高性能?只需管理 1000 学生,没有高性能要求。
高可用?毕业设计,可用性不必太高。
可扩展?学生数量少,不需要扩展。
安全?毕业设计,安全性不必太高。
成本?经济条件一般,要控制成本。
拆解?3 人合作完成,需要对功能进行拆解。
访问?通过公网域名访问。
分析总结:在架构设计过程中,需要关注的重点为:功能拆解、公网访问、控制成本。
2.2 备选架构一
架构说明:
为节约成本,采用内网穿透软件,实现内网应用到互联网域名的映射,生成的域名在系统集成测试和毕业设计检查时使用。在开发测试中,可以通过在内网,直接访问 Nginx 的方式进行测试。
应用部署在 Tomcat 上,使用 Nginx 作请求分发。
将系统拆分成三个子系统,以便 3 人分别开发。
数据存储在 MySQL 中,使用 MySQL 主备库保障数据高可用。
优点:应用拆分成三个子系统,开发时互不影响。
缺点:应用部署时比较复杂,如果应用要满足高可用要去的话,共需要部署 6 个实例,Nginx 的配置也比较复杂。数据库采用主备部署方式,需要做数据同步,部署较为复杂。
2.3 备选架构二
架构说明:
应用不拆分子系统,只是分成三个功能模块,以便 3 人分别开发。应用部署在 Tomcat 上,共部署两个相同的实例,通过 Nginx 实现负载均衡,实现应用的高可用。
其他部分的说明与架构一相同。
优点:应用部署简单。
缺点:开发前需要将功能模块的边界划分清晰。数据库采用主备部署方式,需要做数据同步,部署较为复杂。
2.4 备选架构三
架构说明:
为了节约成本,MySQL 不采用主备方式部署,而是通过在操作系统中设置定时任务,每天对 MySQL 中的数据进行完整备份,以实现最基本的数据高可用。
其他部分的说明与架构二相同。
优点:应用部署简单。数据库部署简单。
缺点:开发前需要将功能模块的边界划分清晰。
2.5 架构选择
建议选择架构三,原因如下:
一、合适原则
采用 Java 开发,符合三人技术水平。
毕业设计,不用申请永久域名,可以通过内网透传申请临时访问域名,控制成本。
MySQL 采用每日备份,不采用主备复制方式,满足毕业设计的要求,控制成本。
使用开源软件,开发成本低。
二、简单原则
只做功能模块拆分,不做系统拆分,开发部署简单。
应用部署两实例,采用 Nginx 做负载均衡,数据库采用定时备份,在满足性能需求的同时,应用和数据都具备最基本的高可用,满足毕业设计的需要。
三、演化原则
毕业设计,无需演化。
学生数量较少,对性能要求不高,架构设计满足系统需要。
评论