系统架构设计知识体系总结

news2025/3/26 5:50:35

1.技术选型

1.什么是技术选型?

技术选型是指评估和选择在项目或系统开发中使用的最合适的技术和工具的过程。这涉及考虑基于其能力、特性、与项目需求的兼容性、可扩展性、性能、维护和其他因素的各种可用选项。技术选型的目标是确定与项目目标相符合、能够有效解决项目挑战和目标的最佳技术。

技术选型的过程通常包括:

项目评估:了解项目的目标、需求、约束和范围,以确定需要哪些技术。

研究:对不同技术、框架和工具进行彻底的研究,以满足项目的潜在需求。

比较:评估每种技术选项的优势和劣势,考虑功能、性能、社区支持、可扩展性、安全性和成本等因素。

概念验证:构建原型或进行小规模实验,以验证在项目中使用特定技术的可行性。

风险分析:识别与每个技术选择相关的潜在风险,包括兼容性问题、学习曲线、厂商依赖性和未来支持等。

专家咨询:寻求对所考虑技术有经验的专家、同事或行业专业人士的建议。

长期可行性:评估所选技术的长期可行性和未来增长潜力,以确保其能够在一段时间内保持相关性和支持。

成本考虑:评估实施和维护所选技术的初期和长期成本。

反馈与迭代:在选型过程中融入利益相关者、开发人员和用户的反馈,以确保与其需求保持一致。

决策:基于对选项及其影响的全面理解做出明智的决策。

有效的技术选型至关重要,因为技术选择可以显著影响项目的成功。恰当选择的技术可以简化开发流程、提高性能、改善用户体验并促进长期维护。另一方面,糟糕的技术选型可能导致项目延迟、增加成本、兼容性问题甚至项目失败。因此投入时间和精力进行研究、比较和选择合适的技术是实现成功项目成果的基本步骤。

2.为什么要技术选型?

技术选型的重要性体现在以下几个方面:

  1. 满足项目需求: 不同的项目有不同的需求和目标。技术选型可以确保所选的技术和工具能够满足项目的功能、性能、安全性和可扩展性等需求。
  2. 提高开发效率: 选择合适的技术可以加快开发过程,减少开发人员的工作量。适合项目的技术能够提供更多的开发工具、库和框架,从而简化开发流程。
  3. 优化性能: 不同技术在性能方面有所差异。选择性能良好的技术可以确保项目具有快速的响应时间和高效的运行。
  4. 降低风险: 经过充分的调研和验证后,选择合适的技术可以降低项目失败的风险。避免了可能的技术问题和不稳定性。
  5. 适应未来发展: 选用能够适应未来技术发展的技术,可以延长项目的寿命并减少技术迁移的成本。
  6. 提高用户体验: 选择适合项目的技术可以提供更好的用户体验,包括更快的加载时间、友好的界面和响应式设计等。
  7. 降低成本: 正确选择技术可以减少项目开发和维护的成本。合适的技术可以减少不必要的资源浪费。
  8. 避免厂商锁定: 在技术选型时,考虑到技术的开放性和厂商支持,可以避免在未来被特定供应商限制。
  9. 可维护性: 选择易于维护的技术可以确保项目在长期内保持稳定和可维护。
  10. 支持社区: 选择有活跃社区的技术可以获得更多支持、文档和解决问题的资源。

综上所述,技术选型是项目成功的关键因素之一。通过仔细考虑项目需求、调研不同的选项、验证适合性并做出明智的决策,可以确保项目在开发、上线和维护过程中取得更好的成果。

3.技术选型案例

跨境电商企业在技术选型时选择了Service Mesh Istio,但是在没有经过充分调研和验证的情况下,直接在开发环境中部署。这导致了一系列问题,包括项目延迟和长时间的适应期,最终影响了项目的正式上线。

从中提取出了一些重要的教训:

  1. 充分调研: 在决定采用新技术之前,进行充分的调研,了解技术的特点、优势、劣势以及适用场景。不要轻率地选择技术,而是确保它能够满足项目需求。
  2. 小规模尝试: 在大规模采用之前,尝试在小规模环境中引入新技术。这有助于发现潜在问题、了解技术的运作方式,并在实践中积累经验。
  3. 验证和适应期: 对于新技术,预留一段适应期是很重要的。技术的实际表现可能与预期不同,因此给予项目团队足够的时间来适应和解决问题是必要的。
  4. 项目风险: 技术选型不仅需要考虑技术本身的特点,还需要考虑其可能引发的项目风险。不稳定的技术可能导致项目延迟、成本增加等问题。
  5. 经验积累: 通过小规模引入和验证,项目团队可以积累关于技术的经验,了解如何优化和解决潜在问题。

综合来看,这个案例强调了在技术选型中谨慎而有计划的重要性。不要急于采纳新技术,而是通过调研、验证和小规模试验来确保技术能够稳定地支持项目的成功实施。

2.系统设计方法

1. 前端

在这里插入图片描述

2. 后端

在这里插入图片描述

3. API gateway网关架构

在这里插入图片描述

4. 7种分布式系统设计模式

在这里插入图片描述

5. 6种API架构风格

