写点什么

模块一作业

用户头像
double蠢
关注
发布于: 刚刚

1. 微信的业务架构图

下图是根据自己理解所画的微信业务架构图。

2. 学生管理系统-毕设架构设计

题目:假设今年学校毕业设计要求提升,要求做真正可运行的学生管理,学院对毕设的具体要求如下:

1)要求可以通过公网域名访问;

2)要求至少 3 人合作完成;

3)能够支撑管理 1000 个学生;

4)答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案。

你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:

1)大家都会 Java,但是有一个 PHP 高手;

2) 大家经济条件一般。

作业要求

1) 对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。

2) 使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。

3) 给出你选择的最终方案以及选择的理由。


我的架构设计如下:

面向复杂度架构设计,首先根据需求分析复杂度。

高性能复杂度分析

只要求支持 1000 个学生,单台服务器性能上几乎没有任何压力。可以不用做负载均衡,Web 服务器使用 Nginx 绰绰有余。

高可用复杂度分析

可以容忍个别数据丢失,由学校管理员补录丢掉的数据,但是不能全部丢失。需要保证数据不能全部丢失,就需要数据高可用。

可扩展复杂度分析

因为不是外部做的, 不是一次性交付后,能撑个 3-5 年就不管了。我觉得是既然要求真正可运行,万一真把这个毕设系统拿去实际运行,还是考虑下后期需求的变化,接手人员的扩展开发要方便。

人力成本分析

大家都会 Java,但是有一个是 PHP 高手。考虑到项目要求至少 3 人而合作完成,如果选用 PHP 作为系统开发语言,则另外 2 人就只能干杂活了。所以,系统主开发语言一定是选 Java,大家都会 Java 就可以合作开发,充分利用所有开发资源。

总结:

高性能:

高可用: 数据高可用

可扩展: 最好有

人力成本: 3 人 Java


备选架构 1:

备选架构 1 基本和讲课中的一样。数据主备。业务拆分成多个子系统。


备选架构 2:

备选架构 2 也基本和讲课中的一样。数据主备。业务冗余,通过 nginx 进行负载均衡,分配业务请求到业务服务器。


备选架构 3:

备选架构 3 是基于备选架构 2 的上云的架构设计方案,数据主备采用云上的 Mysql 产品,业务服务器也放到云上。公网域名访问通过云 DNS 服务。


我选择备选架构 3。选择架构 3 的原因:

1)合适原则

3 个学生经济条件都一般,用云服务经济实惠,不用买很多服务器。而且依赖云上的 DNS 服务,比较容易解决公网域名的问题。

2)简单原则

相对来说三个人开发的系统,没有必要采用微服务。不需要拆分的那么细,因为性能要求也不高,MVC 就能满足 1000 个学生的访问性能。3 个人进行模块开发的分工就可以了。

3)演进原则

目前只需要支持 1000 个学生,系统架构相对简单;后续如果需要支持更多学生,可以扩展成微服务;如果接入的学校数量变多,要扩展成异地多活,逐渐增加复杂度即可。

 

架构实战营

用户头像

double蠢

关注

还未添加个人签名 2019.08.13 加入

还未添加个人简介

评论

发布
暂无评论
模块一作业