美文网首页
架构设计01

架构设计01

作者: 木石文若 | 来源:发表于2019-06-10 11:25 被阅读0次

    一、掌握专业名词

    系统

    image.png
    举例:
    image.png
    模块和组件
    image.png

    举例:


    image.png fa2b3da13c4f2b65ef735f83cb3056ba.png 32a9e48ab49294977d8023fb0218fb2a.png

    框架与架构
    框架是一种开发规范。

    image.png

    架构(Architecture):
    1、架构需要明确系统包含哪些个体,这些个体可以是子系统、组件、模块。
    2、架构需要明确个体运作和协作的规则。

    二、架构设计历史

    软件架构发展史

    image.png

    三、分析一个简单的架构(来自极客时间)

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

    性能

    • 总共有多少用户会访问这个系统?
    • 访问频率是多高?
    • 访问峰值,并发多少?

    一个学校的学生大约 1 ~ 2 万人,学生管理系统的访问频率并不高,平均每天单个学生的访问次数平均不到 1 次,因此性能这部分并不复杂,存储用 MySQL 完全能够胜任,缓存都可以不用,Web 服务器用 Nginx 绰绰有余。

    可扩展性
    学生管理系统的功能比较稳定,可扩展的空间并不大,因此可扩展性也不复杂。

    高可用------业务连续性+数据高可靠

    • 为什么要高可用?主要考虑业务连续性和数据高可靠。
    • 到底要多高?是1分钟都不能停,还是可以停1个小时?是数据绝对不能丢,还是可以丢一部分数据然后其它方式修复?对于高可用,千万不能说越高越好,一定要结合业务,例如,绝大部分内部系统的宕机容忍时间可以是一个小时。

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

    安全性

    • 有隐私性高或者企业核心机密数据么?
    • 数据泄露造成的危害有多大?

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

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

    通过我上面的分析,可以看到这个方案的主要复杂性体现在存储可靠性上,需要保证异常的时候,不要丢失所有数据即可(丢失几个或者几十个学生的信息问题不大),对应的架构如下:

    image

    相关文章

      网友评论

          本文标题:架构设计01

          本文链接:https://www.haomeiwen.com/subject/rriaxctx.html