在这里插入图片描述

6. 常见应用架构模式

在这里插入图片描述

7. api安全的12个要点

在这里插入图片描述
在这里插入图片描述

8. 提升api性能的7中方法

在这里插入图片描述

9. 系统设计应遵循的原则

在这里插入图片描述

10. Redis常见用法

在这里插入图片描述

11. 25篇经典分布式架构设计论文

在这里插入图片描述

12.DevOps&SRE

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

13. 5种部署方法

在这里插入图片描述

3.微服务架构方法

1.微服务架构设计理论

1.NFR(非功能性需求):

在这里插入图片描述

2.架构的构成元素:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.软件架构的4+1视图模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.编写FTGO应用架构文档案例

4+1视图架构:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
架构愿景(vision)
在这里插入图片描述
系统上下文
在这里插入图片描述
架构涉及的核心用户故事和场景
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
非功能性需求:
在这里插入图片描述
编写服务清单文档
在这里插入图片描述
编写服务领域模型文档
在这里插入图片描述
记录架构决策
在这里插入图片描述
总结
在这里插入图片描述

2.微服务设计模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.云原生架构要点

0.架构演进的过程

在这里插入图片描述

1.云原生应用设计的12个要素

在这里插入图片描述

基准代码:指代码版本管理,基于同一个版本代码开发
依赖:显式的依赖
配置:代码与环境配置分开
进程:应用以一个或多个进程进行运行,应用无状态
端口绑定:端口与服务绑定
日志:日志以事件流的形式来看,方便处理

2. 云原生架构

在这里插入图片描述

3.下一代云原生架构serviceMesh(服务网格化)

在这里插入图片描述

微服务与Service Mesh 的区别和联系:

在这里插入图片描述

4.Docker

在这里插入图片描述Docker原理
在这里插入图片描述

5.k8s

在这里插入图片描述
k8s架构
在这里插入图片描述

5.参考资料

  • 《微服务架构设计模式》 & 代码: https://github.com/microservices-patterns/ftgo-application
  • 微服务理论网站:
    https://microservices.io/
    https://eventuate.io/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2320027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计划管理工具应该具备的能(甘特图)

在当今快节奏的项目管理环境中,高效地规划和跟踪项目进度是至关重要的。甘特图,作为项目管理领域的经典工具,以其直观的时间轴和任务分配方式,深受项目管理者的青睐。 随着数字化时代的到来,甘特图线上编辑器应运而生&…

简单实用!百度AI + Raphael AI = 免费生图

简单实用!百度AI Raphael AI 免费生图 -- ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b55eda9141d34697b05db0cd60f62b75.png#pic_center) 第一步:下载或截取一些好看的图片当参考图片 第二步:用百度AI描述你想要的图片&…

2025-03-22 学习记录--C/C++-C 库函数 - getchar()

C 库函数 - getchar() ⭐️ C 标准库 - <stdio.h> &#xff08;一&#xff09;、函数声明 &#x1f36d; int getchar(void)从标准输入 stdin 获取一个字符&#xff08;一个无符号字符&#xff09;。 参数&#xff1a;&#x1f380; NA 返回值&#xff1a;&#x1f38…

APM 仿真遥控指南

地面站开发了一段时间了&#xff0c;由于没有硬件&#xff0c;所以一直在 APM 模拟器中验证。我们已经实现了 MAVLink 消息接收和解析&#xff0c;显示无人机状态&#xff0c;给无人机发送消息&#xff0c;实现一键起飞&#xff0c;飞往指定地点&#xff0c;降落&#xff0c;返…

BBR 和 CUBIC 对长肥管道的不同反应

有个关于 CUBIC(等一众 AIMD-based cc) 和 BBR 在长肥管道中的行为比较挺有趣&#xff0c;它们的表现竟然截然相反&#xff1a; CUBIC 流共存&#xff0c;RTT 越大&#xff0c;Goodput 越低&#xff1b;BBR 流共存&#xff0c;RTT 越大&#xff0c;Goodput 越高。 前一个被看…

架构师面试(十九):IM 架构

问题 IM 系统从架构模式上包括 【介绍人模式】和 【代理人模式】。介绍人模式也叫直连模式&#xff0c;消息收发不需要服务端的参与&#xff0c;即客户端之间直连的方式&#xff1b;代理人模式也叫中转模式&#xff0c;消息收发需要服务端进行中转。 下面关于这两类模式描述的…

Spring框架入门指南:从Hello World到IOC容器

第一章&#xff1a;Spring框架的介绍 1. Spring框架的概述 Spring是一个开放源代码的设计层面框架&#xff0c;它解决的是业务逻辑层和其他各层的松耦合问题&#xff0c;因此它将面向接口的编程思想贯穿整个系统应用。 Spring是于2003 年兴起的一个轻量级的Java开发框架&…

嵌入式电路设计软件个人安装步骤分享

各位小伙伴大家好,今天给大家分享一个,电路设计软件的安装方法,希望对大家有所帮助。 一、下载【Multisim14.0安装包】: 链接:夸克网盘分享 提取码:kHSP 电脑安装Multisim14.0并且汉化 准备安装包以及汉化包双击“NI_Circuit_Design_Suite_14_0【海量免费资源:kebaiwan…

