什么是系统设计 – 学习系统设计
系统设计被定义为为系统的不同组件、接口和模块创建架构并提供有助于在系统中实现这些元素的相应数据的过程。系统设计是任何分布式系统设计背后的核心概念。
系统设计涉及识别数据源,它是描述、创建和规划框架以满足特定业务的必要性和先决条件的直觉。
为什么要学习系统设计?
在任何开发过程中,无论是软件还是任何其他技术,最重要的阶段是设计。如果没有设计阶段,您就无法跳转到实现或测试部分。系统也是如此。
系统设计不仅是系统开发中至关重要的一步,而且还提供了处理异常情况的支柱,因为它代表了软件的业务逻辑。
系统设计的目标
- 实用性:我们需要一个系统,该系统应该针对他们正在设计的相应受众(用户)集。
- 准确性:上述系统设计的设计方式应满足几乎所有设计要求,无论是功能性还是非功能性要求。
- 完整性:系统设计应满足所有用户要求
- 高效:系统设计不应过度使用超过资源成本,也不应过度使用,因为现在我们知道这会导致低彻底投入(输出)和更少的响应时间(延迟)。
- 可靠性:设计的系统应在一定时间内接近无故障的环境。
- 优化:时间和空间很可能就是我们为单个组件在系统中工作的代码块所做的事情。
- 可扩展(灵活性):系统设计应该根据客户的不同用户需求随时间变化,我们知道这些需求会不断变化。
系统开发生命周期
任何系统都不是一天或一步就能设计出来的。对于每个系统设计,都会发生一系列步骤/阶段/阶段来获得强大的系统。该系列被定义为系统开发生命周期(SDLC)。我们需要对系统的生命周期有深入的了解,才能定义代码块中任何变量的范围,因为只有这样我们才能深入了解庞大的系统如何在现实世界的机器中交互。
系统开发生命周期的阶段如下:
- 计划
- 分析
- 设计
- 发展
- 实施
- 维持
系统设计的组成部分
以下是系统设计的一些主要组成部分。简要讨论。详细版本将在不同的帖子中讨论:
- 负载均衡器:系统可扩展性、可用性和性能衡量的最关键组件。
- 键值存储:它是一种类似于哈希表的存储系统,其中键值存储是分布式哈希表。
- Blob 存储: Blob 代表二进制大对象,顾名思义是非结构化数据的存储,例如 YouTube、Netflix。
- 数据库:它是有组织的数据集合,以便可以轻松访问和修改它们。
- 速率限制器:这些设置服务可以满足的最大请求数。
- 监控系统:这些基本上是系统管理员监控基础设施(如带宽、CPU、路由器、交换机等)的软件。
- 分布式系统消息队列:生产者和消费者之间的交易媒介。
- 分布式唯一ID生成器:在大型分布式系统中,每时每刻都会发生多个任务,因此为了区分它,为每个事件分配一个对应的标签。
- 分布式搜索:在每个网站上,访问者要寻找的重要信息都被放入搜索栏中。
- 分布式日志服务:从头到尾跟踪事件序列。
- 分布式任务调度器: CPU、内存、存储等计算资源。
系统架构
软件架构是我们定义设计组件如何描述、设计和部署的一种方式。
它基本上是软件系统的骨架设计,描述了软件系统的组件、抽象级别和其他方面。为了用外行人的语言理解它,企业的目标或逻辑应该非常清晰并列在一张纸上。这里有大型项目的目标和进一步扩大规模的指南,用于扩大现有系统和即将推出的系统。
系统架构模式
有多种方法可以组织软件架构中的组件。软件架构中不同的预定义组件组织称为软件架构模式。尝试并测试了很多模式。他们中的大多数人都成功地解决了各种问题。在每种模式中,组件的组织方式不同,以解决软件架构中的特定问题。
不同类型的软件架构模式包括:
- 分层图案
- 客户端-服务器模式
- 事件驱动模式
- 微内核模式
- 微服务模式
系统设计中的模块化和接口
- 模块化设计是指产品设计的方法/程序,涉及集成或组合较小的独立元素以创建成品。大型产品(如汽车)可以分为更小、更简单的组件,并使用模块化设计方法单独开发和生产。最终产品是通过集成(或组装)这些组件中的每一个来创建的。
- 系统设计中的界面是用户交互的区域。它由便于系统导航的屏幕显示、收集数据的屏幕和表单以及系统报告组成。
现有系统的演进/升级/规模
随着技术使用的增加,无论是离线还是在线,现在每个开发人员都必须设计和创建可扩展的系统。如果系统不具有可扩展性,随着用户的增加,系统很可能会崩溃。因此,缩放的概念就发挥了作用。
假设有一个具有特定磁盘和 RAM 配置的系统正在处理任务。现在,如果我们需要改进我们的系统或扩大规模,我们有两种选择。
- 现有系统的升级规格:我们只是通过升级RAM和磁盘大小以及许多其他组件来改进处理器。请注意,这里我们不关心网络带宽的可扩展性和可用性。在这里,根据演变,我们正在研究可用性因素,仅考虑保持可扩展性。这称为垂直缩放。
- 通过将多个系统连接在一起创建分布式系统:我们在上面看到,如果可扩展性达不到标准,那么我们需要多个系统来进行此测量,因为可用性测量确实有限制。为了扩展,我们需要更多的系统(更多的块),这称为水平扩展。
数据如何在系统之间流动
数据通过数据流图或 DFD在系统之间流动。
数据流图或 DFD被定义为通过信息的数据流的图形表示。DFD 旨在展示如何将系统划分为更小的部分,并突出显示这些部分之间的数据流。
系统设计优势
在详细讨论了系统设计的介绍之后,现在有必要讨论一下它的优缺点。
系统设计的一些主要优点包括:
- 降低产品的设计成本。
- 快速的软件开发过程
- 节省 SDLC 的总体时间
- 提高程序员的效率和一致性。
- 节省资源
缺点:
- 容易设计过度
- 与敏捷冲突
- 与Devops重合
https://www.jdon.com/71571.html
相关文章:
什么是系统设计 – 学习系统设计
系统设计被定义为为系统的不同组件、接口和模块创建架构并提供有助于在系统中实现这些元素的相应数据的过程。系统设计是任何分布式系统设计背后的核心概念。 系统设计涉及识别数据源,它是描述、创建和规划框架以满足特定业务的必要性和先决条件的直觉。 为什么要…...

