架构到底是什么?

简介: 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
879 0
升级pip并安装库
|
9月前
|
图形学
【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身
本文介绍如何在Unity3D中实现角色“上身动画”与“下身动画”的分离控制,使角色在执行拔枪、射击等动作时,下身可独立进行移动动画,提升游戏动画灵活性与玩家体验。内容包含创建动画器、配置动画、设置Avatar Mask等步骤,并附测试效果。后续将讲解IK使用,使角色持枪更自然。
287 9
|
10月前
|
运维 Kubernetes API
解决Kubernetes集群中master节点无法与node节点通信的策略。
这些策略不仅需要执行命令来获取信息,更要深入理解集群组件如何交互,以便进行准确的故障定位与修复。一条一条地排查,并适时回顾配置文件,证书有效性等,通常可以找到问题所在。给出的命令需要根据具体环境的配置进行适当的修改。故障排除往往是一个细致且需求反复验证的过程,但遵循上述策略可以高效定位大部分通信故障的原因。
675 12
|
Kubernetes 架构师 Java
史上最全对照表:大厂P6/P7/P8 职业技能 薪资水平 成长路线
40岁老架构师尼恩,专注于帮助读者提升技术能力和职业发展。其读者群中,多位成员成功获得知名互联网企业的面试机会。尼恩不仅提供系统化的面试准备指导,还特别针对谈薪酬环节给予专业建议,助力求职者在与HR谈判时更加自信。此外,尼恩还分享了阿里巴巴的职级体系,作为行业内广泛认可的标准,帮助读者更好地理解各职级的要求和发展路径。通过尼恩的技术圣经系列PDF,如《尼恩Java面试宝典》等,读者可以进一步提升自身技术实力,应对职场挑战。关注“技术自由圈”公众号,获取更多资源。
|
存储 人工智能 开发框架
MCP 实践:基于 MCP 架构实现知识库答疑系统
文章探讨了AI Agent的发展趋势,并通过一个实际案例展示了如何基于MCP(Model Context Protocol)开发一个支持私有知识库的问答系统。
MCP 实践:基于 MCP 架构实现知识库答疑系统
|
存储 架构师 测试技术
架构之道——人人都是架构师
本文的探讨和编写主要围绕三个方面:架构是什么?架构师要解决的问题有哪些?解决这些问题的方法论是什么?最后作者希望人人都能具备架构师思维。
|
算法 数据安全/隐私保护
基于ADRC自抗扰算法的UAV飞行姿态控制系统simulink建模与仿真
本课题基于ADRC自抗扰算法,使用MATLAB2022a在Simulink中建模与仿真UAV飞行姿态控制系统,分别对偏航(Yaw)、俯仰(Pitch)和滚转(Roll)进行控制。ADRC通过扩展状态观测器(ESO)实时估计并抵消扰动,结合非线性反馈控制策略,减少了对精确模型的依赖,增强了系统的鲁棒性和适应性。仿真结果显示该方法能有效实现UAV的姿态控制,确保其在复杂环境中的稳定飞行和精确操控。
|
人工智能 自然语言处理 安全
基于LlamaIndex实现CodeAct Agent:代码执行工作流的技术架构与原理
CodeAct是一种先进的AI辅助系统范式,深度融合自然语言处理与代码执行能力。通过自定义代码执行代理,开发者可精准控制代码生成、执行及管理流程。本文基于LlamaIndex框架构建CodeAct Agent,解析其技术架构,包括代码执行环境、工作流定义系统、提示工程机制和状态管理系统。同时探讨安全性考量及应用场景,如软件开发、数据科学和教育领域。未来发展方向涵盖更精细的代码生成、多语言支持及更强的安全隔离机制,推动AI辅助编程边界拓展。
784 3
基于LlamaIndex实现CodeAct Agent:代码执行工作流的技术架构与原理
|
调度 vr&ar 图形学
【干货】实时云渲染与本地渲染的技术对比
实时渲染分为本地渲染和云渲染两种模式。随着XR技术在建筑、教育、医疗等领域的广泛应用,越来越多企业选择云渲染以提升效率、降低成本并增强协同能力。本文对比分析了这两种渲染模式的优劣,并重点介绍了实时云渲染方案具备便捷性、高效资源调度、超低时延网络、数据安全、终端轻量化及跨系统运行等优势,满足多种XR应用场景需求。
741 13
|
Web App开发 Android开发
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
实时数据传输在互联网中至关重要,不仅支持即时通讯如QQ、微信的文字与图片传输,还包括音视频通信。一对一通信常采用WebRTC技术,如《Android Studio开发实战》中的App集成示例;而一对多的在线直播则需部署独立的流媒体服务器,使用如SRT等协议。SRT因其优越的直播质量正逐渐成为主流。本文档概述了SRT协议的使用,包括通过OBS Studio和SRT Streamer进行SRT直播推流的方法,并展示了推流与拉流的成功实例。更多细节参见《FFmpeg开发实战》一书。
1199 1
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo

热门文章

最新文章