架构到底是什么?

简介: 1、架构与框架的区别2、架构到底是什么?3、架构的目的是什么?

课程概览


1、架构与框架的区别


2、架构到底是什么?


3、架构的目的是什么?



1、架构与框架的区别


提到架构,大家常常会将架构(Architecture)和框架(Framework)混为一谈。

例如:


   1)开源系统(MySQL、Nginx)架构


   2)大公司架构实现(支付宝、微信)


那两者的区别是什么呢?


架构:架构本身不是软件,而是关于软件如何设计的策略。是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。


框架:面向特定领域的、可复用的“半成品”软件,它实现了该领域的共性基础部分,并提供了一些定义良好的可变点以保证灵活性和可扩展性。是领域内、特定语言和技术的架构应用解决方案。


总结:架构关注的是“结构”,框架关注的是“规范”


框架是软件,目的是抽象通用化高效解决问题;架构是软件的抽象解决方案,目的是便于进行大局拆解与局部细化。

微信图片_20220607125715.jpg



架构与框架


2、架构是什么?


软件架构(Software Architecture)

有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计


                                                                        --来自维基百


系统是由一群关联个体的组成的,系统中的个体需要“根据某种规则”协作,架构需要明确这种协作规则。


架构=骨架、结构,来源于建筑学。前者揭示架构中内在的支撑物,后者则表明架构关心支撑物相互结合的某种构造方式。


为什么会出现架构设计?


主要可归纳为以下几个原因:


   1)业务需求多,而且易变


   2)软件系统越来越复杂


   3)参与的人越来越多


   4)跨项目共性/特殊性的问题越来越多


   5)技术发展日异月新


基于以上多种因素,导致系统维护成本越来越高:


   1)系统规模庞大、内部耦合严重,开发效率低;


   2)系统耦合严重,牵一发动全身,后续修改和扩展困难;


   3)系统逻辑复杂,容易出问题,出问题后很难排查和修复。


3、架构的目的是什么?


架构设计的目的是什么?


   为了解决软件系统复杂度带来的问题。


   其终极目标是:用最小的人力成本来满足构建和维护系统的需求


架构设计的好处有哪些?


   1)做到心中有数,而不是一头雾水(“新手”架构师)


   2)有的放矢,而不是贪大求全(“老鸟”架构师)


一些Case:


   “我们的系统一定要能够支撑到QPS 10w+...”


   “微信朋友圈的架构就是这么做的,我们也这样来吧...”


   “Docker现在很热,我们的架构应该将Docker引入进来...


总结


随着业务的发展,跨系统架构设计必将成为我们重要的解决难题,届时可能需要重新优化设计。我们期望一张很大的架构图,囊括所有的业务相关的设计,事实上如果不深入了解业务,架构图就是纸上谈兵。


架构的本质在于合理,合理表现为两个方面:


   1)提高效率:用更少的人力承接更多的工作


   2)降低预算:用更少的机器承接更多的任务

