架构学习架构设计目的和复杂度

xl717 xl717     2022-12-07     737

关键词:

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

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

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
















《从0开始学架构》-第1部分-架构基础

...到底是指什么?02架构设计的历史背景03架构设计的目的04复杂度来源:高性能  单台计算机内部为了高性能带来的复杂度  多台计算机集群为了高性能带来的复杂度05复杂度来源:高可用  高可用方案的本质&... 查看详情

架构设计之六个复杂度来源

...这篇文章中说过,架构设计的目的就是为了解决软件系统复杂度带来的问题。但是究竟复杂度有哪些呢?所以今天借此说说软件复杂度的六个来源:1.高性能;2.高可用;3.可扩展性;4.低成本;5.安全;6.规模; 一、高性能对性能孜孜... 查看详情

从零开始学架构笔记

...、高扩展   目的!!!      是为了解决复杂度带来的问题      一些重要的设计一定是和系统中复杂度较高的部分有关      如:Docker不是万能的,只是为了解决资源重用和动态分配而设计的,... 查看详情

从零开始学架构——架构设计流程

架构设计流程结合复杂度来源和架构设计原则,通过一个模拟的设计场景“前浪微博”,和你一起看看在实践中究竟如何进行架构设计。架构设计第1步:识别复杂度架构设计的本质目的是为了解决软件系统的复杂性&#... 查看详情

架构师十项能力,对标阿里p8晋升要求,学习内容梳理

...计模式分层架构网络七层、CS、BS、三层架构康威定律、复杂度隔离、防水仓设计、层自治高内聚低耦合、扩展性、可维护性、可观测性依赖规则、定义职责、选定技术栈代码抽象、集成分层架构模型——MVC、MVP、MVVM、BFF事件驱... 查看详情

精简指令集和复杂指令集的区别

...指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。CPU架构是厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示早期的CPU全部是CISC架构... 查看详情

架构设计流程

...要说说架构设计流程,围绕着这么几个方面来讲?(1)识别复杂度;(2)设计备选方案;(3)评估和选择备选方案;(4)详细方案设计;一、识别复杂度在如下两篇文章中,我阐述了六个复杂度来源。文章分别为:架构设计之六个复杂度来源 ... 查看详情

架构设计深入学习01--概论与预架构阶段

...一个比较复杂的项目后,终于有空看看书了,这次决定将架构设计的方法论进行一次系统的学习,借助温昱大师的《一线架构师》一书。我将把这次学习分成三部分,分别是概论&预架构阶段&非功能目标的方法论、概念架... 查看详情

如何衡量架构合理性

...安全为目标来衡量其合理性。架构设计本质就是解决软件复杂度带来的问题,软件复杂度表现形式有很多种,比如业务复杂度、性能复杂度、可用性复杂度、可扩展性复杂度、安全复杂度等;任何一个系统都有它侧重... 查看详情

55架构师成长之路放学别走4

判断力:准确判断复杂度在哪里执行力:使用合适方案解决复杂度问题创新力:创造新的解决方案解决复杂度问题 积累经验,拓宽视野,深度思考。 工程师1-3年,基础技能累积阶段,在别人指导下完成开发。找经典书籍... 查看详情

分布式架构相关知识

 传统单体架构分布式架构系统新功能开发需要时间容易开发和实现部署不经常且容易部署经常发布,部署复杂隔离性故障影响范围大故障影响范围小架构设计难度小难度级数增加系统性能响应时间快,吞吐量小响应时间慢,... 查看详情

arm与x86cpu架构区别

...指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。早期的CPU全部是CISC架构,它的设计目的是CISC要用最少的机器语言指令来完成所需的计算任务。 RISC和CISC是设计制造微... 查看详情

阿里架构师分享丨java架构设计的重点知识和学习路径(建议收藏)

...有互联网大厂面试真题,面试攻略,高效学习资料等学习架构呢,要掌握的东西有很多,你是不是开始担心自己一辈子都学不完呢?其实,我们也不需要一下子铺开学习所有的架构技能,重要的是把控好学习的节奏,在适当的时... 查看详情

网络架构设计之学习路线

3.1 网络架构设计网络架构设计是在云上进行业务技术架构设计的第一步,本节将结合阿里云基础网络产品介绍如何进行网络架构设计、规划和建设。3.1.1 网络产品简介进行网络架构设计时离不开网络产品的应用,所以我们先... 查看详情

软件体系架构课下作业06

...(不少于2000字)   正如本学期所学习的软件体系架构,还有很多其他的软件工程技术一样,设计模式同样起源于建筑领域他是对前人经验的总结,为后人设计与开发基于面向对象的软件提供指导方针和成熟的解决方案。... 查看详情

浅谈系统架构(代码片段)

...什么要做架构**架构设计的主要目的是为了解决软件系统复杂度带来的问题**那么系统的复杂度主要来源于哪些方面呢?其主要来源与以下几个方面1)高性能2) 查看详情

架构框架和设计模式

软件架构是系统的一个草图,阐述了各个组件之间的通信,层次划分,一旦系统开始详细设计,架构蓝图就很难甚至无法改变。例如:三层架构:一种设计软件架构的思想。通常意义上的三层架构就是将整个业务应用划分为表示... 查看详情

浅谈12306核心模型设计思路和架构设计

...春节期间,无意中看到一篇文章,文章中讲到12306的业务复杂度远远比淘宝天猫这种电商网站要复杂。后来自己想想,也确实如此。所以,很想挑战一下12306这个系统的核心领域模型的设计。一般的电商网站,购买都是基于商品... 查看详情