白沙黎族自治县网站建设_网站建设公司_CMS_seo优化
2026/1/16 15:53:51 网站建设 项目流程

本文系统介绍软件架构的多种模型与设计原则,包括4+1视图、C4模型、TOGAF架构等,详细阐述业务、应用、技术、数据架构的设计方法和实践原则。针对互联网行业特点,讲解如何通过架构设计控制系统复杂度,实现高可用、高性能、可扩展的系统架构,是架构师和开发者提升系统设计能力的实用指南。


01

关于架构的理解

1.1 分析与扩充维度

架构,是对系统的描述。

维基百科的定义是:软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。

系统的三大特征表现在架构上就是:横向可并列,纵向可推导,整体可演进。

物理学的熵增定律表明孤立系统总是趋向于熵增的方向发展。在软件系统里同样适用,只不过是以复杂度的增加表现的。

互联网软件系统总是朝着复杂度增加的方向发展。所以架构的第一目的是控制复杂,使系统朝着可控的方向发展。

1.2 4+1模式

4+1视图由 Philippe Kruchten 提出的对软件工程逻辑架构的描述,目前已经成为事实上的软件结构标准,分别以终端使用者、开发者、系统工程师、软件经理等不同的视角对软件进行描述。如下图所示:

  • 逻辑视图(Logic View):终端使用者的视角,从功能角度来描述不同功能组件的层次关系。
  • 开发视图(Development View):开发者视角下,从实现层面描述不同代码的包、类、库的构成关系。
  • 过程视图(Process View):不同组件之间的行为关系,通常以时序图的形式来表示,有一定的时序延展性。
  • 物理视图(Physical View):部署视图,系统所依托的物理视图。
  • 场景视图(Scenarios):系统所涉及的不同对象之间的关系。通常以用例图的形式来呈现。

基于这5个视角,可以衍生出5种架构模型。场景、功能、实现、过程、部署,一层层的抽象。

4+1架构视图,构建了一个观察了解系统框架。它告诉我们可以从逻辑视图、开发视图、过程视图、物理视图、场景视图这几个层面来对系统进行描述、观察、理解。对于一个系统,这5个视角已经是很完备了。值得注意的是4+1更大的价值是提供了一套分析系统的框架,实际上怎么呈现不同的团队可能有不同的形式。对于一个系统从不同的视角看会得到不同的理解,横看成岭侧成峰。

1.3 C4模型

