软件技术架构全面详解

薪科技快评 2024-05-27 21:09:47
软件架构全面详解软件架构

这个与建筑设计架构类似,建筑设计架构师负责设计建筑物的整体结构、布局和功能分配。

而软件架构师,负责设计软件系统的整体组织结构、模块划分、和功能分配。

两者都需要考虑到业务功能、性能、可扩展性、安全性、以及用户体验等方面。

软件架构模式

下面,我接着详解主流的软件架构模式:

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提供虚拟网络、负载均衡、防火墙等网络服务,助力用户高效构建与管理网络环境,确保网络安全与顺畅。

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

0 阅读:132

薪科技快评

简介:薪科技评说,发现技术的点滴,记录科学的飞跃!