• 架构学习(二)架构设计目的和复杂度


    架构设计的真正目的
    为了解决软件系统复杂度带来的问题。

    复杂度来源:高性能、高可用、可扩展性、低成本、安全、规模

    1. 高性能
    软件系统中高性能带来的复杂度主要体现在两方面,
    一方面是单台计算机内部为了高性能带来的复杂度;
    另一方面是多台计算机集群为了高性能带来的复杂度。
    单机复杂度
    计算机内部复杂度最关键的地方就是操作系统。计算机性能的发展本质上是由硬件发展驱动的,尤其是 CPU 的性能发展。著名的“摩尔定律”表明了 CPU 的处理能力每隔 18 个月就翻一番。
    操作系统和性能最相关的就是进程和线程。
    让多个 CPU 能够同时执行计算任务,从而实现真正意义上的多任务并行。目前这样的解决方案有 3 种:SMP(Symmetric Multi-Processor,对称多处理器结构)、NUMA(Non-Uniform Memory Access,非一致存储访问结构)、MPP(Massive Parallel Processing,海量并行处理结构)。其中 SMP 是我们最常见的,目前流行的多核处理器就是 SMP 方案。
    在做架构设计的时候,需要花费很大的精力来结合业务进行分析、判断、选择、组合,这个过程同样很复杂。举一个最简单的例子:Nginx 可以用多进程也可以用多线程,JBoss 采用的是多线程;Redis 采用的是单进程,Memcache 采用的是多线程,这些系统都实现了高性能,但内部实现差异却很大。
    集群的复杂度
    通过大量机器来提升性能,并不仅仅是增加机器这么简单,让多台机器配合起来达到高性能的目的,是一个复杂的任务。

    • 任务分配:指每台机器都可以处理完整的业务任务,不同的任务分配到不同的机器上执行。能够突破单台机器处理性能的瓶颈,通过增加更多的机器来满足业务的性能需求。
    • 任务分解:业务越来越复杂,单台机器处理的性能会越来越低。为了能够继续提升性能,我们需要采取第二种方式:任务分解。
      简单的系统更加容易做到高性能;
      可以针对单个任务进行扩展。

    2.高可用
    定义:系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计的准则之一。
    本质上都是通过“冗余”来实现高可用。

  • 相关阅读:
    HTTP断点续传 规格严格
    Java Shutdown 规格严格
    linux 命令源码 规格严格
    JTable调整列宽 规格严格
    linux 多CPU 规格严格
    Hello can not find git path 规格严格
    Kill 规格严格
    拜拜牛人 规格严格
    Swing 规格严格
    Debugging hangs in JVM (on AIX but methodology applicable to other platforms) 规格严格
  • 原文地址:https://www.cnblogs.com/xl717/p/13354203.html
Copyright © 2020-2023  润新知