基于Python的城市热门美食数据可视化分析系统
温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本项目利用网络爬虫技术从XX点评APP采集北京市的餐饮商铺数据,利用数据挖掘技术对北京美食的分布、受欢迎程度、评价、评论、位置等情况进行了深入分析,方便了解城市美食店…...

万字长文谈自动驾驶occupancy感知
文章目录 prologue欢迎大家点赞收藏与我交流讨论paper listVision-based occupancy :1. [MonoScene: Monocular 3D Semantic Scene Completion [CVPR 2022]](https://arxiv.org/pdf/2112.00726.pdf)2. [Tri-Perspective View for Vision-Based 3D Semantic Occupancy Predictio…...

KBDNO1.DLL文件缺失,软件或游戏无法启动运行,怎样快速修复
不少小伙伴,求助电脑报错“KBDNO1.DLL文件缺失,软件或游戏无法启动或运行”,应该怎么办? 首先,我们先来了解“KBDNO1.DLL文件”是什么? KBDNO1.DLL是Windows操作系统中的一个动态链接库文件,主…...

计算机网络【EPOLL 源码详解】
IO多路复用 在以前,传统的网络编程是多线程模型,一个线程单独处理一个请求。 然而,线程是很昂贵的资源: 线程的创建和销毁成本很高,linux的线程实际上是特殊的进程;因此通常会使用线程池来减少线程创建和…...
第82讲:MySQL Binlog日志的滚动
MySQL Binlog日志的滚动 MySQL Binlog日志滚动指的就是产生一个新的Binlog日志,然后进行记录,因为如果都在一个Binlog中记录,查询是非常慢的,检索的效率也很低。 Binlog日志滚动有三种方法: 重启MySQL 数据库一般不重…...
2024.1.3C语言补录 宏函数
在C语言中,宏函数可以使用预处理器指令 #define 来定义。宏函数与常规函数类似,但它们在预处理阶段进行替换,而不是在运行时。 定义:#define 宏名称(参数列表) 宏体 其中: #define 是预处理器指令,用于定义宏。宏名…...

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Column组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Column组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Column组件 沿垂直方向布局的容器。 子组件 可以包含子组件。 接…...

快手推荐算法工程师三面回顾
快手三次技术面试一次HR面试的简单回顾,希望对大家有所启发。 一面 面试官一上来就让写算法题,第一个是计算岛屿数量,第二个是最长回文字串。 然后就是介绍自己的论文。对于论文的工作,面试官只是在问关于论文的问题࿰…...

Sonarqube安装(Docker)
一,拉取相关镜像并运行 # 拉取sonarqube镜像 docker pull sonarqube:9.1.0-community在运行之前要提前安装postgres并允许,新建数据库名为sonar的数据库 Docker安装postgres教程 docker run -d --name sonarqube --restartalways \ -p 19000:9000 \ …...

双击shutdown.bat关闭Tomcat报错:未设置关闭端口~
你们好,我是金金金。 场景 当我startup.bat启动tomcat之后,然后双击shutdown.bat关闭,结果报错了~ 排查 看报错信息很明显了,未配置关闭端口,突然想起来了我在安装的时候都选的是默认的配置,我还记得有这…...

HLS 2017.4 导出 RTL 报错:ERROR: [IMPL 213-28] Failed to generate IP.
软件版本:HLS 2017.4 在使用 HLS 导出 RTL 的过程中产生如下错误: 参考 Xilinx 解决方案:https://support.xilinx.com/s/article/76960?languageen_US 问题描述 DESCRIPTION As of January 1st 2022, the export_ip command used by Vivad…...

【Kubernetes】kubectl 常用命令
kubectl 常用命令 1.基础命令2.部署命令3.集群管理命令4.故障诊断与调试命令5.高级命令6.设置命令7.其他命令 kubectl 是 Kubernetes 提供的命令行管理工具。通过使用 kubectl,可以管理和操作 Kubernetes。 1.基础命令 命令 说明 create通过文件名或标准输入创建 …...

鸿蒙开发第一天
一、开发准备工作 1、开发工具的安装 1)下载地址:https://developer.huawei.com/consumer/cn/deveco-studio/ 2)查询API文档链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V2/syscap-00000014080893…...

