【架构设计】总览(更新中)

news/2025/2/21 7:43:40

技术人员的职业规划和发展:不仅要关注专业技术(术),还要有自己的分析能力(道),并且要懂得顺势而为(势)。很多事情你看似简单,但其中会有很多思考(认知层)、执行(技术层)和借势(战略层)的操作,不是每一个人都能做好的。
架构设计的关键思维是判断和取舍,程序设计的关键思维是逻辑和实现。

背景

架构设计的主要目的是为了解决软件系统复杂度带来的问题。分布式架构解决了“单点”和“性能容量”的问题,但却新增了系统设计,以及管理和运维的问题。

  • 问题一:异构系统的不标准问题
  • 问题二:系统架构中的服务依赖性问题
  • 问题三:故障发生的概率更大
  • 问题四:多层架构的运维复杂度更大
    在这里插入图片描述

复杂度分析

高性能

  • 单机复杂度:计算机内部复杂度最关键的地方就是操作系统。操作系统和性能最相关的就是进程线程
  • 集群的复杂度:任务分配、任务分解

高可用

系统的高可用方案五花八门,但万变不离其宗,本质上都是通过“冗余”来实现高可用。通过冗余来实现的高可用系统,状态决策本质上就不可能做到完全正确。

  • 计算高可用
  • 存储高可用

可扩展性

  • 正确预测变化
    “2年法则”:只预测2年内的可能变化,不要试图预测5年甚至10年后的变化。
  • 完美应对变化
    方案一:提炼出“变化层”和“稳定层”
    方案二:提炼出“抽象层”和“实现层”
    1写2抄3重构原则

低成本、安全、规模

  • 低成本:往往只有“创新”才能达到低成本目标
  • 安全:功能、架构
  • 规模:规模带来复杂度的主要原因就是“量变引起质变”

模块一:架构原理与技术认知

原则:合适原则、简单原则、演化原则
技术认知:

  • 架构设计认知:立足于点、连接成线、扩散成面
    架构拆分->系统解耦->职责单一->开发效率
  • 分析问题的认知:业务方、管理者和技术人员
  • 能力边界认知:模块或者子系统层面、全系统层面、某一领域层面
    架构设计方案:
    复杂来源(识别复杂度)->解决方案(设计备选方案)->评估标准(评估和选择备选方案)->技术实现(详细方案设计)

模块二:分布式技术原理与设计

CAP 理论:C(Consistency)是数据一致性、A(Availability)是服务可用性、P(Partition tolerance)是分区容错性。C、A、P 只能同时满足两个目标,而由于在分布式系统中,P 是必须要保留的,所以要在 C 和 A 间进行取舍。假如要保证服务的可用性,就选择 AP 模型,而要保证一致性的话,就选择 CP 模型。
知识体系包括四个角度:

  1. 存储器,即分布式存储系统,如 NoSQL 数据库存储;
  2. 运算器,即分布式计算,如分布式并行计算;
  3. 输入输出,即分布式系统通信,如同步 RPC 调用和异步消息队列;
  4. 控制器,即调度管理,如流量调度、任务调度与资源调度。
    一致性
  • 事务一致性
  • 分布式锁
    微服务
  • RPC

模块三:中间件常用组件的原理和设计问题

  • RPC 远程调用
  • MQ(消息队列)
    (系统解耦,流量削峰)

模块四:数据库原理与设计问题

逻辑数据集->分片->冗余->一致性

  • MySQL

模块五:分布式缓存原理与设计问题

  • Redis

模块六:互联网高性能高可用设计问题

  • 高可用:SLA
    • 可评估
    • 可监控
    • 可保证:系统容错、降级

http://www.niftyadmin.cn/n/5860475.html

相关文章

设计模式教程:装饰器模式(Decorator Pattern)

1. 什么是装饰器模式? 装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许在不修改对象结构的情况下,动态地为对象添加额外的功能。装饰器模式使用组合(而不是继承)来扩展对象的功能&a…

【文本】词嵌入经典模型:从one-hot到BERT

【文本】词嵌入经典模型:从one-hot到BERT one-hot编码(独热编码): 根据词表的所有词构建一个向量特征。每一个文段中每个单词有一个词向量(二进制且只有一位为1) — 稀疏、缺乏语义(father&am…

uView UI 在 UniApp 中的集成与配置

说明 uView UI 是一款支持多平台的高效开发框架,能够极大地提升开发效率,尤其是在跨平台开发时。在本篇文章中,我们将详细介绍如何在 UniApp 中集成 uView UI,如何配置环境、封装 API 请求、配置路由、以及常用的 uView 组件的使…

linux进程的内存空间映射(段)

Linux进程的内存空间映射 在 Linux 中,每个进程的内存空间是一个虚拟地址空间,操作系统通过内存映射机制(Memory Mapping)将不同的内存区域分配给不同类型的资源和需求。内存空间映射决定了进程如何访问不同类型的内存&#xff0…

力扣hot100 ——搜索二维矩阵 || m+n复杂度优化解法

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 解题思路: 借助行和列有序特性,不断按行或者列缩小范围;途中数字表示每…

C++ Primer 库-IO类

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

模电知识点总结(4)

1.FET就是电压控制器件,BJT就是电流器件。 2.在甲类、乙类与甲乙类功率放大电路中,效率最低的电路为甲类。 3.一个输出功率为10W的扩音机电路,若用乙类推挽功放,则应选额定功耗至少应为2W的功率管2只。 4.在甲类、乙类与甲乙类…

java练习(33)

ps:题目来自力扣 最强回文子串 给你一个字符串 s&#xff0c;找到 s 中最长的 回文 子串。 class Solution {public String longestPalindrome(String s) {if (s null || s.length() < 1) {return "";}int start 0, end 0;for (int i 0; i < s.length();…