首页 > 其他分享 >系统架构基础知识入门指南-上

系统架构基础知识入门指南-上

时间:2024-04-15 17:55:25浏览次数:22  
标签:架构设计 架构 入门 系统 业务 基础知识 技术 软件系统

接上一篇文章《为什么测试要了解系统架构》的内容,这篇聊聊如何掌握基础的系统架构知识。

从我个人的角度来说,所谓的系统架构,就是对软件系统整体结构的抽象设计。如何理解这句话呢?举个生活中常见的例子:如何盖一座房子?

正常的做法是先勘探地质,然后对房子进行设计(房屋大小朝向、门窗尺寸用料、预算多少),最后才是制定对应的施工方案,开工建设。软件的系统架构也可以用类似的角度理解。

换个角度理解,企业为了达成某个商业目标(愿景),提出了要建设一个软件系统(达成方式),因此才有了各种各样的业务需求(达成过程的细节)。

软件系统是业务需求实现的载体,系统架构是对业务的抽象理解和实现设计,是对软件产品进行分解再组合的过程。通过将软件产品分解为不同的组件、模块,重新组织他们的交互逻辑和链路,最终形成一个软件产品。

 

从软件研发测试流程的角度来看,业务提出诉求,产品设计需求,研发用技术实现,测试针对系统各功能模块进行验证,最后验收通过发布上线,这个过程和系统架构设计是紧密相关的。

不同的业务需求有不同的分类,比如营销、订单、支付、库存。遇到这些业务需求时,首先要对需求进行识别拆分,即将不同的需求分组到对应的业务模块(谁来负责技术实现)。

其次技术实现要考虑实现的难易成本和业务情况(影响技术选型),比如初创企业业务量小,需要快速迭代,往往选择LNMP全家桶。如果是业务复杂且业务量较大,这个时候选择Java全家桶就比较多。

技术实现过程中,要考虑数据存储、代码管理、服务部署和发布,与之对应的就是数据库选型、代码仓库选型、发布系统(或持续集成流水线)构建。

到了测试环节,会用到各种测试方法和工具,这个时候诸如Postman、JMeter就开始登上舞台。不同业务模块对应的应用服务之前也会有依赖关系,服务之间的请求交互需要考虑通信协议,于是HTTP、RPC框架就要发挥作用了。

为了服务发布上线后更稳定的运行,同时统计各种业务和技术指标,需要完善的监控工具来及时跟踪和发现问题,这个时候诸如Cat、Jaeger、SkyWalking等工具组件就开始工作。

还有其他基础的技术平台如运维平台,代码仓库和需求管理平台等,这些都是系统架构设计中需要考虑到的。

如上图所示,其中包含了我们常见的系统架构设计中常见的技术组件和工具。

当然,系统架构设计不仅仅是这些,还有设计模式(如单例模式、工厂模式),所谓的设计模式其实是一种系统架构设计的指导思想和方法论。

从本质上来说,架构是一种决策,即软件系统如何成型,至于采用何种设计模式指导,选择哪些技术组件则是设计领域

如上图中的编程语言选择、框架选择、各种中间件和基础服务选择,都是设计的一部分。

软件系统架构设计,很重要的一点是搞清楚哪些部分最重要,以及这些重要部分如何实现。

 

这篇文章是对系统架构基础知识的一个罗列说明,下篇文章,聊聊技术同学如何由点及面的了解并掌握这些知识。

标签:架构设计,架构,入门,系统,业务,基础知识,技术,软件系统
From: https://www.cnblogs.com/imyalost/p/18136619

