架构设计-基础篇

1.简介

结构设计的根本目的是为了解决复杂度带来的问题

2.复杂度分析

2.1.高性能

  • 单机复杂度:关键部分在操作系统

    操作系统是软件系统的运行环境,操作系统的复杂度直接决定了软件系统的复杂度。操作系统和性能最相关的就是进程线程。在多线程中,操作系统调度的最小单位是线程,进程是操作系统分配资源的最小单位。

  • 集群的复杂度:主要体现在任务分配任务分解
    同一软件系统从不同的角度分解会得到不同的架构。

2.2.高可用

系统无中断的执行能力,其本质是通过“冗余”来实现

高性能增加机器目的在于扩展处理性能,高可用增加机器目的在于冗余处理单元

  • 计算高可用

其特点为无论在哪台机器上进行计算。同样的算法和输入数据,产出的结果是一致的。其复杂度主要体现在:

  • 选择合适的任务分配器
  • 任务分配器和业务服务器之间选择合适的链接方式
  • 任务分配器选择合适的分配算法
  • 存储高可用

主要针对需要存储数据的系统。存储高可用难点在于如何减少或者规避数据不一致对业务造成的影响(CAP定理)。

  • 高可用状态决策

能够判断当前的状态是否正常,且如出现异常就要采取行动来保证高可用。常见的决策方式有:

  • 独裁式:指存在一个独立的决策主体
  • 协商式:指两个独立的个体通过交流信息然后根据规则进行决策。最常用的协商式决策就是主备决策。
  • 民主式:指多个独立的个体通过投票的方式进行状态决策。例如zookeeper在选举leader。

2.3.可扩展性

是为了应对将来需求变化而提供的一种扩展能力,当有新的去求出现时,系统不需要或仅需要少量的修改就可以支持。设计具备良好的可扩展性主要体现在能正确预测变化完美封装变化
预测变化的复杂性:主要为那些设计点需要考虑可扩展性
应对变化:主要方案是剥离变化层和稳定层。

2.4.低成本

成本也是架构设计中非常重要的一个点。但是基本上低成本本质上与高性能和高可用是冲突的。

2.5.安全

从技术角度安全可分为功能上的安全和架构上的安全。

  • 功能安全:主要和编码有关,主要是防小偷
  • 架构安全:主要是防强盗

    传统的架构安全主要是依靠防火墙,防火墙最基本的功能就是隔离网络,通过将网络划分为不通的区域,制定出不通区域之间的访问控制策略来控制不通信任程度区域间传送的数据流。

2.6.规模

  • 功能越来越多导致系统复杂性指数级上升
  • 数据越来越多导致系统复杂性发生质变

3.设计原则

  • 合适原则:合适优于业界领先
  • 简单原则:简单优于复杂
  • 演化原则:演化优于一步到位,架构需要随着业务的变化不断演化

认真分析当前业务的特点,明确业务面临的主要问题,设计合理的架构,快速落地以满足业务需要,然受灾运行过程中不断完善机构,不断随着业务进行演化。

你可能感兴趣的:(设计,设计规范)