软件架构入门

软件系统架构的发展和介绍,单体架构、垂直架构、分布式架构、分布式SOA架构、分布式微服务架构 了解各个软件架构的发展和优缺点对比,单体架构、分布式架构、soa、微服务等等 阅读详情

软件架构(software architecture)就是软件的基本结构。

合适的架构是软件成功的最重要因素之一。大型软件公司通常有专门的架构师职位(architect),只有资深程序员才可以担任。

O'Reilly 出版过一本免费的小册子《Software Architecture Patterns》(PDF), 介绍了五种最常见的软件架构,是非常好的入门读物。我读后受益匪浅,下面就是我的笔记。

一、分层架构

分层架构(layered architecture)是最常见的软件架构,也是事实上的标准架构。如果你不知道要用什么架构,那就用它。

这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。

虽然没有明确约定,软件一定要分成多少层,但是四层的结构最常见。

有的软件在逻辑层和持久层之间,加了一个服务层(service),提供不同业务逻辑需要的一些通用接口。

用户的请求将依次通过这四层的处理,不能跳过其中任何一层。

优点

缺点

二、事件驱动架构

事件(event)是状态发生变化时,软件发出的通知。

事件驱动架构(event-driven architecture)就是通过事件进行通信的软件架构。它分成四个部分。

对于简单的项目,事件队列、分发器和事件通道,可以合为一体,整个软件就分成事件代理和事件处理器两部分。

优点

缺点

三、微核架构

微核架构(microkernel architecture)又称为"插件架构"(plug-in architecture),指的是软件的内核相对较小,主要功能和业务逻辑都通过插件实现。

内核(core)通常只包含系统运行的最小功能。插件则是互相独立的,插件之间的通信,应该减少到最低,避免出现互相依赖的问题。

优点

缺点

四、微服务架构

微服务架构(microservices architecture)是服务导向架构(service-oriented architecture,缩写 SOA)的升级。

每一个服务就是一个独立的部署单元(separately deployed unit)。这些单元都是分布式的,互相解耦,通过远程通信协议(比如REST、SOAP)联系。

微服务架构分成三种实现模式。

优点

缺点

五、云架构

云结构(cloud architecture)主要解决扩展性和并发的问题,是最容易扩展的架构。

它的高扩展性,主要原因是没使用中央数据库,而是把数据都复制到内存中,变成可复制的内存数据单元。然后,业务处理能力封装成一个个处理单元(prcessing unit)。访问量增加,就新建处理单元;访问量减少,就关闭处理单元。由于没有中央数据库,所以扩展性的最大瓶颈消失了。由于每个处理单元的数据都在内存里,最好要进行数据持久化。

这个模式主要分成两部分:处理单元(processing unit)和虚拟中间件(virtualized middleware)。

虚拟中间件又包含四个组件。

优点

缺点

软件架构入门之路 软件架构不是一天之内就能掌握的。从小处着手,专注于理解实际应用,逐步探索复杂的架构。继续学习、构建和实验!祝你编程愉快!🚀。 阅读详情

相关推荐

互联网架构演进之路

目录 1 单体架构 2 分布式架构 2.1 应用集群 2.2 分布式缓存 2.3 业务拆分 2.4 分库分表和读写分离 2.5 静态化和CDN 2.6 异步解耦 3 微服务架构 3.1 为什么需要服务化 3.2 服务化的好处 3.3 服务化的问题

赵广陆 3021

软件架构介绍

架构显然很重要。许多开发人员的目标是成为一名架构师。但什么是架构,为什么架构如此重要?为了回答这个问题,这里首先定义软件架构的含义。然后,讨论应用程序的架构是多维的,并使用一组视图或蓝图进行描述。接着,本文将强调软件架构的重要性,因为它对应用程序的质量有显著的影响。 ...

云原生Java Web领域技术博客 5598

写给开发者的软件架构实战:入门指南

本文将为开发者提供一个关于软件架构实战的入门指南。我们将从背景介绍开始,然后深入探讨核心概念与联系,接着详细讲解核心算法原理、具体操作步骤以及数学模型公式。在此基础上,我们将提供具体的最佳实践,包括代码实例和详细解释说明。最后,我们将探讨实际应用场景、工具和资源推荐,以及未来发展趋势与挑战。文章的附录部分将提供常见问题与解答。 1. 背景介绍

AI天才研究院 235

【软件系统架构设计】知识点汇总