C4 模型是由 Simon Brown 在2006年至2011年之间创建,在4+1模型的基础上建立( https://c4model.com/ ),实际上就是以下4个单词的缩写:

上下文 Context:描述的系统与周边系统、人的关系。重点是该系统与外界的关系。这里的外界包含人、以及其他的系统。

容器 Containers:容器是一个功能的单位,是从技术层面来描述,可以是一个服务,也可以是一个技术组件或者一个功能模块。例如一个基金系统会包含交易服务、订单服务、商品服务等。

组件 Components:组件是容器的的组成,组件是对容器的放大,例如商品服务里包含 sku 管理、行情数据、衍生指标等。

代码 Code:这一层次是代码级别,包含接口、类、对象的继承、组合、包含等。

该模型是对一个系统从宏观到微观逐级展开来描述,犹如拿着放大镜从太空看地球一样。

第一层看到的是地球与其星球的环绕、第二层是看到地球上的山川海河,第三层看到的是不同的国家城市,第四层看到的是不同的房子家庭。

C4 模型基于4+1模型,但是也有些差异。如果说4+1重点是横看成岭侧成峰。那 C4 模型则是一窥到底的放大镜。

C4 模型告诉我们,不同抽象层次的关注点、挑战点、问题域都是不同的,站在不同的层次就要思考对应的事情。

关注点一旦与该层次不匹配就会出现逻辑错乱问题。能分清楚问题域在何种层次其实已经把问题解决一大半了。

有时候,在低层次很难解的问题,上升一个层次就迎刃而解了。

有时候,在高层次看不清的问题, 降低一个层次就一目了然了。

高层次是低一层的抽象,低层次是高一层的具化。

高手应该是能够识别不同的抽象层次,并且可以游刃有余地在不同抽象层次之间穿梭。

处于高层次时不应该被低层次的具体牵绊,处于低层次的时候也不应该好高骛远。

1.4 TOGAF-4A 架构

  • 业务架构:业务战略,治理,组织和关键业务流程。从企业视角来看,重在价值、信息、协作,关联多部门。
  • 应用架构:要部署的各个应用程序的蓝图,其交互以及与组织核心业务流程的关系。
  • 数据架构:一个组织的逻辑和物理数据资产和数据管理资源的结构。
  • 技术架构:支持部署业务,数据和应用程序服务所需的逻辑软件和硬件功能。这包括IT基础设施,中间件,网络,通信,处理和标准。

TOGAF 认为架构的目的是为了帮助企业实现如下能力:

异构到同构(塑造同构 IT)、事后到事先(塑造规划 IT)、离散到统一(塑造统一 IT)、无序到有序(塑造有序 IT)

1.5 实际模型-互联网模型

实际上,相对于传统的软件系统,互联网行业发展比较快,业务存活周期比较短,就形成了互联网行业特定的架构描述方式。更多是以业务架构、技术架构、部署架构三种形式呈现。

  • 业务架构:从业务角度描述系统承载的功能集合、领域边界、各组成部分的逻辑关系。区别于技术架构,业务架构图里避免出现技术类的术语,如 DB、MySQL、CMQ、同步、异步、并发等。
  • 技术架构:从技术角度描述系统各组成部件之间的交互关系,技术架构体现的要具有技术特色,例如同步、异步、消息等。
  • 部署架构:从物理角度描述系统的部署分布。

02

业务/产品架构

业务架构是从业务、产品视角,描述整个平台、或某个产品的实现。包括业务规划,业务模块、业务流程,对整个系统的业务进行拆分,对领域模型进行设计,把现实的业务转化成抽象对象。

2.1 首先要制定业务架构原则

业务架构原则结合实际业务来制定,例如参考电商平台业务:

(1)将业务平台化:

  • 业务平台化,相互独立,例如交易平台、物流平台、支付平台、广告平台等。
  • 基础业务下沉、可复用:例如用户、商品、类目、促销、时效等。

(2)将核心业务和非核心业务分离。将电商系统的核心业务和非核心业务如主交易服务和通用交易服务分离,将核心业务精简(利于稳定),并将非核心业务多样化。

(3)隔离不同类型的业务。

  • 交易平台的作用是让买家和卖家签订交易合同,所以需要优先保证高可用,让用户能快速下单。
  • 履约业务对可用性没有太高要求,但要优先保证一致性。
  • 秒杀业务对高并发要求很高,应该和常规业务分离。

(4)区分主流程和辅助流程。要清楚哪些是电商系统的主流程,在运行时优先保证主流程的顺利完成;对辅助流程可以采用后台异步的方式,避免辅助流程的失败影响主流程的失败回流。

2.2 业务/产品模块划分,即产品架构图

对产品功能模块的抽象划分,产品架构主要用于讲明白这个产品做什么的、需要有什么功能。对需求全盘理解之后,进行高度的抽象分类,然后对各个分类进行对应的产品设计,完成抽象的逻辑梳理和数据梳理,逻辑和数据最终组成一个有机体,成为产品架构。

如何画产品架构图?

  1. 梳理业务流程,形成闭环:

    梳理业务闭环和理清逻辑关系;

    业务闭环:用户使用产品的闭环流程基于用户的某个需求或问题,梳理用户使用的业务流程,梳理参与此模块的用户、角色、场景,将核心流程完整的表述出来,形成闭环。

  2. 提取业务需求:

    基于核心业务流程,根据用户的使用场景列出功能模块。关键是想清楚每个功能模块解决什么核心问题。

  3. 确定功能模块的逻辑关系:

    基于以上梳理出来的功能模块,将类似的、相关联的功能以模块化的形式形成一张简单的矩阵图,将功能模块进行聚合分类。通常按照交互层(入口)、业务层(具体业务环节)、基础服务层(登录、设置等)、数据层(底层服务或数据)进行归纳整理。

示例:

03

应用架构

应用架构承接业务和技术,是对整个系统实现的总体架构:描述应用程序的逻辑结构和组成,以及各个功能模块之间的关联和交互关系,用于更好地理解应用程序的设计和实现。

主要内容:

应用原则:应用架构设计原则或者开发原则。

系统分解:横向分层:明确系统的层次结构设计。纵向功能分解:系统各个层次包含的哪些应用服务。在进行系统耦合性拆分时,要平衡业务和技术的复杂度,保证系统形散神不散。系统采用什么样的应用架构,则受到业务复杂度的影响,包括企业的发展阶段和业务特点;同时受技术复杂度的影响,包括 IT 技术的发展阶段和内部技术人员的水平。业务的复杂度(包括业务量大)必然带来技术的复杂度,应用架构的目标是在解决业务复杂度的同时避免技术太复杂,确保业务架构落地。

3.1 应用之间的协作

(1)稳定原则:一切以稳定为中心。

  • 架构尽可能简单、清晰,追求小而美,不要大而全。
  • 不过度设计。

(2)解耦将稳定部分与易变部分分离。

  • 将核心业务与非核心业务分离。
  • 将电商主流程和辅助流程分离。
  • 将应用与数据分离。
  • 将服务和实现细节分离。

(3)抽象应用抽象化:应用只依赖服务抽象,不依赖服务实现的细节和位置。

  • 数据库抽象化:应用只依赖逻辑数据库,不需要关心物理库的位置和分片。
  • 服务抽象化:应用虚拟化部署,不需要关心实体机的配置,动态调配资源。

(4)松耦合跨域调用异步化:在不同的业务域之间尽量异步解耦。

  • 非核心业务尽量异步化:在核心业务和非核心业务之间尽量异步化。
  • 在必须同步调用时,需要设置超时时间和任务队列的长度。

(5)容错设计服务自治:服务能彼此独立修改、部署、发布和管理,避免引发锁反应。集群容错:应用系统集群部署,避免单点服务。

  • 多机房容灾:多机房部署、多活。

应用架构图可以分为应用功能/模块架构图和单个应用技术架构图。

3.2 应用功能架构图

站在整个系统的视角,描述整个系统逻辑架构。

简单来说应用功能架构需要的是体现出应用有哪些业务模块,有哪些具体的业务功能点,而不是关心应用实现的技术内容。可以按照功能处理顺序划分应用层次。

如果系统比较复杂,包含的应用可能有几百上千个,如果把所有的应用都在一张图里面展示出来,信息太多太密,可能会导致架构图都看不清。这种情况下,应用架构一般都是按照子域来画应用架构图。

示例:

3.3 单个应用技术架构图

应用技术架构描述的重点不是讲清楚应用有哪些功能,而是要说清楚应用中的每一个功能是如何通过技术分层来实现的。比如你需要先定义数据库结构,开发数据访问接口,然后编写业务规则逻辑,最好实现前端界面展现设计,再将所有分层内容连接起来。

所以应用技术架构更多是应用实现技术层面的内容,而不是去关心应用实现用的底层 IT 基础设施资源。在应用技术架构里面一般不会涉及到底层具体的资源或平台,如果应用技术架构在底层增加了类似 IT 基础设施,存储等内容,就显得不伦不类了。

04

技术架构

技术架构:确定组成应用系统的实际运行组件(lvs,nginx,tomcat,php-fpm 等),这些运行组件之间的关系,以及部署到硬件的策略。突出技术实现,重点描述系统的关键技术组件,例如分层、核心技术组件、上下游通信方式、数据流向等。

技术架构主要考虑系统的非功能性特征,对系统的高可用、高性能、扩展、安全、伸缩性、简洁等做系统级的把握。

技术架构的设计原则如下:

(1)无状态,即尽量不要把状态数据保存在本机上。

(2)可复用。复用粒度是有业务逻辑的抽象服务,不是服务的实现细节。

  • 服务引用只依赖服务抽象。

(3)松耦合跨业务域调用,尽可能异步解耦。

  • 在同步调用时设置超时时间和队列大小。
  • 将相对稳定的基础服务与易变流程服务分离。

(4)可治理原则服务可降级。

  • 服务可限流。
  • 服务可开关。
  • 服务可监控。
  • 白名单机制。
  • 制定服务契约。

(5)基础服务基础服务下沉、可复用,例如时效、库存和价格计算。

  • 基础服务自治、相对独立。
  • 对基础服务的实现要精简,并可水平扩展。
  • 对基础服务的实现要进行物理隔离,包括基础服务相关的数据。

示例:

05

代码架构

代码分层,让不同层次的代码做不同的动作。层次清晰的代码,提高可读性,从代码结构就大概能了解到代码是如何分层,每层大概功能是什么。例如常用的 Controller、Service、Mapper/Dao 三层代码结构,其各层的代码逻辑范围。

06

数据架构

数据架构是对存储数据(资源)的架构。描述核心数据模型设计、数据同步和备份的机制等。

其设计原则和应用架构设计大同小异,在设计时需要考虑系统的业务场景,需要根据不同的业务场景对数据进行异构设计、数据库读写分离、分布式数据存储策略等。如图是电商系统中数据架构的一个概要。

数据架构的设计原则参考如下:

(1)统一数据视图,即保证数据的及时性、一致性、准确性和完整性。

(2)数据一致性原则:明确哪些系统允许弱一致性,但要求通过补偿机制保证最终一致性。

(3)数据和应用分离。

  • 应用系统只依赖逻辑数据库。
  • 应用系统不直接访问其他应用的数据库,只能通过接口访问。

(4)数据异构,即在源数据和目标数据内容相同时做索引异构,在商品库不同维度的内容不同时(如订单数据中的买家库和卖家库)做数据库异构。

(5)数据库读写分离。将访问量大的数据库做读写分离,例如订单库。

  • 将数据量大的数据库做分库分表。
  • 将不同业务域的数据库做分区隔离。
  • 对重要的数据配置备库。

(6)采用关系数据库。除成本因素外,MySQL 的数据库扩展性和高并发支持能力较强,也比较容易招聘到相关的研发人员和运维人员。

(7)合理利用 NoSQL 数据库。在数据库有能力支撑时,尽量不要引入缓存。另外,要合理利用缓存做容灾。

如何系统的学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

01.大模型风口已至:月薪30K+的AI岗正在批量诞生

2025年大模型应用呈现爆发式增长,根据工信部最新数据:

国内大模型相关岗位缺口达47万

初级工程师平均薪资28K(数据来源:BOSS直聘报告)

70%企业存在"能用模型不会调优"的痛点

真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!

02.大模型 AI 学习和面试资料

1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工

📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)





第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询