Midjourney表情包制作及变现最全教程
盘点Midijourney(AIGF)热门赚米方法,总有一种适合你之AI绘画操作技巧及变现渠道剖析 【表情包制作】 首先我们对表情包制作进行详细的讲解: 当使用 Midjourney(AIGF) 绘画来制作表情包时,你可以…...
UNIAPP中借助store+watch完成实时数据
简介 手机端蓝牙连接校验仪,校验仪上传校验数据至手机完成展示。基于watch,完成实时展示数据。对象放在store中。实现分为store中的配置,数据接收,数据展示 store配置 在state中配置属性,在mutations中配置更新方法…...
COLMAP 三维重建 笔记
目录 安装COLMAP 需要设置环境变量 COLMAP数据下载 使用ColmapOpenMVS进行物体的三维重建 安装COLMAP 1.1 下载Colmap:https://demuc.de/colmap/#download 选择cuda版本的进行下载。 1.2 下载OpenMVS,可以选择下载源码自行编译也可以选择封装好的可…...

即时设计:一键查看设计稿与页面差异,让设计师的工作更便捷高效
设计稿走查 在设计工作中,对设计稿和实际页面进行对比是必不可少的环节。然而,传统的对比方式往往耗时耗力,无法精确测量差异。为了解决这个问题,我们推出了一款强大的工具,它可以通过图片对比,轻松查看设…...
知识库问答LangChain+LLM的二次开发:商用时的典型问题及其改进方案
前言 如之前的文章所述,我司下半年成立大模型项目团队之后,我虽兼管整个项目团队,但为让项目的推进效率更高,故分成了三大项目组 第一项目组由霍哥带头负责类似AIGC模特生成系统第二项目组由阿荀带头负责论文审稿GPT以及AI agen…...

Mac内心os:在下只是个工具,指望我干人事?
呜呜呜,今天去医院看病了,乌央央的好多人。最近在研究苹果开发者工具中的HealthKit,等我研究透给大家安利。今天还是继续闲聊吧😂😂提前感谢大家体谅我这个病号,发射小红心,biubiubiu~ 据说&am…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...