相关文章
|
Python Windows
升级pip并安装库
今天用pip安装一些常用库,然后出现以下这段代码。 需要升级一下pip
805 0
升级pip并安装库
|
12月前
|
算法 数据安全/隐私保护
基于ADRC自抗扰算法的UAV飞行姿态控制系统simulink建模与仿真
本课题基于ADRC自抗扰算法,使用MATLAB2022a在Simulink中建模与仿真UAV飞行姿态控制系统,分别对偏航(Yaw)、俯仰(Pitch)和滚转(Roll)进行控制。ADRC通过扩展状态观测器(ESO)实时估计并抵消扰动,结合非线性反馈控制策略,减少了对精确模型的依赖,增强了系统的鲁棒性和适应性。仿真结果显示该方法能有效实现UAV的姿态控制,确保其在复杂环境中的稳定飞行和精确操控。
|
Kubernetes 架构师 Java
史上最全对照表:大厂P6/P7/P8 职业技能 薪资水平 成长路线
40岁老架构师尼恩,专注于帮助读者提升技术能力和职业发展。其读者群中,多位成员成功获得知名互联网企业的面试机会。尼恩不仅提供系统化的面试准备指导,还特别针对谈薪酬环节给予专业建议,助力求职者在与HR谈判时更加自信。此外,尼恩还分享了阿里巴巴的职级体系,作为行业内广泛认可的标准,帮助读者更好地理解各职级的要求和发展路径。通过尼恩的技术圣经系列PDF,如《尼恩Java面试宝典》等,读者可以进一步提升自身技术实力,应对职场挑战。关注“技术自由圈”公众号,获取更多资源。
|
7月前
|
运维 Kubernetes API
解决Kubernetes集群中master节点无法与node节点通信的策略。
这些策略不仅需要执行命令来获取信息,更要深入理解集群组件如何交互,以便进行准确的故障定位与修复。一条一条地排查,并适时回顾配置文件,证书有效性等,通常可以找到问题所在。给出的命令需要根据具体环境的配置进行适当的修改。故障排除往往是一个细致且需求反复验证的过程,但遵循上述策略可以高效定位大部分通信故障的原因。
573 12
|
6月前
|
机器学习/深度学习 存储 算法
Trinity-RFT:构建智能体持续学习的自动化强化微调工厂
大型语言模型作为智能体在真实环境中持续交互学习面临诸多挑战。 Trinity-RFT 是通义实验室推出的强化微调框架,旨在实现智能体的持续进化。它通过探索、训练与经验池的解耦设计,支持多样化训练模式,提升资源利用率和学习稳定性。同时,Trinity-RFT 提供灵活的数据处理与算法模块化功能,降低应用与研究门槛,助力迈向终身学习与自主进化的智能体时代。
716 2
|
9月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
649 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
10月前
|
人工智能 自然语言处理 安全
基于LlamaIndex实现CodeAct Agent:代码执行工作流的技术架构与原理
CodeAct是一种先进的AI辅助系统范式,深度融合自然语言处理与代码执行能力。通过自定义代码执行代理,开发者可精准控制代码生成、执行及管理流程。本文基于LlamaIndex框架构建CodeAct Agent,解析其技术架构,包括代码执行环境、工作流定义系统、提示工程机制和状态管理系统。同时探讨安全性考量及应用场景,如软件开发、数据科学和教育领域。未来发展方向涵盖更精细的代码生成、多语言支持及更强的安全隔离机制,推动AI辅助编程边界拓展。
651 3
基于LlamaIndex实现CodeAct Agent:代码执行工作流的技术架构与原理
|
调度 vr&ar 图形学
【干货】实时云渲染与本地渲染的技术对比
实时渲染分为本地渲染和云渲染两种模式。随着XR技术在建筑、教育、医疗等领域的广泛应用,越来越多企业选择云渲染以提升效率、降低成本并增强协同能力。本文对比分析了这两种渲染模式的优劣,并重点介绍了实时云渲染方案具备便捷性、高效资源调度、超低时延网络、数据安全、终端轻量化及跨系统运行等优势,满足多种XR应用场景需求。
658 13
|
数据采集 监控 开发者
《Flume数据采集利器:ExecSource、Spooldir Source、Taildir Source,哪种更适合你?》
【8月更文挑战第24天】在数据采集领域,Flume凭借其强大的数据收集与传输能力受到开发者青睐。本文对比分析了三种常见Flume Source——ExecSource、Spooldir Source及Taildir Source。ExecSource适合实时监控日志等输出,配置简单但无法确保数据完整性;Spooldir Source擅长处理大量静态文件,避免重复读取,但不支持实时监控;Taildir Source兼具实时监控与断点续传功能,适用于大体量数据实时监控场景。通过对比它们的特点、应用场景及示例配置,本文旨在帮助读者根据实际需求选择最适合的数据采集方案。
466 3
|
JSON API 网络架构
gRPC 与 REST 的比较分析:哪种 API 适合您的开发需求?
gRPC, 由 Google 推出的开源远程过程调用(RPC)框架, 使两个应用程序间的方法调用变得简单,支持结构化数据的交换。通过采用 Protocol Buffers (Protobuf) ——一种与语言无关的接口定义语言,gRPC 体现了许多现代网络通信技术的优势
gRPC 与 REST 的比较分析:哪种 API 适合您的开发需求?