为什么在信息系统建设前需要进行系统规划?系统规划提供了机构信息化建设的基本纲领和总体指向。系统规划是工程项目实施的前提与依据。做好系统规划可避免盲目信息化建设给机构带来巨大的损失系统规划主要解决什么问题?根据组织机构使命及其战略目标,制定信息系统建设总体目标与愿景;针对组织机构信息化需求,确定信息系统总体框架、技术路线与实施方案: 在充分考虑组织机构的技术、设备和人力资源等因素下,制定组织机构的信息系统实施建设项目计划,并分析评估信息系统建设方案可行性。

spicy_chicken123的博客 3881

软件架构入门指南:理解架构设计的基本原则

软件架构:描述了软件系统各个组件之间的关系和交互方式,以及它们如何共同实现系统的功能。组件:软件系统的独立功能单元,如模块、类、函数等。交互:组件之间的信息传递和数据交换。接口:组件之间通信的约定或规范。体系结构风格:描述了如何组织和管理代码库的方法,如分层、模块化、服务导向等。设计模式:一种解决特定问题的通用方案,可以应用于软件架构设计中。技术选型:根据项目需求和约束条件,选择合适的编程语言、框架、数据库等技术工具。

AI天才研究院 1万+

软件架构设计入门学习

本文是笔者做立项时,针对产品规划的需求,梳理各种架构图的过程中学习软件架构相关知识笔记。

qq_40664711的博客 1万+

【软件架构】软件的十二种架构简介

微内核架构区分了基本的系统功能和可扩展的应用功能,核心系统提供最基本的操作,而其他功能则通过插件或模块的形式添加。这种架构的关键在于一个小型的内核负责提供最基础和通用的功能(如低级内存管理、设备驱动等),而更高级的功能(如用户界面、应用程序等)则作为独立的组件或服务存在,这些组件在运行时与微内核通信。在选择架构时,重要的是要根据项目的具体需求、团队的能力、预期的系统规模和性能要求来决定最适合的架构模式。每种架构风格都有其优势和局限性,选择哪一种架构取决于具体的项目需求、团队的技能以及系统未来的发展方向。

weixin_46453070的博客 1万+

【入门篇】AUTOSAR软件架构介绍

本文针对AUTOSAR软件架构进行介绍

Make something people want. 1万+

软件架构入门(一)

小白软件架构入门 分层架构 事件驱动架构 微核架构 微服务架构(service-oriented architecture SOA) 云架构 参考阮一峰日志:http://www.ruanyifeng.com/blog/2016/09/software-architecture.html ...

dk's blog 665

Ubuntu升级遇到grub-efi-amd64-signed报错?3步搞定这个烦人的EFI目录问题

本文详细解析了Ubuntu系统升级时遇到的“grub-efi-amd64-signed”报错及“cannot find EFI directory”问题。通过剖析UEFI启动机制与EFI系统分区原理,提供了从诊断到修复的三步解决方案,帮助用户快速解决因EFI目录未挂载导致的升级中断,确保系统引导正常。

assembly8low的博客 585

别再瞎调了!STM32 Systick延时函数避坑指南(正点原子、野火、慧净代码对比)

本文深入解析STM32 Systick延时函数的实现差异与优化策略,对比正点原子、野火、慧净等主流方案的优缺点。针对us和ms级延时精度问题,提供避坑指南和高级优化技巧,帮助开发者根据项目需求选择最佳方案,提升嵌入式系统的定时控制精度。

weixin_28717807的博客 340

软件架构入门之路---架构原则、架构视图、C4模型

一、软件架构之架构原则 SOLID 原则是一套比较经典且流行的架构原则: 单一职责:与 Unix 哲学所倡导的“Do one thing and do it well”不谋而合; 开闭原则:用新增(扩展)来取代修改(破坏现有封装),这与函数式的 immutable 思想也有异曲同工之妙; 里式替换:父类能够出现的地方子类一定能够出现,这样它们之间才算是具备继承的“Is-A”关系; 接口隔离:不要让一个类依赖另一个类中用不到的接口,简单说就是最小化组件之间的接口依赖和耦合; 依赖反转:依赖抽象

loki的博客 1062

苹果开发者账号注册指南:解决Apple Developer app证件验证失败问题

本文详细解析了苹果开发者账号注册中证件验证失败的常见原因与解决方案。核心在于确保Apple ID、设备与iCloud信息一致,并提供了从官方支持联系到材料准备的全流程操作指南,帮助开发者高效解决“未能验证证件”问题,顺利完成注册。

weixin_29232507的博客 2233
上一篇: fetch获取本地json文件问题 注意:只支持网页板的,不支持app移动端的
下一篇: 什么是闭包?闭包的优缺点?
IT有钱人
博客等级 码龄13年 269粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值