相关文章

  • Pytorch DistributedDataParallel(DDP)教程二:快速入门实践篇
    一、简要回顾DDP在上一篇文章中,简单介绍了Pytorch分布式训练的一些基础原理和基本概念。简要回顾如下:1,DDP采用Ring-All-Reduce架构,其核心思想为:所有的GPU设备安排在一个逻辑环中,每个GPU应该有一个左邻和一个右邻,设备从它的左邻居接收数据,并将数据汇总后发送给右邻。通过N轮迭代......
  • LangChain轻松入门和开发实践
    LangChain是一个开发语言模型应用的框架。LangChain能够简化开发与语言模型工作流中的复杂部分,帮助开发人员能够更轻松地进行开发,并定制满足需求的应用。LangChain有两大优点,一是它能将外部数据,如文件、其他应用、API数据等,无缝地集成到语言模型中;二是它通过代理功能,让语言模型......
  • 从零手写实现 apache Tomcat-01-入门介绍
    自己如何实现?要实现一个简单版本的Tomcat,整体思路如下了解Tomcat的基本原理:Tomcat是一个开源的JavaServlet容器和Web服务器,它能够运行JavaServlet和JavaServerPages。Tomcat是基于Java的,它是用Java编写的。创建一个简单的HTTP服务器:创建一个Jav......
  • java实现的微服务架构_详解Java 微服务架构
    java实现的微服务架构_详解Java微服务架构一、传统的整体式架构传统的整体式架构都是模块化的设计逻辑,如展示(Views)、应用程序逻辑(Controller)、业务逻辑(Service)和数据访问对象(Dao),程序在编写完成后被打包部署为一个具体的应用。如图所示:系统的水平扩展如果要对系统......
  • Docker从入门到精通:Docker镜像相关命令学习
    简介在Docker中,管理镜像(Images)是非常重要的,因为镜像是容器的基础。本文将介绍一些常用的Docker镜像管理命令,帮助你有效地管理和操作Docker镜像。dockerimages查看本地已有的镜像列表,可以使用dockerimages命令:dockerimages-REPOSITORY镜像的仓库源-TAG镜......
  • Docker从入门到精通:Docker pull命令学习
    Docker是一种流行的容器化平台,它允许用户构建、分享和运行容器化的应用程序。要使用Docker,您需要先下载所需的Docker镜像。之前我们介绍了在Ubuntu系统上安装docker,本文将接着介绍如何使用DockerPull命令下载Docker镜像的步骤。dockerpulldockerpull命令是用于从镜像仓库中......
  • .NET Emit 入门教程:第六部分:IL 指令:8:详解 ILGenerator 指令方法:类型转换指令
    前言:经过前面几篇的学习,我们了解到指令的大概分类,如:参数加载指令,该加载指令以 Ld开头,将参数加载到栈中,以便于后续执行操作命令。参数存储指令,其指令以St开头,将栈中的数据,存储到指定的变量中,以方便后续使用。创建实例指令,其指令以New开头,用于在运行时动态生成并初始化对......
  • Pytorch DistributedDataParallel(DDP)教程一:快速入门理论篇
    一、写在前面随着深度学习技术的不断发展,模型的训练成本也越来越高。训练一个高效的通用模型,需要大量的训练数据和算力。在很多非大模型相关的常规任务上,往往也需要使用多卡来进行并行训练。在多卡训练中,最为常用的就是分布式数据并行(DistributedDataParallel,DDP)。但是现有的......
  • [转]写给前端的 react-native 入门指南
    前言本文主要介绍react-native(下称RN)的入门,和前端的异同点文章不涉及功能的具体实现选择优势我们先说说,为什么很多人会选择使用RN、他对应的特性和普通Web的区别前端资源,生态的互通因为使用的语言是JS和react,对于前端来说可以无缝切换,并且他还能......
  • 【译】宣布在 Visual Studio 17.10 预览2中为 ARM64 架构提供 SSDT
    我们很高兴地宣布在ARM64中为VisualStudio推出SQLServerDataTools(SSDT)。这个增强是在令人兴奋的17.10预览版2中发布的。arm64上VisualStudio的SSDT版本为arm64上的VisualStudio添加了SQL开发功能。这个最新的开发带来了许多专为增强您在ARM64设备上......