这个与建筑设计架构类似,建筑设计架构师负责设计建筑物的整体结构、布局和功能分配。
而软件架构师,负责设计软件系统的整体组织结构、模块划分、和功能分配。
两者都需要考虑到业务功能、性能、可扩展性、安全性、以及用户体验等方面。
软件架构模式下面,我接着详解主流的软件架构模式:
1.分层架构如下图所示:
这种设计方式,使得系统的结构更加清晰,便于开发人员理解和交流。
主要分为3层:
业务逻辑层,即服务层或应用层,核心职责涵盖业务规则处理、数据精细加工及高效逻辑运算,确保业务运作的精准与高效。数据访问层,即持久化层,专注与数据存储系统交互,确保业务逻辑层高效处理核心业务逻辑,实现数据的高效管理与利用。2.事件驱动架构事件驱动架构(EDA)是一种软件架构模式,以事件和消息传递为核心,高效组织系统通信,实现灵活、响应迅速的软件设计。
如下图所示:
主要会包含,4大组件:
1、事件(Event)
2、发布者(Publisher)
3、订阅者(Subscriber)
订阅者是接收事件的组件,负责:订阅感兴趣的事件,并在事件发生时进行相应的处理。
4、事件总线(Event Bus)
事件总线:是连接发布者和订阅者的中间件,负责:事件的传递和分发。
事件驱动架构的应用场景:
1.消息队列
事件驱动架构,常常与消息队列系统结合使用,用于实现可靠的消息传递和异步处理。
例如:用于构建高可靠性的分布式任务调度系统、日志处理系统...等。
2.实时通知和推送
3.复杂业务流程
3.微服务架构每个服务都独立部署、独立运行,并通过轻量级的通信机制进行交互。
如下图所示:
主要会包含,如下6大特点:
1、服务拆分
微服务架构这种拆分,使得每个服务更加专注、易于理解、和维护。
2、自治性
每个微服务都是独立部署、独立运行的,具有自己的数据库和代码库。
都可以独立进行开发,并且测试、和部署,极大的降低了系统之间的耦合度。
3、技术多样性
4、可扩展性
5、独立部署
6、团队自治
每个微服务都有自己的团队负责开发和维护,使得团队更加独立、责任更加明确。
微服务架构组件,如下图所示:
通常包括以下几个核心组件:
服务注册与发现组件,精准管理微服务注册信息,高效维护服务状态,常见实施方式包括Consul、Etcd、ZooKeeper等,助力构建稳定可靠的微服务架构。负载均衡:高效分配服务请求,确保系统高可用性。采用负载均衡组件,如Ribbon,实现资源优化与性能提升。消息队列赋能微服务异步通信,如SpringCloudAlibaba微服务集成RocketMQ,高效实现服务间通信,打造高效、灵活的微服务架构。分布式追踪组件精准追踪微服务架构中的请求流程和性能指标,助力高效发现并解决性能瓶颈与故障,确保系统稳定运行。4、云原生架构云原生架构是一种基于云计算、和容器化技术的应用架构模式。
云原生架构,主要会包含:Docker容器、K8S容器编排、和服务网格等。
如下图所示:
Docker容器
Kubernetes容器编排
Kubernetes,由Google开发的开源容器编排引擎,轻松实现容器化应用的自动化部署、扩展与管理。
功能丰富,包括自动化部署、负载均衡、故障恢复和自动扩展等,轻松应对各种环境,让应用程序运行更灵活高效。
服务网格
服务网格,管理微服务通信的基础设施,透明注入网络代理,实现通信、监控与安全控制,助您轻松驾驭微服务架构。
5.云架构云计算架构:是指基于云计算技术实现的系统架构。
整体架构,如下图所示:
主要会包含:
1、IaaS(基础设施即服务)
IaaS, 主要提供基础的计算、存储、和网络资源。
如下图所示:
主要会包含,如下3大组件:
虚拟机作为IaaS核心,将物理服务器转化为多个独立虚拟服务器,每台均配备专属操作系统和应用环境,实现高效资源利用。IaaS提供全面的存储服务,涵盖块存储、文件存储和对象存储,满足用户数据和应用程序的高效、安全存储需求。IaaS提供虚拟网络、负载均衡、防火墙等网络服务,助力用户高效构建与管理网络环境,确保网络安全与顺畅。-对此,您有什么看法见解?-
-欢迎在评论区留言探讨和分享。-