git | 回退版本 并保存当前修改到stash,在进行整合。[git checkout | git stash 等方法 ]

目录 一些常见命令&#xff1a; git 回退版本 一、临时回退&#xff08;不会修改历史&#xff0c;可随时回到当前版本&#xff09; 方法1&#xff1a;git checkout HEAD~1 二、永久回退&#xff08;改变分支指向&#xff09; 方法2&#xff1a;git reset 1. 保留修改&am…

【Java SE】单例设计模式

参考笔记&#xff1a;深入理解Java设计模式&#xff1a;单例模式及其饿汉式与懒汉式的对比,-CSDN博客 目录 1.什么是设计模式 2.经典设计模式 3.单例设计模式&#xff08;static属性/方法经典使用场景 &#xff09; 3.1 饿汉式单例模式 3.2 懒汉式单例模式 4.补充 1.什么…

安全守护:反光衣检测技术的革新之路

视觉分析助力船上工人反光衣检测 在现代工业生产与作业环境中&#xff0c;安全始终是首要考虑的因素。对于水上作业&#xff0c;如船舶维护、海上施工等场景&#xff0c;工人穿戴反光衣是预防事故、提高可见性的重要措施。然而&#xff0c;传统的人工检查方式不仅效率低下&…

OSCP准备靶场联系-Kioptrix 1

oscp 准备 Kioptrix 1 信息收集 ifconfig 确认自己的电脑ip&#xff0c;nmap收集通往段ip&#xff0c;确认靶机IP nmap 重点关注服务版本 nmap -sn 192.168.1.0/24 # 扫描网段内存活主机&#xff0c;不进行端口扫描[1,10](ref) nmap -sP 192.168.1.1 # 传统Ping扫描…

【工具变量】中国各地级市是否属于“信息惠民国家试点城市”匹配数据(2010-2024年)

数据来源&#xff1a;国家等12部门联合发布的《关于加快实施信息惠民工程有关工作的通知》 数据说明&#xff1a;内含原始文件和匹配结果&#xff0c;当试点城市在2014年及以后&#xff0c;赋值为1&#xff1b;试点城市在2014年之前或该城市从未实施信息惠民试点工程&#x…

深度学习 Deep Learning 第7章 深度学习的正则化

深度学习 第7章 深度学习的正则化 章节概述 正则化技术是深度学习中防止过拟合、提升模型泛化能力的核心手段。本章深入探讨了深度学习中的正则化技术&#xff0c;旨在解决模型在新数据上的泛化能力问题。正则化是通过在学习算法中引入额外的约束或惩罚项&#xff0c;来减少模…

使用DeepSeek翻译英文科技论文,以MarkDown格式输出,使用Writage 3.3.1插件转换为Word文件

一、使用DeepSeek翻译英文科技论文&#xff0c;以MarkDown格式输出 以科技论文“Electrical Power System Sizing within the Numerical Propulsion System Simulation”为例。 关于Writage 3.3.1的进一步了解&#xff0c;可发送邮件至邮箱pyengine163.com. 首先&#xff0c;打…

一文了解ThreadLocal

什么是ThreadLocal&#xff1f; ThreadLocal是每个线程私有的&#xff0c;线程可以把自己的私有数据放到ThreadLocal里面&#xff0c;不用担心其他线程访问到自己ThreadLocal。 通过set()方法将值存入ThreadLocal或者修改值&#xff0c;get()方法取出值&#xff0c;remove()方…

【免费】2000-2019年各省地方财政印花税数据

2000-2019年各省地方财政印花税数据 1、时间&#xff1a;2000-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、地方财政印花税 4、范围&#xff1a;31省 5、指标说明&#xff1a;印花税是对特定经济活动和法律行为所征收的…

HTML——什么是块级元素,什么是内联元素,有何区别

在 HTML 中&#xff0c;块级元素&#xff08;Block-level element&#xff09;和内联元素&#xff08;Inline element&#xff09;是两种不同类型元素&#xff0c;它们在页面布局和样式应用方面有不同的行为和特性。 块级元素&#xff08;Block-level element&#xff09; 块级…

优先级与环境变量的艺术:驾驭 Linux 系统的核心

文章目录 前言一、什么是进程优先级&#xff1f;二、Linux 系统中的优先级2.1 查看进程优先级2.2 PRI 和 NI 的关系2.3 修改进程优先级2.4 进程优先级的实现原理2.5 进程的特性 三、环境变量3.1 PATH——搜索可执行文件的目录列表1. 为什么自己写的程序需要加 ./ 才能执行&…

【AVRCP】深度剖析 AVRCP 中 Generic Access Profile 的要求与应用

目录 一、GAP基础架构与核心要求 1.1 GAP在蓝牙体系中的定位 1.2 核心模式定义 二、AVRCP对GAP的增强要求 2.1 模式扩展规范 2.2 空闲模式过程支持 三、安全机制实现细节 3.1 认证与加密流程 3.2 安全模式要求 四、设备发现与连接建立 4.1 发现过程状态机 4.2 连接…