从0开始学架构(一)架构设计的目的

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lwl2014100338/article/details/84445235
目的

架构设计的主要目的是为了解决软件系统复杂度带来的问题


简单的复杂度分析案例
需求

设计一个大学的学生管理系统,基本功能包括登录、注册、成绩管理、课程管理等,当我们面对这样一个系统进行架构设计的时候,首先我们应识别其复杂度在哪里


性能

一个学校学生大约1—2万人,学生管理系统访问频率不高,因此性能方面并不复杂,存储用MySQL完全胜任,缓存都用不到,Web服务器用Nginx绰绰有余


可扩展性

学生管理系统的功能相对稳定,可扩展性不大,因此可扩展性也不复杂


高可用

学生管理系统即使宕机2小时,对学生管理工作影响不大,因此可以不做负载均衡,更不用考虑异地多活这类复杂的方案。
但是,如果学生的数据全部丢失,修复是非常麻烦的,只能靠人工逐条修复,这个很难接受,因此需要考虑存储高可用。我们需要考虑多种异常情况:机器故障、机房故障,针对机器故障,我们需要设计MySQL同机房主备方案;针对机房故障,我们需要设计MySQL扩机房同步方案


安全性

学生管理系统存储的信息有一定的隐私性,例如学生的家庭情况,但并不是和金融相关,也不包含强隐私信息,因此安全性方面只做3件事就能满足基本要求:Nginx提供ACL控制、用户账户密码管理、数据库访问权限控制


成本

由于系统很简单,基本上几台服务器就能搞定,对于一所大学来说完全不是问题,无需太多关注


总结

通过上面的分析,可以看到这个方案的主要复杂性体现在存储可靠性上,需要保证异常的时候,不要丢失所有数据即可,对应的架构如下
在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/lwl2014100338/article/details/84445235
今日推荐